XSLT当你只知道他们名字的一部分时如何处理节点?

时间:2015-08-05 08:55:41

标签: regex xml xslt

我有一个xml:

<somenode />
<somenode />
...
<node120>
...
<node121>
...
<somenode />

我需要处理所有以&#34; node&#34;开头的节点。最终的数字可能是任何数字。 如果有可能,我会使用正则表达式并编写如下代码:

<xsl:for-each select="node\d+">

但据我所知,正则表达式在XSLT 1.0中不可用 有没有办法处理它? 谢谢你的回答!

2 个答案:

答案 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在下面的评论中)