0

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

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

我想计算此 $name 的匹配数,但不是按原样计算,而是使用正则表达式匹配,即:

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

解释:

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

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

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

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

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

非常感谢!

4

1 回答 1

1

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

于 2013-06-25T10:22:30.003 回答