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'))]">
我有一个 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'))]">