我想知道是否可以使用contains()
函数编写模板匹配。
我有一个文档,其中包含多个需要重命名为公共元素的元素。以下所有内容都需要重命名为OP:OP1.2,OP7.3,OP2.4,OP5.6`等。
答案 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')]