按属性排序的 XML

标签 xml

我用谷歌搜索并试图找到这个问题的答案,但似乎没有一个解决方案有效。 我有以下 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>

循环有效并拉出每个参与者,但排序顺序有一个奇怪的效果,它会切换位置但不一定将它们排序为正确的顺序。

谁能指出我正确的方向。

顺便说一句,上面的代码是我的代码的精简版本,并且带有虚拟数据,因为实际文件更大更复杂。

提前致谢

约翰

最佳答案

我认为这可能是因为它将值作为字符串进行排序。您是否尝试过以下方法?

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

关于按属性排序的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8393565/

相关文章:

jquery - 使用 jquery 按索引删除 XML 节点并写回文件

PHP - XML 到 MySQL

java - 从代码更改布局的背景颜色

java - 无法解析 org.xml.sax.SAXParseException : cvc-elt. 1:找不到元素 'soapenv:Envelope' 的声明

java - 如何使用 TextMessage 将 XML 文件发送到 JMS 队列?

c# - 从 Azure 服务管理 API 返回的 XML 中提取值

sql - 连接分组的行

php - 检索和解析与 MySQL 结果相关的 XML 记录

sql-server - 从 mssql 中具有特定根节点的表中查找 XML 记录

java - 使用任意 xml 文件验证 xml