XPath-запрос с предикатами-потомками и потомками text ()

Я хотел бы создать запрос 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)]

но не возвращает правильный результат .

Спасибо за вашу помощь.

16
задан juan234 13 October 2010 в 05:15
поделиться