对于 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 被匹配了。当然,原因是*
选择元素而不关心文本节点。那么我该怎么做呢?