2015-04-06 51 views
0

我有以下XML:XSLT生成增量值

<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> 

但這wasnt很有幫助。你能建議一個更簡單的方法來做到這一點?

回答

1

,而不是試圖用一個變量計數器,你可以只利用xsl:number元素在這裏:

<xsl:template match="//*[local-name()='pageid']"> 
    <imp1:Line_id> 
     <xsl:number level="any" format="0000000000" /> 
    </imp1:Line_id> 
</xsl:template> 
+0

感謝蒂姆。它爲我工作。不知道爲什麼,我使用JDeveloper 11g和'格式=「0000000001」'似乎工作,而'格式=「0000000000」'沒有。 – HeisenBerg 2015-04-10 19:14:13