I found the problem with the "prefs" flow sample barfing on the registration page.

The problem is definitely a Xalan problem, everything works just fine with 2.3.1, but fails on 2.4.1. The issue seems to be with the way the JPath logicsheet compiles the XPath expressions referred to in an XSP page. This is the relevant code:

<xsl:key name="JPathExprs" match="jpath:if" use="@test"/>
<xsl:key name="JPathExprs" match="jpath:when" use="@test"/>
<xsl:key name="JPathExprs" match="jpath:for-each" use="@select"/>
<xsl:key name="JPathExprs" match="jpath:value-of" use="@select"/>

and later in the logicsheet we have:

// Generate the compiled representation of the JXPath
// expressions used by this page.
<xsl:apply-templates
select="(//jpath:if | //jpath:when)
[generate-id(.) = generate-id(key('JPathExprs', @test)[1])]
| (//jpath:for-each | //jpath:value-of)
[generate-id(.) = generate-id(key('JPathExprs', @select)[1])]"
mode="compile"/>

which is later translated into a call to:

<xsl:template name="get-var-name">
<xsl:param name="expr"/>
jxpath_<xsl:value-of select="translate($expr, &quot;&#x20;&#x9;&#xA;&#xD;~`!@%^*()-+=[]{}\|,./?&gt;&lt;&apos;&quot;, '')"/>
</xsl:template>

This should generate unique variable names for each <jpath:*> element in an XSP page. For example if the page refers to:

<jpath:value-of select="firstName"/>

the equivalent compiled code is:

jxpath_firstName
= jxpathContext.compile("firstName");

Xalan 2.4.1 seems to have problems while trying to generate code for more complex XPath expressions like:

<jpath:when test="check and firstName = ''">

It will silently ignore the instructions above and not generate any code which precompiles the XPath expression.

Bummer! I have no idea how to work around this problem. I'll try to come up with a simpler testcase, outside of Cocoon that reproduces the bug and log it in as a bug in Xalan. In the meantime it would be really nice if someone has a good workaround for this problem.

An obvious one is to revert to Xalan 2.3.1, but I'm not sure this is something desirable. Any thoughts? Does anyone depend on any special features from 2.4.1?

Regards,
Ovidiu

--
Ovidiu Predescu <[EMAIL PROTECTED]>
http://webweavertech.com/ovidiu/weblog/


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

Reply via email to