我在谷歌上到处搜索,试图找到这个问题的答案,但似乎没有一个解决方案有效。我有以下xml模式:
<xml>
<race>
<particpant time="3.25" name="joe blogs">
<particpant time="1.15" name="john Doe">
<particpant time="2.0" name="A random">
</race>
</xml>然后,我尝试在xslt中进行以下转换:
<ul>
<xsl:for-each select="participant">
<xsl:sort order="ascending" select="@time"/>
<li> <xsl:value-of select="@name"/> (<xsl:value-of select="@time"/>)</li>
</xsl:for-each>
</ul>循环工作并拉出每个参与者,但排序顺序有一个奇怪的效果,它交换位置,但不一定按正确的顺序排序。
谁能给我指个正确的方向。
顺便说一句,上面的代码是我的代码的一个精简版本,带有虚拟数据,因为实际文件更大更复杂。
提前感谢
约翰
发布于 2011-12-06 07:53:38
我认为这可能是因为它对值进行了排序,就像它们是字符串一样。你有没有尝试过下面的方法?
<ul>
<xsl:for-each select="participant">
<xsl:sort data-type="number" order="ascending" select="@time"/>
<li> <xsl:value-of select="@name"/> (<xsl:value-of select="@time"/>)</li>
</xsl:for-each>
</ul>https://stackoverflow.com/questions/8393565
复制相似问题