Uploaded image for project: 'XalanJ2'
  1. XalanJ2
  2. XALANJ-2097

Problem with variable reference followed by self::node() if you use XSLTC

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.6
    • 2.7
    • XSLTC
    • Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects. Anybody can view the issue.)
    • None
    • PatchAvailable
    • fp2

    Description

      There is a problem when you have an XPath that contains a variable reference followed by self::node() if you use XSLTC (the problem does not occure if you just use Xalan without XSLTC).
      If you have for example $var1/self::node(). The following XSLTC Step is generated :

      FilterParentPath(variable-ref(var1/node-set), step("self", -1))

      This step is translated to the following piece of code (I decompiled to byte code):

      DTMAxisIterator dtmaxisiterator1 = (new CachedNodeListIterator(new StepIterator(dom.getTypedAxisIterator(3, 14), dom.getTypedAxisIterator(3, 15)))).setStartNode;
      this;
      dom;
      new StepIterator(dtmaxisiterator1.cloneIterator(), new SingletonIterator);

      As you can see the 'self::node()' step is translated to 'new SingletonIterator'. This is not correct because new SingletonIterator will refer to the node of the _parent of the FilterParentPath step.
      After applying the patch I made, the following code is generated if the _parent of the Step (self::node()) isn't a 'ParentLocationPath' :

      new StepIterator(dtmaxisiterator1.cloneIterator(), dom.getAxisIterator(13));

      To run the sample just run

      org.apache.xalan.xslt.Process -in items.xml -xsl problem2.xsl -xsltc

      Attachments

        1. items.xml
          0.1 kB
          Nick Van den Bleeken
        2. problem2.xsl
          0.4 kB
          Nick Van den Bleeken
        3. Step.patch
          2 kB
          Nick Van den Bleeken

        Activity

          People

            Unassigned Unassigned
            nvdbleek Nick Van den Bleeken
            Henry Zongaro Henry Zongaro
            Votes:
            2 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: