XPath を使用<blockquote>
して、少なくとも 1 つの子<pre>
要素を持ち、他の種類の子要素を持たず、必要に応じてテキスト ノードを子として持つすべての要素を見つけたいと考えています。
<body><div><!-- arbitrary nesting -->
<blockquote><pre>YES</pre></blockquote>
<blockquote><p>NO</p></blockquote>
<blockquote><pre>NO</pre><p>NO</p></blockquote>
<blockquote><p>NO</p><pre>NO</pre></blockquote>
<blockquote><pre>YES</pre> <pre>YES</pre></blockquote>
<blockquote>NO</blockquote>
</div></body>
この XPath は機能しているように見えますが、複雑すぎると思われます。
//blockquote[pre][not(*[not(name()="pre")])]
必要なものを選択するためのより良い (より少ないコード、より効率的な、より DRY) 方法はありますか?