2016-07-01 4 views
-1

私はこのサンプルxmlを持っています。XSLTによるXML要素の位置処理。

<I> 
<!-- SL REPEATS * TIMES --> 
    <SL> 
<!-- SE REPEATS * TIMES --> 
     <SE></SE> 
     <SE></SE> 
     <SE></SE> 
    </SL> 
    <SL> 
     <SE></SE>   
     <SE></SE> 
    </SL> 
    <SL> 
     <SE></SE> 
     <SE></SE> 
     <SE></SE> 
    </SL> 
    <SL>   
     <SE></SE> 
    </SL> 
</I> 



I want to generate sequential id numbers for <SE> starting with first one. Resultant needs to be like this. 

    <I> 
<!-- SL REPEATS * TIMES --> 
    <SL> 
<!-- SE REPEATS * TIMES --> 
     <SE id="1"></SE> 
     <SE id="2"></SE> 
     <SE id="3"></SE> 
    </SL> 
    <SL> 
     <SE id="4"></SE>   
     <SE id="5"></SE> 
    </SL> 
    <SL> 
     <SE id="6"></SE> 
     <SE id="7"></SE> 
     <SE id="8"></SE> 
    </SL> 
    <SL>   
     <SE id="9"></SE> 
    </SL> 
</I> 

私が一致するテンプレートの数(先行兄弟:: * [名前()=名(現在の())])+ 1" を使用してみました。しかし、それはすべてのSLの後に番号を再起動します。

おかげチェックする。すべてのヘルプは高く評価した。テンプレートもちろん​​

<xsl:template match="SE"> 
    <SE> 
    <xsl:attribute name="id"><xsl:number level="any"/></xsl:attribute> 
    <xsl:apply-templates/> 
    </SE> 
</xsl:template> 

あなたが他のノードをコピーするだけでなくthe identity transformation templateが必要で

答えて

0

使用<xsl:number level="any"/>

SEIの外にある場合は、カウントしたくない場合は<xsl:number level="any" from="I"/>を使用してください。

関連する問題