xsl-list
[Top] [All Lists]

Union of XPath sequences and the meaning of the uniqueness constraint

2004-10-10 11:00:37
Hi,

    The union operator in XPath 2.0 is described as eliminating
duplicates from the two sequences that it is combining. What is the
criterion used for determining if two nodes in the resulting sequence
are unique? The following code :

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

        <xsl:output omit-xml-declaration="yes" />

        <xsl:template match="/">
                <xsl:variable name="a">
                        <xsl:sequence select="2" />
                </xsl:variable>
                <xsl:variable name="b">
                        <xsl:sequence select="2" />
                </xsl:variable>
                <xsl:copy-of select="$a | $a" />
        </xsl:template>

</xsl:stylesheet>

....produces "2", which is what I would expect, but the following code :

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

        <xsl:output omit-xml-declaration="yes" />

        <xsl:template match="/">
                <xsl:variable name="a">
                        <xsl:sequence select="2" />
                </xsl:variable>
                <xsl:variable name="b">
                        <xsl:sequence select="2" />
                </xsl:variable>
                <xsl:copy-of select="$a | $b" />
        </xsl:template>

</xsl:stylesheet>

....produces "22"... which seems to indicate that even atomic values
in sequences are assigned unique node ids, and the uniqueness is
maintained across all sequences within the XSL program. Am I right?

Thanks,
Kenneth


<Prev in Thread] Current Thread [Next in Thread>