我有以下xml:
<Details>
<Head>
<pageid>123</pageid> <!-- Needs to be sequential starting with 0000000001 -->
</Head>
<Start>
<pageid>124</pageid>
<value>Details of Minerals</value>
</Start>
<Item>
<pageid>12</pageid>
<name>Coal</name>
</Item>
<Quantity>
<pageid>45</pageid>
<value>3</value>
<comments>NONE MENTIONED</comments>
</Quantity>
<Item>
<pageid>459</pageid>
<name>MICA</name>
</Item>
<Quantity>
<pageid>65</pageid>
<value>2</value>
<comments>NONE MENTIONED</comments>
</Quantity>
<END>
<pageid>78</pageid>
</END>
</Details>
我希望pageid
的值是递增的,有10位数字。
样品o/p
<Details>
<Head>
<pageid>0000000001</pageid>
</Head>
<Start>
<pageid>0000000002</pageid>
<value>Details of Minerals</value>
</Start>
<Item>
<pageid>0000000003</pageid>
<name>Coal</name>
</Item>
<Quantity>
<pageid>0000000004</pageid>
<value>3</value>
<comments>NONE MENTIONED</comments>
</Quantity>
<Item>
<pageid>0000000005</pageid>
<name>MICA</name>
</Item>
<Quantity>
<pageid>0000000006</pageid>
<value>2</value>
<comments>NONE MENTIONED</comments>
</Quantity>
<END>
<pageid>0000000007</pageid>
</END>
</Details>
我尝试使用以下结构:
<xsl:variable name="counter" select="0000000000" saxon:assignable="yes"/>
<xsl:template match="//*[local-name()='pageid']">
<saxon:assign name="counter" select="$counter+0000000001"/>
<imp1:Line_id>
<xsl:value-of select="$counter"></xsl:value-of>
</imp1:Line_id>
但这并没有帮助。你能提出一个更简单的方法吗?
您可以在这里使用xsl:number
元素,而不是尝试使用变量计数器:
<xsl:template match="//*[local-name()='pageid']">
<imp1:Line_id>
<xsl:number level="any" format="0000000000" />
</imp1:Line_id>
</xsl:template>