cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ovidiu Predescu <ovi...@apache.org>
Subject JXPath logicsheet problem found
Date Sat, 14 Dec 2002 07:24:14 GMT
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 <ovidiu@apache.org>
http://webweavertech.com/ovidiu/weblog/


---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org


Mime
View raw message