我想构造一个XPath查询,它将返回一个“div”或“table”元素,只要它有一个包含文本“abc”的后代.一个警告是它不能有任何div或table的后代.
- <div>
- <table>
- <form>
- <div>
- <span>
- <p>abcdefg</p>
- </span>
- </div>
- <table>
- <span>
- <p>123456</p>
- </span>
- </table>
- </form>
- </table>
- </div>
所以这个查询的唯一正确的结果是:
- /div/table/form/div
我最好的尝试看起来像这样:
- //div[contains(//text(),"abc") and not(descendant::div or descendant::table)] | //table[contains(//text(),"abc") and not(descendant::div or descendant::table)]
但不会返回正确的结果.
谢谢你的帮助.
有些不同: :)
- //text()[contains(.,'abc')]/ancestor::*[self::div or self::table][1]
似乎比其他解决方案短得多,不是吗?