XSLT 2.0 - 使用Contains()进行模板匹配

7

我想知道是否可以使用contains()函数编写模板匹配。

我有一个文档,其中有多个需要重命名为通用元素的元素。所有以下内容都需要重命名为OP:OP1.2、OP7.3、OP2.4、OP5.6等。

1个回答

11

是的,您可以在元素的匹配条件中使用contains()函数筛选器。

<xsl:template match="*[contains(local-name(),'OP')]>
  <OP>
    <xsl:apply-templates select="@*|node()"/>
  </OP>
</xsl:template>
你还可以使用 starts-with() 函数。
*[starts-with(local-name(),'OP')]

如果你使用的是XSLT 2.0,你可以使用matches()函数,该函数支持正则表达式模式以进行更复杂的匹配。

*[matches(local-name(),'^OP')]

我们可以提供多个值来进行匹配吗?例如:match="*[contains(local-name(),'OP1|OP2|OP3')]" - user2310939
@Sishant Mishra 是的,你可以。第二个参数是一个正则表达式模式,只要它是有效的正则表达式,它就会起作用。 - Mads Hansen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接