php transformToXML方法忽略排序

php transformToXML方法忽略排序,php,sorting,xslt,Php,Sorting,Xslt,我搜索了好几天,但找不到解决方案。我使用php的XSLTProcessor方法输出由xsl文件转换的xml文件 除了xsl文件中的排序函数外,其他所有功能都工作得很好 (为了进行测试,我在xml文件中添加了xsl文件路径,并直接在Firefox中打开它:结果按@name属性进行了很好的排序,但通过php转换,结果却不是这样) 以下是一段代码片段: XML文件 <?xml version="1.0" encoding="utf-8"?> <user> <clien

我搜索了好几天,但找不到解决方案。我使用php的XSLTProcessor方法输出由xsl文件转换的xml文件

除了xsl文件中的排序函数外,其他所有功能都工作得很好

(为了进行测试,我在xml文件中添加了xsl文件路径,并直接在Firefox中打开它:结果按@name属性进行了很好的排序,但通过php转换,结果却不是这样)

以下是一段代码片段:

XML文件

<?xml version="1.0" encoding="utf-8"?>
<user>
  <clients>
    <c name="A_client" id="1" generated="2013-04-17" p_count="1"/>
    <c name="B_client" id="2" generated="2013-04-25" p_count="0"/>
    <c name="C_client" id="3" generated="2013-04-26 23:35" p_count="0"/>
  </clients>
</user>

是的,这是对的——但是当xml代码变得更详细时,输出会以一种奇怪的方式排序

使用此xml文件:

<?xml version="1.0" encoding="utf-8"?>
<user>
  <clients>
    <c name="C_client" id="3" generated="2013-04-26 23:35" p_count="0"/>    
    <c name="B_client" id="2" generated="2013-04-25" p_count="0"/>
    <c name="cone" id="1" generated="2013-04-17" p_count="1"/>
    <c name="c_two" id="1" generated="2013-04-17" p_count="1"/>
    <c name="cthree" id="1" generated="2013-04-17" p_count="1"/>
    <c name="Hoff" id="1" generated="2013-04-17" p_count="1"/>
    <c name="Nimu" id="1" generated="2013-04-17" p_count="1"/>
    <c name="Xing" id="1" generated="2013-04-17" p_count="1"/>
    <c name="Whatever" id="1" generated="2013-04-17" p_count="1"/>
  </clients>
</user>
在浏览器中直接打开xml文件时(添加了xsl文件路径)

(编辑)

我不知道发布我的libxslt版本是否有帮助,但如果有帮助,请点击这里:
1.1.24使用libxslt 1.1.25,您可以使用
xsl:sort
lang
属性,该属性在大多数操作系统上都可以执行您想要的操作

对于libxslt1.1.24,您应该按照字符串的小写版本进行排序。不幸的是,XPath 1.0中没有小写的
函数。您所能做的就是使用
translate
并手动指定字符集。使用纯ASCII,以下功能可以正常工作:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="user">
    <ul class="topiclist">
      <xsl:for-each select="clients/c">
        <xsl:sort select="translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')" lang="de"/>
        <li class="round_corner_3"><xsl:value-of select="@name"/></li>
      </xsl:for-each>
    </ul>
  </xsl:template>
</xsl:stylesheet>


对我来说,工作正常。
<?xml version="1.0" encoding="utf-8"?>
<user>
  <clients>
    <c name="C_client" id="3" generated="2013-04-26 23:35" p_count="0"/>    
    <c name="B_client" id="2" generated="2013-04-25" p_count="0"/>
    <c name="cone" id="1" generated="2013-04-17" p_count="1"/>
    <c name="c_two" id="1" generated="2013-04-17" p_count="1"/>
    <c name="cthree" id="1" generated="2013-04-17" p_count="1"/>
    <c name="Hoff" id="1" generated="2013-04-17" p_count="1"/>
    <c name="Nimu" id="1" generated="2013-04-17" p_count="1"/>
    <c name="Xing" id="1" generated="2013-04-17" p_count="1"/>
    <c name="Whatever" id="1" generated="2013-04-17" p_count="1"/>
  </clients>
</user>
B_client
C_client
Hoff
Nimu
Whatever
Xing
c_two
cone
cthree
B_client
C_client
c_two
cone
cthree
Hoff
Nimu
Whatever
Xing
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>
  <xsl:template match="user">
    <ul class="topiclist">
      <xsl:for-each select="clients/c">
        <xsl:sort select="translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')" lang="de"/>
        <li class="round_corner_3"><xsl:value-of select="@name"/></li>
      </xsl:for-each>
    </ul>
  </xsl:template>
</xsl:stylesheet>