XSL中利用xsl:for-each時給每一項新增序號
阿新 • • 發佈:2019-01-04
經常用for-each來迴圈讀取XML中的某個節點集,但常常需要加上序號
這樣來做:
<xsl:template match="Book">
<xsl:for-each select="Authors/Author">
<xsl:number value="position()" />
<xsl:value-of select="Name" />
</xsl:for-each>
</xsl:template>
當然,如果你不滿意,想在數字後面加上"."可以這樣:
<xsl:number value="position()" format="1." />
甚至,你可以用用圖片表示1/2/3等:
<xsl:element name="img">
<xsl:attribute name="src">images/n<xsl:number value="position()" format="1" />.gif</xsl:attribute>
<xsl:attribute name="border">0</xsl:attribute>
</xsl:element>
注意:你在images資料夾下要有類似這樣的檔案:n1.gif,n2.gif,n3.gif ... ...
假設我們XML如下:
<Book>
<ID>125353-8993-3737</ID>
<ISBN>22222</ISBN>
<Title>共產主義一定能勝利</Title>
<Authors>
<Author>
<Name><![CDATA[Bill&Hoele]]></Name>
<ID>12</ID>
</Author>
<Author>
<Name><![CDATA[Eylor]]></Name>
<ID>1</ID>
</Author>
</Authors>
</Book>
這樣來做:
<xsl:template match="Book">
<xsl:for-each select="Authors/Author">
<xsl:number value="position()" />
<xsl:value-of select="Name" />
</xsl:for-each>
</xsl:template>
當然,如果你不滿意,想在數字後面加上"."可以這樣:
<xsl:number value="position()" format="1." />
甚至,你可以用用圖片表示1/2/3等:
<xsl:element name="img">
<xsl:attribute name="src">images/n<xsl:number value="position()" format="1" />.gif</xsl:attribute>
<xsl:attribute name="border">0</xsl:attribute>
</xsl:element>
注意:你在images資料夾下要有類似這樣的檔案:n1.gif,n2.gif,n3.gif ... ...
假設我們XML如下:
<Book>
<ID>125353-8993-3737</ID>
<ISBN>22222</ISBN>
<Title>共產主義一定能勝利</Title>
<Authors>
<Author>
<Name><![CDATA[Bill&Hoele]]></Name>
<ID>12</ID>
</Author>
<Author>
<Name><![CDATA[Eylor]]></Name>
<ID>1</ID>
</Author>
</Authors>
</Book>