我试图为我的输入xml重复地包含父元素和子元素生成两种类型的序列号。请参阅下面的输入在XSLT中为父子元素生成序列号
我有一个输入XML,如:
<family>
<parent>P1<parent>
<child>C1<child>
</family>
<family>
<parent>P1<parent>
<child>C2<child>
</family>
<family>
<parent>P2<parent>
<child>C3<child>
</family>
<family>
<parent>P2<parent>
<child>C4<child>
</family>
<family>
<parent>P2<parent>
<child>C5<child>
</family>
我的期望输出与内容的文本文件:基于父第一个序列号
00001 C1 00001
00001 C2 00002
00002 C3 00001
00002 C4 00002
00002 C5 00003
,并基于第儿童。 我想在我的XSL使用
<xsl:for-each-group select="family" group-by="child">
<xsl:value-of select="format-number(position(),'00000')"/>
<xsl:value-of select="child"/>
<xsl:value-of select="format-number(position(),'00000')"/>
</xsl:for-each-group>
对于上述XSL我越来越对双方相同的序列号。是否有任何特定的功能或分组概念来实现,以便我可以实现所需的输出? 请帮我理解这个逻辑。
谢谢,它工作完美! – Jarvis
蒂姆,我有一个小的疑问,我如何提取所有父节点的最后一个孩子?例如:C2,C5 – Jarvis
你可以在外部的for-each-group循环中做'current-group()[last()]'。如果你无法使用它,请随时在SO上提出一个全新的问题。谢谢! –