我有以下XML:
<parent>
<pet>
<data>
<birthday/>
</data>
</pet>
<pet>
<data>
<birthday/>
</data>
</pet>
</parent>
Run Code Online (Sandbox Code Playgroud)
现在我想选择第一个生日元素,parent//birthday[1]但这会返回两个生日元素,因为它们都是父母的第一个孩子.
我怎样才能选择整个文档的第一个生日元素,无论它位于何处.我已经尝试parent//birthday[position()=1]但是这也不起作用.
Tom*_*lak 15
你的意思是(注意括号!)
(/parent/pet/data/birthday)[1]
或者,更短但不太具体的变化:
(/*/*/*/birthday)[1] (//birthday)[1]
或者,更多语义,"第一只宠物的生日":
/parent/pet[1]/data/birthday
或者,如果不是所有宠物都有生日条目,则"生日设定的第一只宠物的生日":
/parent/pet[data/birthday][1]/data/birthday
如果从上下文节点工作,则可以通过使表达式相对于该上下文节点来缩写表达式.
说明:
/parent/pet/data/birthday[1]<birthday>在<data>整个文档中选择所有在其各自父节点(节点)中的第一个节点(/parent/pet/data/birthday)[1]选择所有<birthday>节点,以及那些节点(这是括号所做的,它们创建一个中间节点集),它需要第一个节点