You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Uwe Schindler (JIRA)" <ji...@apache.org> on 2013/10/09 19:04:41 UTC

[jira] [Commented] (XALANJ-2438) [PATCH] XSLTC ignores XPath predicates in xsl:key elements

    [ https://issues.apache.org/jira/browse/XALANJ-2438?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13790619#comment-13790619 ] 

Uwe Schindler commented on XALANJ-2438:
---------------------------------------

Can we hopefully fix this at some time?

It looks like this bug also affects other use-cases of xsl:key and key(): If you load a foreign document with the document() XSL function, all xsl:key elements are broken afterwards and important things like the Muenchian Grouping cannot be used anymore. I have stylesheets that used this style of grouping fine until I added the document() function. The problem here is also that buildKeys() is executed twice (on each document() call).

> [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.out, PredicateInKey-Xalan-SVN-r889881.patch, PredicateInKey.xml, PredicateInKey.xsl, PredicateInKey-XSLT-Test-1.1.jar, PredicateInKey-XSLT-Test-1.2.jar, PredicateInKey-XSLT-Test-1.3.jar, PredicateInKey-XSLT-Test.jar
>
>
> 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 was sent by Atlassian JIRA
(v6.1#6144)

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