Xpath 选择位于两个元素之间的元素

Xpath 选择位于两个元素之间的元素,xpath,Xpath,我以为这是个简单的问题。。。我有限的XPath知识当然没有帮助,我可能使事情复杂化了 尝试查找驻留在两个子任务标记之间的任何效果标记 <TOPIC> <TITLE/> <EFFECT/> <SUBTASK> </SUBTASK> <EFFECT/> <SUBTASK> </SUBTASK> </TOPIC> 现在,尝试查找前一个同级和后一个同级相同的

我以为这是个简单的问题。。。我有限的XPath知识当然没有帮助,我可能使事情复杂化了

尝试查找驻留在两个子任务标记之间的任何效果标记

<TOPIC>
 <TITLE/>
 <EFFECT/>            
 <SUBTASK>
 </SUBTASK>
 <EFFECT/>
 <SUBTASK>
 </SUBTASK>
</TOPIC>
现在,尝试查找前一个同级和后一个同级相同的任何效果标记-无论元素名称是什么

尝试此表达式,但返回的误报太多:

//效果[前面的同级::*[name()]=后面的同级::*[name()]


任何帮助都将不胜感激!!谢谢

您能编辑xml示例并展示一个更完整的示例,其中添加了导致误报的元素吗?谢谢提醒您,您的第四个示例似乎最适合您所描述的内容,但子任务中缺少一个字母;应该是//EFFECT[前面的同级::子任务和后面的同级::子任务]谢谢…子任务上的一个胖手指错误。正在获取一个更完整的示例…简言之,效果标记在文档中的任何位置都是允许的。我只希望位于两个子任务之间的那些子任务。那么您的第四个子任务应该可以正常工作,除非xml比示例更复杂,并且我们缺少一些东西。嗯…我感觉像是一个I看起来第四个例子smh是一个胖手指错误。只需再次运行它,它并没有返回第一个假阳性。感觉像个白痴,但很高兴我发现了它!谢谢大家的帮助!!
<TC>
 <TCBODY>
  <TASK>
   <EFFECT/>
   <TITLE/>
   <TOPIC>
    <TITLE/>
    <EFFECT/>
    <SUBTASK>
     <EFFECT/>
    </SUBTASK>
   </TOPIC>
  </TASK>
 </TCBODY>
</TC>
//EFFECT[preceding-sibling::SUBTASK and following-sibling::SUBTASK]