我想对我的xml数据进行排序并对它们进行编号。这是例如xml代码:
<images>
<image>
<title>cat</title>
<grade>3</grade>
</image>
<image>
<title>dog</title>
<grade>5</grade>
</image>
<image>
<title>snake</title>
<grade>1</grade>
</image>
<image>
<title>fish</title>
<grade>2</grade>
</image>
</images>
和xslt代码:
<xsl:template match="images">
<xsl:for-each select="image">
<xsl:sort select="grade"/>
<tr>
<td>
<xsl:number/>
</td>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="grade"/>
</td>
</tr>
</xsl:for-each>
</xsl:template>
结果是:
3 cat 1
4 fish 2
1 cat 3
2 dog 5
我想拥有:
1 cat 1
2 fish 2
3 cat 3
4 dog 5
我怎样才能以简单的方式做到这一点?
答案 0 :(得分:2)
而不是使用<xsl:number />
而不是
<xsl:value-of select="position()" />
position()
将在排序后返回所选节点集中节点的位置(而不是层次结构中节点的位置)。
答案 1 :(得分:1)
xsl:数字很好,但你需要当前位置。您还应该按数值排序:
<xsl:template match="images">
<xsl:for-each select="image">
<xsl:sort select="number(grade)"/>
<tr>
<td>
<xsl:number value="position()"/>
</td>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="grade"/>
</td>
</tr>
</xsl:for-each>
</xsl:template>