Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex XSLT当您只知道节点名称的一部分时,如何处理节点?_Regex_Xml_Xslt - Fatal编程技术网

Regex XSLT当您只知道节点名称的一部分时,如何处理节点?

Regex XSLT当您只知道节点名称的一部分时,如何处理节点?,regex,xml,xslt,Regex,Xml,Xslt,我有一个xml: <somenode /> <somenode /> ... <node120> ... <node121> ... <somenode /> ... ... ... 我需要处理所有以“node”开头的节点。最终的数字可能是任意的。 如果可能的话,我会使用正则表达式并编写如下代码: <xsl:for-each select="node\d+"> 但据我所知,正则表达式在XSLT1.0中不可用 有办

我有一个xml:

<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”
    之后的元素名称的一部分可转换为非零数,则计算结果为
    true
    (如下注释中@michael.hor257k所述)


我认为这还不够,正则表达式还检查
节点
后面是否有数字。不过,这不是问题,可以用XSLT1.0来完成。这将在
中失败<如果
x
为“可转换为数字”,则代码>数字(x)的计算结果不为真。如果结果既不是正零,也不是负零,也不是NaN,则其计算结果为true。