DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10136>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=10136

xsltc gets wrong node by position on text node set spanning two elements (position92)

           Summary: xsltc gets wrong node by position on text node set
                    spanning two elements (position92)
           Product: XalanJ2
           Version: CurrentCVS
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: org.apache.xalan.xsltc
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


xsltc returns the wrong text node from a variable defined by 
select="/foo/*/test/text() given xml as follows

XML
---
<?xml version="1.0"?>
<foo>
  <bar>
    <test>1</test>
    <test>3</test>
    <test>5</test>
    <test>7</test>
    <test>9</test>
  </bar>
  <baz>
    <test>2</test>
    <test>4</test>
    <test>6</test>
    <test>8</test>
    <test>10</test>
  </baz>
</foo>


XSL
---
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

  <!-- FileName: position92 -->
  <!-- Document: http://www.w3.org/TR/xpath -->
  <!-- DocVersion: 19991116 -->
  <!-- Section: 3.3 -->
  <!-- Creator: John Howard -->
  <!-- Purpose: Test retrieving correct values from node-set variables by
positional predicate. -->
 
  <xsl:output method="xml"/>

  <xsl:template match="/">
    <xsl:variable name="x1">
      <xsl:variable name="node" select="/foo/*/test/text()"/>
      <xsl:value-of select="$node[1]"/>
    </xsl:variable>
    <xsl:variable name="x6">
      <xsl:variable name="node" select="/foo/*/test/text()"/>
      <xsl:for-each select="$node[6]">
        <xsl:value-of select="."/>
      </xsl:for-each>
    </xsl:variable>
    <xsl:variable name="xL">
      <xsl:variable name="node" select="/foo/*/test/text()"/>
      <xsl:for-each select="$node[last()]">
        <xsl:value-of select="."/>
      </xsl:for-each>
    </xsl:variable>
    <out>
      <x1><xsl:value-of select="$x1"/></x1><xsl:text>&#10;</xsl:text>
      <x6><xsl:value-of select="$x6"/></x6><xsl:text>&#10;</xsl:text>
      <xL><xsl:value-of select="$xL"/></xL>
    </out>
  </xsl:template>

</xsl:stylesheet> 

Obtained output
---------------
<?xml version="1.0" encoding="UTF-8"?>
<out><x1>1</x1>
<x6>1</x6>
    ^----------- the 1 should be a 2
<xL>10</xL></out>

Expected output
---------------
<?xml version="1.0" encoding="UTF-8"?>
<out><x1>1</x1>
<x6>2</x6>
<xL>10</xL></out>

The variable should have the combined set of text nodes from both the <bar> 
and <baz> elements, so the 6th position should return the first text 
node from <baz> which has a value of "2"

Reply via email to