cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sreedhar Chintalapaty" <>
Subject XSP Expression within XSL:for-each loop
Date Mon, 20 May 2002 13:54:48 GMT
Hi Gurus,

I have a piece of code with the following for-each loop:

<xsl:for-each select="document('actions.xml')/actions/action">
	<xsl:variable name="target-class">
		<xsl:value-of select="@class"/>
				<xsl:value-of select="$target-class"/>.getAll()

The intention is to determine the class name at run time and get all
persistent objects of that class from the database.

The reality is that the <util:include-expr></util:include-expr> part is
using only the very first $target-class value, even though the $target-class
value is different for different action elements. Of course, if I just print
out the value of the variable target-class right before entering the
<util:include-expr></util:include-expr>, it prints out all the different
values, as it should.

When I look into the generated class, here's what I find (assuming target
class is Singer, and excluding fully qualified class names):

1.  {
2.	Parser newParser = null;
3.	try {
4.		newParser = (Parser) this.manager.lookup(Parser.ROLE);
5.		InputSource __is = new InputSource(new
6.		XSPUtil.include(__is, this.contentHandler, newParser);
7.	} catch (Exception e) {
8.		getLogger().error("Could not include page", e);
9.	} finally {
10.		if (newParser != null) {
11.			this.manager.release((Component) newParser);
12.		}
13.	}
14. }

This code block is repeated for each value of $target-class, with the method
call Singer.getAll replaced with the correct value of $target-class - i.e.,
if $target-class = {Singer, Actor, Producer), the block above is repeated
thrice, with Singer.getAll(), Actor.getAll(), and Producer.getAll() as the
method calls in line 5.

That part is as it should be; but when I see the output, I actually see only
the results of Singer.getAll() appearing thrice! Is the finally clause
releasing the newParser in line 11 responsible for this?

How can I get this to work right? Am I missing something in the way I am
including the expression?

Thanks, and Best Regards,


Please check that your question has not already been answered in the
FAQ before posting. <>

To unsubscribe, e-mail: <>
For additional commands, e-mail: <>

View raw message