Title: Re: xsp:attribute generating a new element instead of an attribute in an already existing element
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]>
>     >
>     >
>
>


Reply via email to