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/7/jsf/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
使用Xpath查找某些未指定祖先的属性值_Xpath - Fatal编程技术网

使用Xpath查找某些未指定祖先的属性值

使用Xpath查找某些未指定祖先的属性值,xpath,Xpath,我想找到一个XPath表达式来选择节点,这些节点的属性“a”值存在,并且是它们的属性“b”和第一个祖先的属性“a”值的串联,对于这些节点,属性“a”存在,或者它们在层次结构中是第一个,具有属性“a”的节点 <A a='TOWN/'> <B> <C a='TOWN/STREET' b='STREET'> <D a='TOWN/STREET' b='STREET'> <E a='TOWN/STREET/HOUSE' b='S

我想找到一个XPath表达式来选择节点,这些节点的属性“a”值存在,并且是它们的属性“b”和第一个祖先的属性“a”值的串联,对于这些节点,属性“a”存在,或者它们在层次结构中是第一个,具有属性“a”的节点

<A a='TOWN/'>
 <B>
  <C a='TOWN/STREET' b='STREET'>
    <D a='TOWN/STREET' b='STREET'>
    <E a='TOWN/STREET/HOUSE' b='STREET'></E>
    <F a='TOWN/STREET/HOUSE' b='HOUSE'>
     <G a='TOWN/STREET/HOUSE' b='HOUSE' ></G>
    </F>
   </D>
  </C>
 </B>
</A>

Xpath应该只选择元素A、C和F 我尝试了
\\*[(@a=concat(祖先:*[@a][1]/@a,“/”,@b))或(不是(祖先:*[@a])]
,但它没有按预期工作


您能帮忙吗?谢谢。

首先,您在查询的开头使用反斜杠而不是斜杠。然后,您的输入不一致(或复制粘贴错误?),在
//a/@a
属性的末尾有斜杠,但在其他
@a
属性中没有。删除此属性时(因此,
,此XPath查询将执行您想要的操作:

/*[@a=concat(祖先:*[@a][1]/@a,'/',@b)与否(祖先:*[@a])]
如果无法更改输入,请检查添加斜杠和不添加斜杠的版本:

/*[@a=concat(祖先:*[@a][1]/@a,“/”,@b)或@a=concat(祖先:*[@a][1]/@a,@b)或不(祖先:*[@a])]

好的,请等我几分钟。+1谢谢,这确实是打字错误。如果它有效,你应该“接受”它,这样其他有类似问题或回答问题的人可以看到问题已经解决。