使用 XSLT 2.0 与参数进行简单匹配
Simple match with parameter using XSLT 2.0
这是我的没有参数的xsl代码
<xsl:template match="node-name">
....
</xsl:template>
现在我想使用一个参数来代替 node-name
。所以我补充说:
<xsl:param name="someParam"/>
...
<xsl:template match="$someParam">
....
</xsl:template>
然而,它不起作用。在 SO 上,我只发现一个关于参数匹配 (xsl: how to use parameter inside "match"?) 的问题,但它有一个更复杂的情况,那么我需要。谁能帮帮我?
使用match="*[local-name()=$node-name]"
注意命名空间。
另请注意,这在 XSLT 1.0 中是不允许的,仅在 2.0+ 中是允许的。
如果这是一个全局参数,那么,如果您使用 XSLT 3 处理器,如 Saxon 9.8 或更高版本或 Altova 2017 R3 或更高版本,您可以考虑使用静态参数 <xsl:param name="node-name" static="yes" select="'foo'"/>
和影子属性 <xsl:template _match="{$node-name}">
.
这是我的没有参数的xsl代码
<xsl:template match="node-name">
....
</xsl:template>
现在我想使用一个参数来代替 node-name
。所以我补充说:
<xsl:param name="someParam"/>
...
<xsl:template match="$someParam">
....
</xsl:template>
然而,它不起作用。在 SO 上,我只发现一个关于参数匹配 (xsl: how to use parameter inside "match"?) 的问题,但它有一个更复杂的情况,那么我需要。谁能帮帮我?
使用match="*[local-name()=$node-name]"
注意命名空间。
另请注意,这在 XSLT 1.0 中是不允许的,仅在 2.0+ 中是允许的。
如果这是一个全局参数,那么,如果您使用 XSLT 3 处理器,如 Saxon 9.8 或更高版本或 Altova 2017 R3 或更高版本,您可以考虑使用静态参数 <xsl:param name="node-name" static="yes" select="'foo'"/>
和影子属性 <xsl:template _match="{$node-name}">
.