以此为例:
<root>
<gramps name="Bill">
<him name="Bill Jr">
<kid name="Bill III"/>
</him>
</gramps>
<gramps name="Tom">
<him name="Al">
<kid name="Al Jr"/>
</him>
</gramps>
<gramps name="Bob">
<him name="Bob Jr">
<kid name="Sam"/>
</him>
</gramps>
<store name="Tom's"/>
<store name="Bill's"/>
<store name="Pete's"/>
</root>
我可以通过以下方式获得所有二级元素:
/*/*
我可以使用:
获取所有二级元素gramps store
的名称
distinct-values(/*/*/name())
如何才能获得每个第二级元素的第一个元素:
<gramps name="Bill">
<him name="Bill Jr">
<kid name="Bill III"/>
</him>
<store name="Tom's"/>
答案 0 :(得分:4)
如果之前有相同名称,您可以检查每个名称:
/*/*[not(preceding-sibling::*/name() = name())]
或者,可能更快,找到每个名字的第一个:
for $name in distinct-values(/*/*/name()) return /*/*[name() = $name][1]