我有一个如下所示的XML:
<customer>
<fieldgroup>
<field index="1">field1</field>
<field index="2">field1</field>
</fieldgroup>
<fieldgroup>
<field index="1">field3</field>
<field index="2">field4</field>
</fieldgroup>
</customer>
标签是重复的,它里面的标签也是重复的。我正在使用XST1.0将其转换为目标XML消息,我将不得不遍历和如下所示:
<xsl for-each select="fieldgroup">
<xsl for-each select="field">
....
</xsl-for-each>
</xsl:for-each>
我将不得不跟踪它正在迭代的项目和项目。在我的代码中,在第二个for-each循环中,我可以获得循环的循环计数器,但是我如何获得迭代过的父for-each循环的循环计数器呢?
发布于 2020-10-05 23:29:52
只需使用一个变量来存储<fieldgroup>
元素的position()
:
<xsl:template match="customer">
<xsl:for-each select="fieldgroup">
<xsl:variable name="outerIndex" select="position()" />
<xsl:for-each select="field">
<xsl:value-of select="concat('#outer',$outerIndex,'#inner: ',@index,'#
')" />
</xsl:for-each>
</xsl:for-each>
</xsl:template>
输出为:
#outer1#inner: 1#
#outer1#inner: 2#
#outer2#inner: 1#
#outer2#inner: 2#
https://stackoverflow.com/questions/64210271
复制相似问题