<xsl:template name="foo">
<xsl:param name="node"/>
<xsl:param name="branch" select="'someBranch'"/> <xsl:for-each
select="$node/$branch/leaf">
<xsl:value-of select="@id" />
</xsl:for-each>
</xsl:template>
This is not legal. The only place a variable reference can
appear in a
Path Expression is at the beginning. $node is OK here, but
$branch is not.
Minor follow-up, for XPath language lawyers who care:
In XPath 2.0, $node/$branch/leaf is legal, though deserving
of at least a
warning (again, assuming $node and $branch represent
nodesets). What it does
is effectively ignore $node and return the leaf children of $branch.
It's legal if the value of $branch is a sequence consisting entirely of
nodes. In the example given, the value of $branch is a string, so this
will give a type error.
Michael Kay
Software AG
home: Michael(_dot_)H(_dot_)Kay(_at_)ntlworld(_dot_)com
work: Michael(_dot_)Kay(_at_)softwareag(_dot_)com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list