使用XSLT样式表,我试图计算父元素的每个第一个子节点的不同值 .
示例XML:
<Root>
<Parent>
<Child>
<Child2>
<Child3>Value2</Child3>
</Child2>
</Child>
<Child>
<Child2>
<Child3>Value3</Child3>
</Child2>
</Child>
</Parent>
<Parent>
<Child>
<Child2>
<Child3>Value2</Child3>
</Child2>
</Child>
<Child>
<Child2>
<Child3>Value2</Child3>
</Child2>
</Child>
</Parent>
<Parent>
<Child>
<Child2>
<Child3>Value2</Child3>
</Child2>
</Child>
<Child>
<Child2>
<Child3>Value2</Child3>
</Child2>
</Child>
</Parent>
</Root>
使用我上面的XML示例,预期结果将是1.我已经设法通过使用count函数计算所有子项的不同值,但我无法弄清楚如何为每个第一个孩子执行此操作 .
count(//Parent/Child/Child2/Child3[not(.=following::Child3)])
1 回答
你想要的表达是......
哪个不是很优雅,也不是很有效率 .
但是你已经将它标记为XSLT 1.0,这表明你在样式表中执行计数 . 如果是这样,请考虑像这样定义一个键:
那么表达就变成了......
这使用了一种名为Muenchian Grouping的技术,值得一读 .