[ https://issues.apache.org/jira/browse/XALANJ-2438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12920257#action_12920257 ]
David Bertoni commented on XALANJ-2438: --------------------------------------- Per Sam's comment, this patch seems fine. I will send an email to the PMC members to see if there are any objections to accepting it. > [PATCH] XSLTC ignores XPath predicates in xsl:key elements > ---------------------------------------------------------- > > Key: XALANJ-2438 > URL: https://issues.apache.org/jira/browse/XALANJ-2438 > Project: XalanJ2 > Issue Type: Bug > Components: XSLTC > Affects Versions: The Latest Development Code > Environment: Linux and Windows XP with Sun JRE 1.5.0_14, 1.5.0_15, > 1.6.0_04 and 1.6.0_05 > Reporter: Helge Schulz > Priority: Blocker > Fix For: The Latest Development Code > > Attachments: PredicateInKey-Xalan-SVN-r889881.patch, > PredicateInKey-XSLT-Test-1.1.jar, PredicateInKey-XSLT-Test-1.2.jar, > PredicateInKey-XSLT-Test-1.3.jar, PredicateInKey-XSLT-Test.jar, > PredicateInKey.out, PredicateInKey.xml, PredicateInKey.xsl > > > The Xalan XSLT compiler (XSLTC) ignores XPath predicates in xsl:key > elements since the class 'org.apache.xalan.xsltc.compiler.Stylesheet' > was rearranged in august 2003 to reorder the compilation of top level > XSLT elements (including keys) to respect dependencies between global > XSLT variables and keys. Method 'compileTopLevel' was changed to emit > code also for key elements and not emit code calling the method generated > by 'compileBuildKeys'. For this reason the byte code for each key element > is generated twice: First time into generated method 'buildKeys' from > 'compileBuildKeys' and second time into generated method 'topLevel' > from 'compileTopLevel'. Method 'buildKeys' is still necessary, because > it is called by the XSLT 'document' function, if additional input > documents are loaded later. > Unfortunately the translate method of some XPath elements expected to > be called only once and they remove sub elements while their first execution. > So all XPath predicates get lost in class > 'org.apache.xalan.xsltc.compiler.FilterExpr' > and 'org.apache.xalan.xsltc.compiler.Step' by a remove operation on > the '_predicates' container while the execution from 'compileBuildKeys'. > So 'compileTopLevel' generates wrong code for all key elements containing > predicates in their XPath expressions. > The attached patch changes the 'FilterExpr' and 'Step' class to use an > index variable to determine the current predicate and to not remove them. > This patch was tested with the current Subversion version of Xalan > (last change of Xalan tree in revision 584164) and with Sun JDK 1.5.0_14, > 1.5.0_15, 1.6.0_04 and 1.6.0_05. > This bug exists also in Sun JRE 1.6 (1.6.0 up to 1.6.0_05) and JRE 1.5 > (since 1.5.0_12 up to 1.5.0_15) in classes > 'com.sun.org.apache.xalan.internal.xsltc.compiler.FilterExpr' and > 'com.sun.org.apache.xalan.internal.xsltc.compiler.Step'. The attached > test JAR file contains also patches for these versions and fixes in form > of JAR files to be installed into '../jre/lib/endorsed' directories of > Sun JRE installations. The last Sun JRE version with correct handling > of xls:key elements is 1.5.0_11. > Please add the attached test files to the Xalan test suite. I have > released them under Apache license version 2.0. > Helge Schulz - OpenSHORE.org -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: xalan-dev-unsubscr...@xml.apache.org For additional commands, e-mail: xalan-dev-h...@xml.apache.org