在XML模式中重新排列全局元素

在XML模式中重新排列全局元素,xml,schema,xsd,Xml,Schema,Xsd,我有各种XML模式,其中包含许多全局元素,如下所示: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="B"> ... </xs:element> <xs:element name="C"> ...

我有各种XML模式,其中包含许多全局元素,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="B">
        ...
    </xs:element>
    <xs:element name="C">
        ...
    </xs:element>
    <xs:element name="X">
        ...
    </xs:element>
    <xs:element name="F">
        ...
    </xs:element>
    <xs:element name="A">
        ...
    </xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A">
        ...
    </xs:element>
    <xs:element name="B">
        ...
    </xs:element>
    <xs:element name="C">
        ...
    </xs:element>
    <xs:element name="F">
        ...
    </xs:element>
    <xs:element name="X">
        ...
    </xs:element>
</xs:schema>

...
...
...
...
...
有没有免费的工具可以根据元素名称按字母顺序排序?这样比较和合并模式就更容易了。结果应该如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="B">
        ...
    </xs:element>
    <xs:element name="C">
        ...
    </xs:element>
    <xs:element name="X">
        ...
    </xs:element>
    <xs:element name="F">
        ...
    </xs:element>
    <xs:element name="A">
        ...
    </xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="A">
        ...
    </xs:element>
    <xs:element name="B">
        ...
    </xs:element>
    <xs:element name="C">
        ...
    </xs:element>
    <xs:element name="F">
        ...
    </xs:element>
    <xs:element name="X">
        ...
    </xs:element>
</xs:schema>

...
...
...
...
...

一种简单的方法是编写XSLT样式表,在模式文档上执行近似标识转换,并在适当的应用模板上进行排序。有许多免费的XSLT实现。

我想到了另一种实现方法:

通过DOM导入XML,重新排列根节点下的节点,然后将其写回XML文件