Hi, sorry if it is a faq - I still could not find an answer. XPath spec does not say much about semantics of the term 'sibling'.
Common sense suggests that if we have a filtered nodeset and start fetching siblings to any node of this nodeset, then all the siblings should belong to thay nodeset. With Xalan-J if I get a filtered nodeset and start inspectings siblings, it seems that siblings are selected with regard of the original document tree rather than the filtered nodeset. Is it intended behavior or a bug? A test case is appended. One might expect that only 'a' nodes should be listed by 'xsl:message'. But the fact is that a 'b' node is listed also... Regards, Sergey test.xsl ======== <?xml version="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:output method="xml" /> <xsl:template match="a"> <xsl:message>following-sibling: <xsl:value-of select="name(following-sibling::*[1])" /></xsl:message> </xsl:template> <xsl:template match="/"> <xsl:variable name="filtered-nodeset" select="d/a" /> <xsl:apply-templates select="$filtered-nodeset" /> </xsl:template> </xsl:stylesheet> test.xml ======== <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <d> <a/> <a/> <b/> <a/> </d>
