Regex XSLT当您只知道节点名称的一部分时,如何处理节点?
我有一个xml:Regex XSLT当您只知道节点名称的一部分时,如何处理节点?,regex,xml,xslt,Regex,Xml,Xslt,我有一个xml: <somenode /> <somenode /> ... <node120> ... <node121> ... <somenode /> ... ... ... 我需要处理所有以“node”开头的节点。最终的数字可能是任意的。 如果可能的话,我会使用正则表达式并编写如下代码: <xsl:for-each select="node\d+"> 但据我所知,正则表达式在XSLT1.0中不可用 有办
<somenode />
<somenode />
...
<node120>
...
<node121>
...
<somenode />
...
...
...
我需要处理所有以“node”开头的节点。最终的数字可能是任意的。
如果可能的话,我会使用正则表达式并编写如下代码:
<xsl:for-each select="node\d+">
但据我所知,正则表达式在XSLT1.0中不可用
有办法处理吗?
谢谢你的回答 XSLT1.0中没有正则表达式,您可以使用'starts with'
<xsl:for-each select='*[starts-with(name(.),"node")]'>
这是一个可能的XPath 1.0表达式:
*[starts-with(name(.),'node') and number(substring-after(name(), 'node'))]
说明:
*[starts-with(name(.),'node') and number(substring-after(name(), 'node'))]
:如果当前元素名称以以(名称(.),“节点”)开头
开头,则计算结果为“节点”
true
:如果number(在(name(),'node')之后的子字符串)
之后的元素名称的一部分可转换为非零数,则计算结果为“node”
(如下注释中@michael.hor257k所述)true
节点
后面是否有数字。不过,这不是问题,可以用XSLT1.0来完成。这将在
中失败<如果x
为“可转换为数字”,则代码>数字(x)的计算结果不为真。如果结果既不是正零,也不是负零,也不是NaN,则其计算结果为true。