Найти элемент, у которого есть определенный дочерний элемент, но нет текстовых узлов.

Для шаблона XSLT мне нужно выражение XPath, нацеленное на элементы, которые имеют определенный дочерний элемент, но не имеют текстовых узлов.

<!-- 1: matches -->
<a><b/></a>

<!-- 2: does not match -->
<a>foo bar quux<b/></a>

<!-- 3: does not match -->
<a>whatever <b/> further text</a>

<!-- 4: does not match -->
<a>whatever <b/> further text <b/></a>

 <!-- 5: does not match -->
<a><x/><b/></a>

<!-- 6: does not match -->
<a>foo bar quux</a>

Я придумал a[*[1 = last() and name() = 'b']], но тогда случай 2 или 3 совпадают, когда они не должны. Причина, конечно же, в том, что *выбирает элементы и не заботится о текстовых узлах. Итак, как мне сделать это вместо этого?

5
задан Jens Bannmann 10 April 2012 в 08:22
поделиться