输入:
<root>
<!-- some info -->
<trip>
<code>3295</code>
<from_instant>2018-07-30T20:13:03+02:00</from_instant>
<section>
<id>3318ORS</id>
<action id="596287">
<action_kind>
<code>P</code>
</action_kind>
<addressId>CAV</addressId>
<stop_number>1</stop_number>
</action>
<action id="596291">
<action_kind>
<code>T</code>
</action_kind>
<addressId>002988001084</addressId>
</action>
<action id="596290">
<action_kind>
<code>S</code>
</action_kind>
<addressId>002988001084</addressId>
<stop_number>2</stop_number>
</action>
<action id="596289">
<action_kind>
<code>D</code>
</action_kind>
<addressId>002988001082</addressId>
<stop_number>2</stop_number>
</action>
<!-- multiple action tags -->
</section>
</trip>
<!-- multiple trip tags -->
</root>
XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="trip">
<xsl:variable name="ID">
<xsl:value-of select="code"/>
</xsl:variable>
<xsl:variable name="Date">
<xsl:value-of select="substring-before(from_instant,'T')"/>
</xsl:variable>
<trip>
<ID>
<xsl:value-of select="$ID"/>
</ID>
<Date>
<xsl:value-of select="$Date"/>
</Date>
<xsl:for-each select="section/action[action_kind/code = 'P']|section/action[action_kind/code = 'D']">
<xsl:variable name="Order_Key">
<xsl:value-of select="action_kind/code"/>
</xsl:variable>
<xsl:variable name="address">
<xsl:value-of select="addressId"/>
</xsl:variable>
<xsl:if test="$address != 'CAV'">
<ordini>
<order_Key>
<xsl:value-of select="$Order_Key"/>
</order_Key>
</ordini>
</xsl:if>
</xsl:for-each>
</trip>
</xsl:template>
</xsl:stylesheet>
在当前的XSL中,我需要在<number>
标签之后有一个标签<order_Key>
,在其中我必须计数(从1开始)并增加所选择的动作标签的数量在每个人中
所以期望的输出:
<root>
<trip>
<ID>3295</ID>
<Date>2018-07-30</Date>
<ordini>
<order_Key/>
<number>1</number>
</ordini>
<ordini>
<order_Key/>
<number>2</number>
</ordini>
</trip>
</root>
我在旅行标签或ordini标签中输出了更多变量,但与我的问题无关。 另外,请不要有多个标签,所以我需要在输出中全部使用
<root><trip>...</trip><trip>...</trip> and so on </root>
我曾尝试在for-each内部使用位置,数字,计数,但我得到了一个空的xsl。
请帮助,谢谢!