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 =  ||

Reply via email to