Как сделать сортировку из документа с помощью xslt? - PullRequest
0 голосов
/ 20 февраля 2012

ниже document_1.xml

<products>
    <product>
        <name>Pen</name>
        <Quantity>30</Quantity>
    </product> 
    <product>
        <name>Pencil</name>
        <Quantity>20</Quantity>
    </product>
    <product>
        <name>Bag</name>
        <Quantity>25</Quantity>
    </product>
</products>

и document_2.xml - это

<products>
    <product>
        <name>Pen</name>
        <Quantity>10</Quantity>
    </product> 
    <product>
        <name>Pencil</name>
        <Quantity>5</Quantity>
    </product>
    <product>
        <name>Bag</name>
        <Quantity>2</Quantity>
    </product>
</products>

и document.xml - это

<products>
</products>

Ниже мой xsl, я имел обыкновение соединять document_1.xml и document_2.xml с document.xml

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

<xsl:template match="/products">
<xsl:copy>
<xsl:apply-templates select="document('document_1.xml')/*/product"/>
<xsl:apply-templates select="document('document_2.xml')/*/product"/>
</xsl:copy>
</xsl:template>

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

</xsl:stylesheet>

Мне нужен вывод, как показано ниже

  1. Сортировать по количеству ASC

    <products>
        <product>
            <name>Bag</name>
            <Quantity>2</Quantity>
        </product>
        <product>
            <name>Pencil</name>
            <Quantity>5</Quantity>
        </product>
        <product>
            <name>Pen</name>
            <Quantity>10</Quantity>
        </product>
        <product>
            <name>Pencil</name>
            <Quantity>20</Quantity>
        </product>
        <product>
            <name>Bag</name>
            <Quantity>25</Quantity>
        </product>
        <product>
            <name>Pen</name>
            <Quantity>30</Quantity>
        </product> 
    

1 Ответ

1 голос
/ 20 февраля 2012

есть тег xsl:sort, но его можно использовать только внутри цикла xsl:for-each - например,

<xsl:for-each select="document('document_1.xml')/*/product|document('document_2.xml')/*/product">
  <xsl:sort select="Quantity" data-type="number" />
  ...
</xsl:for-each>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...