XPath:分组布尔运算符

时间:2018-10-08 07:29:36

标签: csv xpath xpath-2.0

在XPath 2.0的上下文中,我正在尝试导入CSV文件,尽管我感觉我的XPath过滤器的意图很明确,但我想验证以下语法是否正确:

/node[image[1][string()] and ( (rocklea[1] + sydney[1]) > 0) and (productgroupcode[1] = "SYS" or productgroupcode[1] = "SVR" or productgroupcode[1] = "NBK" or productgroupcode[1] = "NAS")]

我的Stack Overflow朋友能否检查代码以确保正确执行?

本质上,XPath过滤器必须规定:

  1. image[1]元素不能为空
  2. 元素rocklea[1]sydney[1]的总和必须大于零
  3. 元素productgroupcode[1]必须等于以下值之一:“ SYS”,“ SVR”,“ NBK”或“ NAS”

1 个答案:

答案 0 :(得分:0)

是的,在语法上是正确的。根据对条件的描述,XPath似乎是正确的(确定是否提供了示例数据以进行验证会更容易知道)。

有一些不必要的括号可以删除,并且由于您已将其标记为XPath 2.0,因此可以根据一系列值评估productgroupcode[1]值来将其缩短一点:

/node[
  image[1][string()] and 
  (rocklea[1] + sydney[1]) > 0 and 
  productgroupcode[1] = ("SYS", "SVR", "NBK", "NAS") 
]