XSLT 'matches' 函数:我可以将正则表达式与变量结合使用吗?

XSLT 'matches' function: can I combine regex with a variable?

我有一个 XSLT,它将 HTML 个节点与一个变量值进行比较:

<xsl:for-each select="//section[contains(text(), $interval)]">

$interval 变量包含以小时为单位的维护间隔,因此可能的值为 100、250 和 1000。您可以看到哪里出了问题:如果 $interval=100 它也会匹配以下部分包含“1000”。

HTML:

<section>maintenance interval: 100 hours</section>
<section>maintenance interval: 250 hours</section>
<section>maintenance interval: 1000 hours</section>

所以我需要一个 'whole word' 比较。这会起作用:

<xsl:for-each select="//section[matches(text(), '\s100\s')]">

但我想继续使用该变量。但这不起作用,因为变量被解释为文字文本:

<xsl:for-each select="//section[matches(text(), '\s$interval\s')]">

我可以在变量定义中添加空格,$interval=' 100 ' 但这限制了我只能在那里使用空格。

有没有办法在正则表达式中使用变量?

为此目的使用 concat()

<xsl:for-each select="//section[matches(text(), concat('\s',$interval,'\s'))]">