使用 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}">.