自定义XML排序顺序?

自定义XML排序顺序?,xml,sorting,xslt,Xml,Sorting,Xslt,我有一个xml文件,比如 <tests> <test> <categoryname>A</categoryname> <region>EU</region> </test> <test> <categoryname>B</categoryname> <region>EU</

我有一个xml文件,比如

<tests>
     <test>
       <categoryname>A</categoryname>
       <region>EU</region>
     </test>

     <test>
       <categoryname>B</categoryname>
       <region>EU</region>
     </test>

     <test>
       <categoryname>C</categoryname>
       <region>USA</region>
     </test>
     <test>
       <categoryname>C</categoryname>
       <region>EU</region>
     </test>
</tests>
但我希望在自定义排序时看到它,如:

C
A
B
我见过类似的问题,并为我应用了给定的答案(xsl代码),但不幸的是没有帮助,如果您能帮助我,我将非常高兴! 我可以添加额外的属性/标签/值等。

这是怎么回事:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>

  <xsl:template match="@* | node()">
    <xsl:copy>
      <xsl:apply-templates select="@* | node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="/*">
    <xsl:copy>
      <xsl:apply-templates select="test">
        <xsl:sort select="string-length(substring-before('|C|A|B|', 
                                                         concat('|', categoryname, '|')
                                                        ))"
                  data-type="number"/>
      </xsl:apply-templates>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

应用于示例输入时,结果为:

<tests>
  <test>
    <categoryname>C</categoryname>
    <region>USA</region>
  </test>
  <test>
    <categoryname>C</categoryname>
    <region>EU</region>
  </test>
  <test>
    <categoryname>A</categoryname>
    <region>EU</region>
  </test>
  <test>
    <categoryname>B</categoryname>
    <region>EU</region>
  </test>
</tests>

C
美国
C
欧盟
A.
欧盟
B
欧盟

我尝试了您的解决方案,但它在我的解决方案上有效,因为我的文件正在被传送到另一个大报告文件,该文件是用BIRT设计的,具有许多功能和650行代码:(尽管如此,谢谢!好的,你能告诉我们你的XSLT中执行排序的部分吗?应该可以使用上述方法对其进行修改。没有任何其他XSLT,我添加的唯一XSLT是你的,我尝试将其添加到大xml文件中,但没有被接受,显然我需要更多的xml实践…f第一行3行:
EclipseBirt Designer版本2.6.0.v20100531 Build 2.6.0.v20100609-1613>
从这段简短的代码片段中,我可以看出它使用了一个名称空间,这是一个重要的因素,但我认为这还不足以帮助您。在您上面的问题文本中,您能否提供足够的源XML来说明这一点要排序的项目与包含的文档相对的位置,以及应该使用哪些值进行排序?这是否有帮助?这就是大xml文件如何连接到我在上面创建和呈现的文件;
tests.xml
我应该向这个tests.xml添加什么,以便显示categorynames按照我喜欢的顺序?
<tests>
  <test>
    <categoryname>C</categoryname>
    <region>USA</region>
  </test>
  <test>
    <categoryname>C</categoryname>
    <region>EU</region>
  </test>
  <test>
    <categoryname>A</categoryname>
    <region>EU</region>
  </test>
  <test>
    <categoryname>B</categoryname>
    <region>EU</region>
  </test>
</tests>