#xml #xslt
#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. Можете ли вы показать, что вы пробовали?
2. Ожидаемый результат не выглядит «отсортированным на основе его атрибута». Пожалуйста, объясните логику, которая должна быть применена здесь.
Ответ №1:
Найдено ниже 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>
Комментарии:
1. Это не приводит к ожидаемому результату: xsltfiddle. liberty-development.net/pNvtBG9
2. И это все еще отличается от результата, полученного вашим кодом.
3. Я не знаю решения проблемы, которую я не понимаю. Я попросил вас объяснить логику, но вы этого не сделали.
4. ОК. может быть, я объясню подробно. выше xsl предоставил отсортированные выходные данные в консоли разработки Chrome, и я могу с этим смириться. в ответ добавлен скриншот инструмента разработки.