子と属性が異なっていても、同じ名前のノードの最初の出現をすべて返す必要があります。
例えば
<Data>
<A>
<X randomattr="1"/>
<Y randomattr="1"/>
<Z/>
</A>
<B>
<X/>
<X randomattr="3"/>
<Z/>
</B>
</Data>
次の名前が繰り返されるため、最初のX、Y、Zの3つのノードを返す必要があります。X要素の1つにrandomattrがない場合でも、別の要素の値が異なる場合でもかまいません。
name()からのdistinct-valuesは必要ありません。ノード全体を返したいのですが、何かのようなもの
/Data/*/*[distinct-values(name())]
また、ダブルループですべてのノードを横断できることも知っていますが、簡単なワンライナーやこのための関数、またはdistinct [1]のような特別なXpath構文があるかどうかを自問しています。ありがとうございます!