在 XSLT 1.0 中迭代嵌套的 for-each 循环时获取外部循环计数器
Get outer loop counter while iterating nested for-each loop in XSLT 1.0
我有一个 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>
标签在重复,里面的标签也在重复。我正在使用 XST 1.0 将其转换为目标 XML 消息,我将不得不在其中迭代并喜欢:
<xsl for-each select="fieldgroup">
<xsl for-each select="field">
....
</xsl-for-each>
</xsl:for-each>
我将不得不跟踪它正在迭代的项目。在我的第二个 for-each 循环内的代码中,我可以获得循环的循环计数器,但是我将如何获得迭代的父 for-each 循环的循环计数器?
简单的用一个变量来存储<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#
我有一个 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>
标签在重复,里面的标签也在重复。我正在使用 XST 1.0 将其转换为目标 XML 消息,我将不得不在其中迭代并喜欢:
<xsl for-each select="fieldgroup">
<xsl for-each select="field">
....
</xsl-for-each>
</xsl:for-each>
我将不得不跟踪它正在迭代的项目。在我的第二个 for-each 循环内的代码中,我可以获得循环的循环计数器,但是我将如何获得迭代的父 for-each 循环的循环计数器?
简单的用一个变量来存储<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#