You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by "Henry Zongaro (JIRA)" <xa...@xml.apache.org> on 2009/11/25 22:58:39 UTC

[jira] Resolved: (XALANJ-2424) set:distinct() over attribute list breaks XSLTC throwing HIERARCHY_REQUEST_ERR

     [ https://issues.apache.org/jira/browse/XALANJ-2424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Henry Zongaro resolved XALANJ-2424.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: The Latest Development Code

Fixed under JIra XALANJ-2493.

> set:distinct() over attribute list breaks XSLTC throwing HIERARCHY_REQUEST_ERR
> ------------------------------------------------------------------------------
>
>                 Key: XALANJ-2424
>                 URL: https://issues.apache.org/jira/browse/XALANJ-2424
>             Project: XalanJ2
>          Issue Type: Bug
>          Components: XSLTC
>    Affects Versions: 2.7.1, 2.7
>         Environment: Linux, Sun java 1.6
>            Reporter: Илья Казначеев
>             Fix For: The Latest Development Code
>
>         Attachments: Process.jad, xml1.xml, xsl1.xsl
>
>
> If you do set:distinct over attribute list, XSLTC-compiled translet throws HIERARCHY_REQUEST_ERR exception.
> Exception is localised to point where set:distinct is called, even if it is assigned into a variable.
> Test case:
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:set="http://exslt.org/sets" version="1.0">
>         <xsl:output method="html" />
>         <xsl:template match="/">
>                 <xsl:variable name="attrs" select="set:distinct(source/element/@attr)" />
>   <html><body>
>                 <xsl:for-each select="$attrs">
>                         <xsl:value-of select="." />
>                 </xsl:for-each>
>                 </body></html>
>         </xsl:template>
> </xsl:stylesheet>
> With xml
> <source>
>         <element attr="val1" name="foobar" />
>         <element attr="val2" name="bar" />
>         <element attr="val2" name="baz" />
>         <element attr="val3" name="baz" />
> </source>
> that will cause an Exception to be thrown when variable is assigned.
> My unedicated guess is that it tries to apply-templates over selected nodes into document in place where set:distinct is computed. This happens, as I see for different partially-serialized document, before variable's enclosing element is closed. I've disassembled the stylesheet but didn't understand much from there, it goes like this:
>     //   30   66:invokeinterface #110 <Method org.w3c.dom.NodeList DOM.makeNodeList(DTMAxisIterator)>
>     //   31   71:invokestatic    #116 <Method org.w3c.dom.NodeList ExsltSets.distinct(org.w3c.dom.NodeList)>
>     //   32   74:aload_0
>     //   33   75:aload_1
>     //   34   76:invokestatic    #122 <Method DTMAxisIterator BasisLibrary.nodeList2Iterator(org.w3c.dom.NodeList, org.apache.xalan.xsltc.Translet, DOM)>
>     //   35   79:new             #126 <Class CachedNodeListIterator>
>     //   36   82:dup_x1
>     //   37   83:swap
>     //   38   84:invokespecial   #127 <Method void CachedNodeListIterator(DTMAxisIterator)>
>     //   39   87:iload           4
>     //   40   89:invokeinterface #41  <Method DTMAxisIterator DTMAxisIterator.setStartNode(int)>
>     //   41   94:astore          9
>     //   42   96:aload_3
>     //   43   97:ldc1            #129 <String "html">
>     //   44   99:dup2
>     //   45  100:invokeinterface #14  <Method void SerializationHandler.startElement(String)>
> P.S. If said variable is located in prologue (not inside any xsl:template) the bug persists.

-- 
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-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-dev-help@xml.apache.org