我有一个这样的xml文件。
<a>
<b>
<c>
<d>Text</d>
</c>
<c>
<d>Text</d>
</c>
</b>
<b>
<c>
<d>Text</d>
</c>
<c>
<d>Text</d>
</c>
</b>
</a>
我在<d>
节点中,我需要获取<c>
内部的节点数<b>
。请注意,这只是一个示例,因此我们可以具有更深的结构,<c>
而不会成为的直接父对象<d>
。所以,我需要什么。我需要在第二个2中的第一个<d>
节点1中(因为我们在里面<c>
,它在第一个中<b>
),在第三个1和第4个中。我们不需要计算所有<c>
元素,而只计算当前<d>
在parent内部的父节点<b>
。
现在我有count(preceding :: c)。但这算了所有四个<c>
点头。
请帮忙。谢谢你。
PS我正在使用xsl 1.0
我需要在第一个
<d>
节点1中(因为我们位于第一个节点<c>
中<b>
)
因此,您需要将树上移到当前节点的c
祖先,然后计算该元素的先前c
同级的数目:
count(ancestor::c[1]/preceding-sibling::c) + 1
+1是因为c
给定中的第一个b
将没有先前的同级,第二个将具有一个,依此类推。
为了确保您将树上升到该树c
的子树b
(例如,如果之间有其他元素命名c
),则可以更具体
count(ancestor::c[parent::b][1]/preceding-sibling::c) + 1
定位仅以c
其自身b
为父对象的a作为目标。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句