You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/03/27 20:00:32 UTC

DO NOT REPLY [Bug 7528] New: - 'preceding-sibling' axis not updating correctly during template processing

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: xalan-dev@xml.apache.org
        ReportedBy: steve.heil@fishersci.com


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