这是我必须转换的XML输入:
<_-FOX_-SHPMNT06>
<IDOC BEGIN="1">
<E1EDT20 SEGMENT="1">
<TKNUM>8201333969</TKNUM>
<TPBEZ>FDC Domestic YT</TPBEZ`
<E1EDL20 SEGMENT="1">
<VBELN>3460011248</VBELN>
<E1EDT13 SEGMENT="1">
<QUALF>015</QUALF>
<NTANF>20181016</NTANF>
<NTANZ>000000</NTANZ>
<NTEND>20181016</NTEND>
<NTENZ>000000</NTENZ>
<ISDD>00000000</ISDD>
<ISDZ>000000</ISDZ>
<IEDD>00000000</IEDD>
<IEDZ>000000</IEDZ>
</E1EDT13>
<E1TXTH8 SEGMENT="1">
<TDOBJECT>VBBK</TDOBJECT>
<TDOBNAME>3460011248</TDOBNAME>
<TDID>Z022</TDID>
<TDSPRAS>D</TDSPRAS>
<LANGUA_ISO>DE</LANGUA_ISO>
<E1TXTP8 SEGMENT="1">
<TDFORMAT>*</TDFORMAT>
<TDLINE>Der Unterzeichner erklärt, dass die in diesem Dokument aufgeführten</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDLINE>Waren Ursprungserzeugnisse aus China sind und im Präferenzverkehr mit</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDLINE>CH-EU entsprechen.</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDFORMAT>*</TDFORMAT>
</E1TXTP8>
</E1TXTH8>
<E1TXTH8 SEGMENT="1">
<TDOBJECT>VBBK</TDOBJECT>
<TDOBNAME>3460011248</TDOBNAME>
<TDID>Z024</TDID>
<TDSPRAS>D</TDSPRAS>
<LANGUA_ISO>DE</LANGUA_ISO>
<E1TXTP8 SEGMENT="1">
<TDFORMAT>*</TDFORMAT>
<TDLINE>Ihre Artikelnr. 0068018</TDLINE>
</E1TXTP8>
</E1TXTH8>
</E1EDL20>
</E1EDT20>
</IDOC>
</_-FOX_-SHPMNT06>
这就是我需要的XML结果:
<_-FOX_-SHPMNT06>
<IDOC BEGIN="1">
<E1EDT20 SEGMENT="1">
<TKNUM>8201333969</TKNUM>
<TPBEZ>FDC Domestic YT</TPBEZ>
<E1EDL20 SEGMENT="1">
<VBELN>3460011248</VBELN>
<E1TXTH8 SEGMENT="1">
<TDOBJECT/>
<TDOBNAME/>
<TDID/>
<TDSPRAS/>
<LANGUA_ISO/>
<E1TXTP8 SEGMENT="1">
<TDFORMAT/>
<TDLINE>@ 01 E Der Unterzeichner erklärt, dass die in diesem Dokument aufgeführten</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDFORMAT/>
<TDLINE>@ 02 E Waren Ursprungserzeugnisse aus China sind und im Präferenzverkehr mit</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDFORMAT/>
<TDLINE>@ 03 E CH-EU entsprechen.</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDFORMAT/>
<TDLINE>@ 04 E </TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDFORMAT/>
<TDLINE>@ 05 E Ihre Artikelnr. 0068018</TDLINE>
</E1TXTP8>
</E1TXTH8>
<E1TXTH8 SEGMENT="1">
<TDOBJECT>VBBK</TDOBJECT>
<TDOBNAME>3460011248</TDOBNAME>
<TDID>Z022</TDID>
<TDSPRAS>D</TDSPRAS>
<LANGUA_ISO>DE</LANGUA_ISO>
<E1TXTP8 SEGMENT="1">
<TDFORMAT>*</TDFORMAT>
<TDLINE>Der Unterzeichner erklärt, dass die in diesem Dokument aufgeführten</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDLINE>Waren Ursprungserzeugnisse aus China sind und im Präferenzverkehr mit</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDLINE>CH-EU entsprechen.</TDLINE>
</E1TXTP8>
<E1TXTP8 SEGMENT="1">
<TDFORMAT>*</TDFORMAT>
</E1TXTP8>
</E1TXTH8>
<E1TXTH8 SEGMENT="1">
<TDOBJECT>VBBK</TDOBJECT>
<TDOBNAME>3460011248</TDOBNAME>
<TDID>Z024</TDID>
<TDSPRAS>D</TDSPRAS>
<LANGUA_ISO>DE</LANGUA_ISO>
<E1TXTP8 SEGMENT="1">
<TDFORMAT>*</TDFORMAT>
<TDLINE>Ihre Artikelnr. 0068018</TDLINE>
</E1TXTP8>
</E1TXTH8>
</E1EDL20>
</E1EDT20>
</IDOC>
</_-FOX_-SHPMNT06>
我需要获取一个全局计数器而不是使用“ position()”,因为我不希望在每个“ for-each”中将该计数器重置为0:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<!-- Identity template : copy all text nodes, elements and attributes -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="E1EDT13[position()=last()]">
<E1TXTH8 SEGMENT="1">
<TDOBJECT/>
<TDOBNAME/>
<TDID/>
<TDSPRAS/>
<LANGUA_ISO/>
<xsl:for-each select="following-sibling::E1TXTH8[TDID='Z002']/E1TXTP8">
<E1TXTP8 SEGMENT="1">
<xsl:variable name="typeA">A</xsl:variable>
<TDFORMAT/>
<TDLINE>
<xsl:value-of select="concat('@', ' ', format-number(position(),'00'), ' ', $typeA, ' ', TDLINE)"/>
</TDLINE>
</E1TXTP8>
</xsl:for-each>
<xsl:for-each select="following-sibling::E1TXTH8[TDID='Z022']/E1TXTP8">
<E1TXTP8 SEGMENT="1">
<xsl:variable name="typeE">E</xsl:variable>
<TDFORMAT/>
<TDLINE>
<xsl:value-of select="concat('@', ' ', format-number(position(),'00'), ' ', $typeE, ' ', TDLINE)"/>
</TDLINE>
</E1TXTP8>
</xsl:for-each>
<xsl:for-each select="following-sibling::E1TXTH8[TDID='Z024']/E1TXTP8">
<E1TXTP8 SEGMENT="1">
<xsl:variable name="typeE">E</xsl:variable>
<TDFORMAT/>
<TDLINE>
<xsl:value-of select="concat('@', ' ', format number(position(),'00'), ' ', $typeE, ' ', TDLINE)"/>
</TDLINE>
</E1TXTP8>
</xsl:for-each>
</E1TXTH8>
</xsl:template>
</xsl:stylesheet>
有什么办法可以管理它?如果我使用“ position()”,则计数器将为01 02 03 04 01,即使我有更多的“ for each”,我也需要01 02 03 04 05