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 が一致しない場合に一致します。もちろん、その理由は、*
が要素を選択し、テキスト ノードを気にしないためです。では、代わりにこれを行うにはどうすればよいですか?