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=7528>. 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=7528 'preceding-sibling' axis not updating correctly during template processing Summary: 'preceding-sibling' axis not updating correctly during template processing Product: XalanJ2 Version: 2.3 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Major Priority: Other Component: Xalan-CmdLine AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] 'preceding-sibling' values (including child element values & attribute values) are not being updated after the second sibling node during processing of a set of multiple sibling nodes. e.g. during processing of 4 sibling nodes, for 1st node, 'preceding-sibling' values are null (as expected), for 2nd node, 'preceding-sibling' values are values from 1st sibling node (as expected), for 3rd and subsequent nodes, 'preceding-sibling' values are always values from 1st sibling node. XML Sample: =========== <?xml version="1.0" encoding="UTF-8"?> <Document> <PartList> <Part index="1"> <PartNumber>11111-11</PartNumber> <Description>My Part</Description> </Part> <Part index="2"> <PartNumber>22222-22</PartNumber> <Description>Your Part</Description> </Part> <Part index="3"> <PartNumber>33333-33</PartNumber> <Description>Any Part</Description> </Part> <Part index="4"> <PartNumber>44444-44</PartNumber> <Description>A Part</Description> </Part> </PartList> </Document> XSL Sample: =========== <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version = "1.0"> <xsl:output method="text" omit-xml-declaration="no" encoding="UTF-8" indent="yes"/> <xsl:template match="Document"> <xsl:apply-templates select="PartList"/> </xsl:template> <xsl:template match="PartList"> <xsl:apply-templates select="Part"/> </xsl:template> <xsl:template match="Part"> <xsl:text>preceding-sibling index = </xsl:text><xsl:value-of select="string(preceding-sibling::*/@index)"/> <xsl:text> </xsl:text>| <xsl:text>current index = </xsl:text><xsl:value-of select="string (@index)"/> <xsl:text> </xsl:text>| <xsl:text>following-sibling index = </xsl:text><xsl:value-of select="string(following-sibling::*/@index)"/> <xsl:text> </xsl:text>| <xsl:text>preceding-sibling PartNumber = </xsl:text><xsl:value-of select="string(preceding-sibling::*/PartNumber)"/> <xsl:text> </xsl:text>| <xsl:text>current PartNumber = </xsl:text><xsl:value-of select="string (./PartNumber)"/> <xsl:text> </xsl:text>| <xsl:text>following-sibling PartNumber = </xsl:text><xsl:value-of select="string(following-sibling::*/PartNumber)"/> <xsl:text> </xsl:text>|| </xsl:template> </xsl:stylesheet> Actual Output (XJ2 v2.3.1): =========================== preceding-sibling index = | current index = 1 | following-sibling index = 2 | preceding-sibling PartNumber = | current PartNumber = 11111-11 | following-sibling PartNumber = 22222-22 || preceding-sibling index = 1 | current index = 2 | following-sibling index = 3 | preceding-sibling PartNumber = 11111-11 | current PartNumber = 22222-22 | following-sibling PartNumber = 33333-33 || preceding-sibling index = 1 | current index = 3 | following-sibling index = 4 | preceding-sibling PartNumber = 11111-11 | current PartNumber = 33333-33 | following-sibling PartNumber = 44444-44 || preceding-sibling index = 1 | current index = 4 | following-sibling index = | preceding-sibling PartNumber = 11111-11 | current PartNumber = 44444-44 | following-sibling PartNumber = || Expected Output: ================ preceding-sibling index = | current index = 1 | following-sibling index = 2 | preceding-sibling PartNumber = | current PartNumber = 11111-11 | following-sibling PartNumber = 22222-22 || preceding-sibling index = 1 | current index = 2 | following-sibling index = 3 | preceding-sibling PartNumber = 11111-11 | current PartNumber = 22222-22 | following-sibling PartNumber = 33333-33 || preceding-sibling index = 2 | current index = 3 | following-sibling index = 4 | preceding-sibling PartNumber = 22222-22 | current PartNumber = 33333-33 | following-sibling PartNumber = 44444-44 || preceding-sibling index = 3 | current index = 4 | following-sibling index = | preceding-sibling PartNumber = 33333-33 | current PartNumber = 44444-44 | following-sibling PartNumber = ||
