xsl-list
[Top] [All Lists]

How does one merge sequences?

2004-10-10 17:50:51
Hi,

    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" method="text" />

        <xsl:template match="/">
                <xsl:variable name="seq1">
                        <xsl:element name="item">1</xsl:element>
                        <xsl:element name="item">2</xsl:element>
                </xsl:variable>
                <xsl:variable name="seq2">
                        <xsl:element name="item">3</xsl:element>
                        <xsl:element name="item">4</xsl:element>
                        <xsl:element name="item">5</xsl:element>
                </xsl:variable>

                <xsl:call-template name="process">
                        <xsl:with-param name="merged" select="$seq1/*
| $seq2/*" />
                </xsl:call-template>
        </xsl:template>

        <xsl:template name="process">
                <xsl:param name="merged" />

                <xsl:for-each select="$merged">
                        <xsl:value-of select="." />
                        <xsl:if test="count(preceding-sibling::item) = 0">
                                <xsl:text> = first</xsl:text>
                        </xsl:if>
                        <xsl:text>
</xsl:text>
                </xsl:for-each>
        </xsl:template>

</xsl:stylesheet>

....produces the following output :

bash-2.05b$ java net.sf.saxon.Transform seq.xsl seq.xsl 
1 = first
2
3 = first
4
5

....indicating that the "merged" sequence is still recognized as two
sequences instead of a single merged one. How can one do a proper
merge?

Thanks,
Kenneth


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