XML отсортированный список только определенных узлов - PullRequest
0 голосов
/ 17 марта 2019

У меня есть следующий XML-файл. Мне нужно распечатать список только выбранных узлов (Всего) в порядке возрастания. Я пытался использовать функцию sort , но были некоторые ошибки, которые я не смог идентифицировать, и он вернул все, включая значения других узлов в исходном файле.
Ввод XML:

<?xml version="1.0" encoding="UTF-8"?>
<Invoice>
    <From>
        <Name>Lucy</Name>
        <Country>UK</Country>
    </From>
    <To>
        <Name>John</Name>
        <Country>US</Country>
    </To>
    <Items>
        <Position>
            <Name>Table</Name>
            <Total>1</Total>
        </Position>
        <Position>
            <Name>Chair</Nr>
            <Total>4</Total>
        </Position>
        <Position>
            <Name>Cup</Name>
            <Total>5</Total>
        </Position>
        <Position>
            <Name>Box</Name>
            <Total>4</Total>
        </Position>     
    </Items>
</Invoice>

Как я могу получить требуемый вывод, используя? Любая помощь с благодарностью! Спасибо!

1 Ответ

0 голосов
/ 17 марта 2019

Один очевидный подход для генерации желаемого выхода из данного ввода будет использовать xsl:for-each, также используя xsl:sort:

<xsl:template match="/Invoice">
    <SortedTotalList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <xsl:for-each select="Positions/Position">
        <xsl:sort select="Total"/>
        <xsl:copy-of select="Total" />
      </xsl:for-each>
    </SortedTotalList>
</xsl:template>

Вывод:

<?xml version="1.0"?>
<SortedTotalList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Total>1</Total>
    <Total>4</Total>
    <Total>4</Total>
    <Total>5</Total>
</SortedTotalList>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...