尝试计算具有特定数值的节点的“count:参数必须是NodeSet”

时间:2011-08-17 19:13:00

标签: xpath

我在一个小脚本中使用Perl的XML :: XPath包。我很确定我有一个xpath问题,而不是特定于该软件包的东西。

我的测试数据如下:

<stuff>
 <things>
  <thing>
   <widgets>
    <widget>
     <junk>
      <value>0</value>
     </junk>
    </widget>
    <widget>
     <junk>
      <value>9.0</value>
     </junk>
    </widget>
   </widgets>
  </thing>
 </things>
</stuff>

我正在使用的表达式是:

//thing[count(number(widgets/widget/junk/value/text())=0)=0]

当我运行它时,它失败并显示“count:参数必须是NodeSet”。

1 个答案:

答案 0 :(得分:0)

count()中的以下代码返回一个不是节点的布尔值:

number(widgets/widget/junk/value/text())=0

XPath 1.0中不允许这样做

如果您想选择<thing/>元素,其中包含值{0}的<value/>元素,您可以使用:

//thing[not(
    widgets/widget/junk/value[number(text())=0]
  )]