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

发布于 2024-10-17 23:49:46 字数 131 浏览 2 评论 0原文

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

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

I'm wondering if it is possible to write a template match with the contains() function.

I have a document that has multiple elements that need to be renamed to a common element. All of the following need to be renamed to just OP: OP1.2, OP7.3, OP2.4, OP5.6`, etc.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不寐倦长更 2024-10-24 23:49:46

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

Yes, you can use contains() inside of a predicate filter in the match criteria for elements.

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

You could also use starts-with()

*[starts-with(local-name(),'OP')]

If you are using XSLT 2.0 you could use the matches() function, which supports REGEX patterns for more complex matching.

*[matches(local-name(),'^OP')]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文