[xsl] Choosing based on current node

Subject: [xsl] Choosing based on current node
From: <sthomas2@xxxxxxx>
Date: Mon, 12 Feb 2007 11:07:01 -0500
I'm amazed at how patient this list is with newbie questions; I hope
this question doesn't try that patience too much. I'm processing a
document that has <A> or <B> or <C> elements in it. I need to preserve
their order in the output, but do something drastically different for
each. It seems like the following ought to work, but, instead, the
otherwise branch is always performed, regardless of whether the element
is A, B, or C. (The for-each is working fine, as it correctly skips over
any elements other than A, B, or C.)

<xsl:for-each select="A|B|C">
    <xsl:choose>
        <xsl:when test=".=A">
            <xsl:call-template name="do-A"/>
        </xsl:when>
        <xsl:when test=".=B">
            <xsl:call-template name="do-B"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:call-template name="do-C"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:for-each>

Thanks in advance,

Stephen

Current Thread