XSLT 2.0 - 与Contains()模板匹配

时间:2011-02-17 23:52:24

标签: templates xslt contains matching

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

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

1 个答案:

答案 0 :(得分:9)

是的,您可以在元素的匹配条件中使用谓词过滤器内的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()函数,该函数支持REGEX模式以进行更复杂的匹配。

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