Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML按属性排序_Xml - Fatal编程技术网

XML按属性排序

XML按属性排序,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>

我在谷歌上四处搜索,试图找到答案,但似乎没有一个解决方案奏效。 我有以下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>
  • ()
循环工作并拉出每个参与者,但排序顺序有一种奇怪的效果,它会切换位置,但不一定会将它们按正确的顺序排序

谁能给我指一下正确的方向吗

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

提前谢谢


John

我认为这可能是因为它将值排序为字符串。你试过以下方法吗

 <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>
  • ()

我知道没有任何正式的规则,但大多数人倾向于使用子元素作为实际数据,只有元数据(应该很少)应该存储为属性(尽管我不确定这样更改结构是否会帮助或阻碍您当前的问题)克里斯-谢谢,我同意您的看法,不幸的是,我从外部来源获取数据,因此无法控制它。不过还是要谢谢你,谢谢你。当然是这样。当我四处阅读时,我还没有看到那种“数据类型”。