【问题标题】:XSLT 2.0 - Template Matching With Contains()XSLT 2.0 - 使用 Contains() 进行模板匹配
【发布时间】:2011-06-29 12:01:10
【问题描述】:

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

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

【问题讨论】:

    标签: templates xslt contains matching


    【解决方案1】:

    是的,您可以在元素匹配条件中的谓词过滤器内使用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')]
    

    【讨论】:

    • 我们可以提供多个值来匹配吗?比如:match="*[contains(local-name(),'OP1|OP2|OP3')]
    • @Sishant Mishra 是的,你可以。第二个参数是一个正则表达式模式,所以只要它是一个有效的正则表达式就可以工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    相关资源
    最近更新 更多