我正在尝试为每个选择提供一个动态名称,但似乎无法让它工作。
我的模板旨在允许传入特定的标记名称,然后从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值获取变量替换?
谢谢, 丹尼斯
答案 0 :(得分:4)
你不能在xpath中使用这样的变量来生成&#34; dynamic&#34;表达式,但在这种情况下,变量部分只是一个元素名称,因此您可以使用谓词进行过滤:
$DataSource//*[local-name() = $tagName]/DataValue