Torsten Curdt wrote: >Shouldn't the following construct work? > > ... > <tag> > <xsp:logic> > try { > > <ns:list> > Collection list = ... > > for (Iterator iterator = list.iterator(); iterator.hasNext();) { > MyObj o = (MyObj) iterator.next(); > > <ns:MyObj> > <ns:name>o.getName()</ns:name> > </ns:MyObj> > > } > </ns:list> > > } > catch(Exception e) { > <xsp:content>Error: <xsp:expr>String.valueOf(e)</xsp:expr></xsp:content> > } > </xsp:logic> > </tag> > ... > >Referring to some old C1 documentation http://xml.apache.org/cocoon1/xsp.html >(paragraph "logic tags") this should work. >And I think this should work the same way in C2! > You need to open a new <xsp:logic> inside <ns:list> : the scope of Java code in <xsp:logic> is limited to text nodes that are its _direct_ children. Also, "o.getName()" should be enclosed by an <xsp:expr>. So the above snippet should be written as follows :
<tag> <xsp:logic> try { <ns:list> <xsp:logic> Collection list = ... for (Iterator iterator = list.iterator(); iterator.hasNext();) { MyObj o = (MyObj) iterator.next(); <ns:MyObj> <ns:name><xsp:expr>o.getName()</xsp:expr></ns:name> </ns:MyObj> } </xsp:logic> </ns:list> } catch(Exception e) { <xsp:content>Error: <xsp:expr>String.valueOf(e)</xsp:expr></xsp:content> } </xsp:logic> </tag> So I'm not sure there is a wrong behaviour in the engine. Sylvain > >One could use <xsp:element> (like e.g. esql does) to work around this. >But that's a not quite nice sollution. Can we aggree that this should >work? > >Unfortunately the current implementation will treat any java code >within a tag inside the xsp logic tag as text nodes - not as java. > >If we can aggree that this behaviour is wrong I'd like to change >the xsp.xsl accordingly. >-- >Torsten > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]