【问题标题】:XSLT 2.0 using the matches function with regular expressionXSLT 2.0 使用带有正则表达式的匹配函数
【发布时间】:2013-06-25 09:23:02
【问题描述】:

我正在尝试编写一个非常简单的代码,但我不确定在 XSLT 中是否可行。

假设我有一个名为 name 的变量(即引用为 $name)并假设我有一个包含一堆名称的 XML($NFD)。

我想统计这个 $name 的匹配次数,但不是按原样而是用正则表达式匹配,即:

count($NFD//name-tag[matches(@filter,'^$name\||\|$name?', 'i')]) = 0).

解释:

我正在尝试查找以下类型的匹配项:

  1. ^$name\| --> 以$name 变量开头,以管道结尾。

  2. \|$name? --> 以管道开头,以我的$name 变量结尾。

由于某种原因,matches 函数内部的正则表达式中变量符号 ($) 的集成似乎无法正确匹配。

有可能吗?在matches函数中集成正则表达式,包括变量?

非常感谢!

【问题讨论】:

    标签: templates variables xslt match


    【解决方案1】:

    您可以使用concat 函数连接XSLT/XPath 中的字符串,所以我认为您只需要count($NFD//name-tag[matches(@filter, concat('^', $name, '\||\|', $name,'?'), 'i')]) = 0)。字符串文字内没有发生变量插值,因此您当前的表达式将尝试在字符串上匹配一个美元符号,后跟字符串name。但我的concat 建议应该可行。

    【讨论】:

    • 非常感谢 Martin - 这对我来说非常重要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多