XSLT 生成增量值

XSLT Generating incremental values

我有以下 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>