XSLT生成增量值



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

相关内容

  • 没有找到相关文章

最新更新