Yeah it probably would help if I paid attention to what I was typing, how about this instead?

<xsp:logic>
while(rsDates.next()) {
<dates>
if (rsDates.getString(1).equals(today) {
currentDate = today;
}
<xsp:attribute name="current"><xsp:expr>currentDate</xsp:expr></xsp:attribute>
<date_sel><xsp:expr>rsDates.getString(1)</xsp:expr></date_sel>
</dates>
}
</xsp:logic>

Luís Góis wrote:

Your solution only works when the "if" is true for the first loop iteraction. After that new child elements have been created and the attribute won't be placed where I want to.
A working solution is -- don't try to understand the source code, just look at the generated XML (grab your underware) :
<dates>
<xsp:logic>
ResultSet rsDates = <esql:get-resultset/>;
while(rsDates.next()) {
if (rsDates.getString(1).equals(today) {
currentDate = today;
}
(...)
// I'm storing the rsDates here in an ArrayList
(...)
} <xsp:attribute name="current"><xsp:expr>currentDate</xsp:expr></xsp:attribute> <!-- GRAB YOUR UNDERWARE -->
</xsp:logic>
<xsp:logic>
<!-- GRAB YOUR UNDERWARE -->
iter = listDates.listIterator();
while(iter.hasNext()) {
<date_sel><xsp:expr>(String)iter.next()</xsp:expr></date_sel>;
} </xsp:logic>
</dates>
generated XML *without* the </xsp:logic><xsp:logic> tags between the <!-- GRAB YOUR UNDERWARE --> comments.
===================================================================================
<date_sel current="30-12-2002">30-12-2002</date_sel> <dates> </dates>
generated XML *with* the </xsp:logic><xsp:logic> tags between the <!-- GRAB YOUR UNDERWARE --> comments.
===================================================================================
<dates current="30-12-2002">
<date_sel >30-12-2002</date_sel> </dates>
-----Mensagem original-----
*De:* Jim Bearce [mailto:[EMAIL PROTECTED]]
*Enviada:* ter 31-12-2002 14:13
*Para:* [EMAIL PROTECTED]
*Cc:* Luís Góis
*Assunto:* Re: xsp:attribute generating a new element instead of an attribute in an already existing element

Luís,

I've seen the same things you have but I guess from a Cocoon
perspective, it's not really an error; although it doesn't work
the way
you want it to. Maybe this would help you:

<xsp:logic>
while(rsDates.next()) {
<dates>
if (rsDates.getString(1).equals(today) {
currentDate = today;
<xsp:attribute name="current"><xsp:expr>currentDate</xsp:expr></xsp:attribute>
}
<date_sel><xsp:expr>rsDates.getString(1)</xsp:expr></date_sel>
</dates>
}
</xsp:logic>


Luís Góis wrote:

> Hello Joerg.
> > I was expecting some error saying I couldn't create the attribute
> there, instead, I got an unexpected (from my point of view) XML
tree.
> > Tks
> > >
> -----Mensagem original-----
> *De:* Joerg Heinicke [mailto:[EMAIL PROTECTED]]
> *Enviada:* ter 31-12-2002 11:51
> *Para:* [EMAIL PROTECTED]
> *Cc:*
> *Assunto:* Re: xsp:attribute generating a new element instead of
> an attribute in an already existing element
>
> Hello Luis,
>
> the change of currentDate doesn't change the constraints of the
> API. You
> can not create an attribute after you already have created an
> element or
> text. If you have such a dependency you must calculate
currentDate
> before creating the XML (move the logic out of the XML data
> structure).
>
> Joerg
>
> Luis Gois wrote:
> > Hi.
> >
> > My example wasn't good enough!:( I forgot to point out that
> currentDate
> > might get changed in the while loop (see below), so that
> xsp:attribute
> > must be evaluated after the java code within the xsp:logic
block.
> >
> > <dates>
> > <xsp:logic>
> > while(rsDates.next()) {
> > <date_sel><xsp:expr>rsDates.getString(1)</xsp:expr></date_sel>
> > if (rsDates.getString(1).equals(today) {
> > currentDate = today;
> > }
> > }
> > <xsp:attribute
> >
name="current"><xsp:expr>currentDate</xsp:expr></xsp:attribute>
> > </xsp:logic>
> > </dates>
> >
> >
> > -----Original Message-----
> > From: Jim Bearce [mailto:[EMAIL PROTECTED]]
> > Sent: terça-feira, 31 de Dezembro de 2002 1:14
> > To: [EMAIL PROTECTED]; [EMAIL PROTECTED]
> > Subject: Re: xsp:attribute generating a new element
instead of an
> > attribute in an already existing element
> >
> >
> > I believe you would have to do it this way:
> >
> > <dates>
> > <xsp:attribute
> >
name="current"><xsp:expr>currentDate</xsp:expr></xsp:attribute>
> > <xsp:logic>
> > while(rsDates.next()) {
> >
> > <data_sel><xsp:expr>rsDates.getString(1)</xsp:expr></date_sel>
> > }
> > </xsp:logic>
> > </dates>
> >
> > Luís Góis wrote:
> >
> >
> >>Could you comment the behaviour below :
> >>
> >>
> >>XSP :
> >>===
> >><dates>
> >> <xsp:logic>
> >> while(rsDates.next()) {
> >> <date_sel><xsp:expr>rsDates.getString(1)</xsp:expr></date_sel>
> >> }
> >> <xsp:attribute
> >>name="current"><xsp:expr>currentDate</xsp:expr></xsp:attribute>
> >> </xsp:logic>
> >></dates>
> >>
> >>generated XML :
> >>=============
> >><dates>
> >> <date_sel>27-12-2002</date_sel>
> >> <date_sel>24-12-2002</date_sel>
> >> <dates current="30-12-2002"> </dates>
> >></dates>
> >>expected XML :
> >>=========
> >><dates current="30-12-2002">
> >> <date_sel>27-12-2002</date_sel>
> >> <date_sel>24-12-2002</date_sel>
> >></dates>
> >>
> >>
> >>
> >>TIA
> >>Luís Góis
> >
> >
> >
> >
> >
> > _______________________________________________________
> > Vizzavi Mail powered by Vodafone - http://www.vizzavi.pt
> > Virus protected by TrendMicro - http://www.antivirus.com
> >
> >
> ---------------------------------------------------------------------
> > Please check that your question has not already been answered
> in the
> > FAQ before posting. > <http://xml.apache.org/cocoon/faq/index.html>
> >
> > To unsubscribe, e-mail: > <[EMAIL PROTECTED]>
> > For additional commands, e-mail: > <[EMAIL PROTECTED]>
> >
> >
>
>



---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

To unsubscribe, e-mail:     <[EMAIL PROTECTED]>
For additional commands, e-mail:   <[EMAIL PROTECTED]>

Reply via email to