Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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/2/cmake/2.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
XPath跟随具有多个条件的同级_Xpath - Fatal编程技术网

XPath跟随具有多个条件的同级

XPath跟随具有多个条件的同级,xpath,Xpath,我有以下xml文档。我正在尝试选择具有相同值2的兄弟姐妹且值3未关闭的任何子级 <root> <child> <value1>Type A</value1> <value2>Class 1</value2> <value3>Active</value3> </child> <child> <value1>Type B<

我有以下xml文档。我正在尝试选择具有相同值2的兄弟姐妹且值3未关闭的任何子级

<root>
  <child>
    <value1>Type A</value1>
    <value2>Class 1</value2>
    <value3>Active</value3>
  </child>
  <child>
    <value1>Type B</value1>
    <value2>Class 1</value2>
    <value3>Closed</value3>
  </child>
  <child>
    <value1>Type C</value1>
    <value2>Class 2</value2>
    <value3>Active</value3>
  </child>
  <child>
    <value1>Type D</value1>
    <value2>Class 2</value2>
    <value3>Active</value3>
  </child>
  <child>
    <value1>Type E</value1>
    <value2>Class 3</value2>
    <value3>Active</value3>
  </child>
</root>

A型
第一类
活跃的
B型
第一类
关闭
C型
第二类
活跃的
D型
第二类
活跃的
E型
第三类
活跃的
我的尝试是:

//child[以下同级::child/value2=value2和value3!='Closed']

但这并没有将多个条件应用于以下同级函数的预期结果

有什么想法吗

//child[value2 = following-sibling::child[not(value3 = 'Closed')]/value2]
若要应用于任何同级,请将后面的同级轴和前面的同级轴合并

//child[value2 = (following-sibling::child | preceding-sibling::child)[not(value3 = 'Closed')]/value2]

它是否返回以下所有同级,其中
value3!=closed
?否,它返回类型A和类型C,其中确实有另一个具有匹配值2的子项,但类型A的第二个子项已关闭,因此不应返回Hanks,这正是我所需要的…只是添加了一个“and value3!=“closed”,以确保第一个子项也未被取消。