XSLT在for-each选择中使用变量

时间:2014-02-23 17:33:52

标签: xml xslt

我正在尝试为每个选择提供一个动态名称,但似乎无法让它工作。

我的模板旨在允许传入特定的标记名称,然后从xml中选择这些节点并用于处理。

<xsl:param name="tagName" select="'DefaultTag'" />

<xsl:variable name="DataSource" select="document('../xml/datasource.xml')"/>

<xsl:template name="ProcessData">
    <xsl:for-each select="$DataSource//$tagName/DataValue" >

        ... Data operations here ...

    </xsl:for-each>
</xsl:template>

如果我使用硬编码值替换for-each选择中的$ tagName,那么它就可以工作(对于该值)。

如何使用param值获取变量替换?

谢谢, 丹尼斯

1 个答案:

答案 0 :(得分:4)

你不能在xpath中使用这样的变量来生成&#34; dynamic&#34;表达式,但在这种情况下,变量部分只是一个元素名称,因此您可以使用谓词进行过滤:

$DataSource//*[local-name() = $tagName]/DataValue