我有一个xml:
<somenode />
<somenode />
...
<node120>
...
<node121>
...
<somenode />
我需要处理所有以&#34; node&#34;开头的节点。最终的数字可能是任何数字。 如果有可能,我会使用正则表达式并编写如下代码:
<xsl:for-each select="node\d+">
但据我所知,正则表达式在XSLT 1.0中不可用 有没有办法处理它? 谢谢你的回答!
答案 0 :(得分:1)
xslt 1.0中没有正则表达式,你可以使用&#39; starts-with&#39; ?
<xsl:for-each select='*[starts-with(name(.),"node")]'>
答案 1 :(得分:1)
这是一个可能的XPath 1.0表达式:
*[starts-with(name(.),'node') and number(substring-after(name(), 'node'))]
解释:
starts-with(name(.),"node")
:如果当前元素名称以true
开头,则评估为"node"
。
number(substring-after(name(), 'node'))
:如果true
之后的元素名称的一部分可转换为非零数字,则评估为"node"
(如@所示) michael.hor257k在下面的评论中)