使用属性对xml元素进行排序

时间:2020-10-24 11:16:32

标签: xml xslt

我下面有XML,需要根据其属性进行排序

<?xml version='1.0' encoding='UTF-8'?>
<metadata xmlns:ame="http://www.abcd.com/ame/md">
    <logicalModel>
        <tables>
            <table ame:include="md/logical/tables/SS_PA_BROKER_EIOPA_CODE.md"/>
            <table ame:include="md/logical/tables/SS_XX_SOURCE_SYSTEM.md"/>
            <table ame:include="md/logical/tables/GL_XX_COUNTRY_CODE.md"/>
            <table ame:include="md/logical/tables/SS_PA_SOURCE_PRODUCT.md"/>
        </tables>
    </logicalModel>
</metadata>

尝试使用xsl,但无法这样做。 预期输出是

<?xml version='1.0' encoding='UTF-8'?>
<metadata xmlns:ame="http://www.abcd.com/ame/md">
    <logicalModel>
        <tables>
            <table ame:include="md/logical/tables/GL_XX_COUNTRY_CODE.md"/>
            <table ame:include="md/logical/tables/SS_PA_BROKER_EIOPA_CODE.md"/>
            <table ame:include="md/logical/tables/SS_XX_SOURCE_SYSTEM.md"/>
            <table ame:include="md/logical/tables/SS_PA_SOURCE_PRODUCT.md"/>
        </tables>
    </logicalModel>
</metadata>

1 个答案:

答案 0 :(得分:0)

在xsl下找到,可以按预期对整个xml树进行排序

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

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

enter image description here enter image description here

相关问题