XSLT 2.0 - 与Contains()模板匹配

Kat*_*tie 5 xslt templates contains matching

我想知道是否可以编写与该contains()功能匹配的模板.

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

Mad*_*sen 9

是的,您可以contains()在元素的匹配条件中使用谓词过滤器内部.

<xsl:template match="*[contains(local-name(),'OP')]>
  <OP>
    <xsl:apply-templates select="@*|node()"/>
  </OP>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

你也可以用 starts-with()

*[starts-with(local-name(),'OP')]
Run Code Online (Sandbox Code Playgroud)

如果您使用的是XSLT 2.0,则可以使用该matches()函数,该函数支持REGEX模式以进行更复杂的匹配.

*[matches(local-name(),'^OP')]
Run Code Online (Sandbox Code Playgroud)