powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Сортировка XSLT
6 сообщений из 6, страница 1 из 1
Сортировка XSLT
    #38431961
Pretty_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер, уважаемы форумчане!
Необходима Ваша помощь. В XML документе необходимо произвести сортировку линий по полю EAN. Поля должны выводиться в заданном порядке. Всего таких линий в документе может быть 7. Заранее благодарю за помощь
<Order-Lines>
<Line>
<Line-Item>
<LineNumber>1</LineNumber>
<EAN>4607012371607</EAN>
<BuyerItemCode>1111</BuyerItemCode>
<SupplierItemCode>11111</SupplierItemCode>
<ItemDescription>Продукт1</ItemDescription>
<SupplierItemDescription>Продукт1</SupplierItemDescription>
<OrderedQuantity>12</OrderedQuantity>
<OrderedUnitPacksize>1.000</OrderedUnitPacksize>
<BuyerUnitPacksize>16.000</BuyerUnitPacksize>
<UnitOfMeasure>PCE</UnitOfMeasure>
<SupplierUnitOfMeasure>PCE</SupplierUnitOfMeasure>
<OrderedUnitNetPrice>17.7700</OrderedUnitNetPrice>
<OrderedNetAmount>852.9600</OrderedNetAmount>
<OrderedTaxAmount>85.2960</OrderedTaxAmount>
<TaxRate>10.00</TaxRate>
</Line-Item>
<Line-Delivery>
<SellerLocationCode>0</SellerLocationCode>
</Line-Delivery>
<Line-Control>
<EanCatalog>RS</EanCatalog>
<SupplierItemCodeCatalog>RS</SupplierItemCodeCatalog>
</Line-Control>
</Line>
<Line>
<Line-Item>
<LineNumber>2</LineNumber>
<EAN>4607012372680</EAN>
<BuyerItemCode>22222</BuyerItemCode>
<SupplierItemCode>222222</SupplierItemCode>
<ItemDescription>Продукт 2</ItemDescription>
<SupplierItemDescription>Продукт 2</SupplierItemDescription>
<OrderedQuantity>30.000</OrderedQuantity>
<OrderedUnitPacksize>1.000</OrderedUnitPacksize>
<BuyerUnitPacksize>2.000</BuyerUnitPacksize>
<UnitOfMeasure>PCE</UnitOfMeasure>
<SupplierUnitOfMeasure>PCE</SupplierUnitOfMeasure>
<OrderedUnitNetPrice>9.9500</OrderedUnitNetPrice>
<OrderedNetAmount>298.5000</OrderedNetAmount>
<OrderedTaxAmount>29.8500</OrderedTaxAmount>
<TaxRate>10.00</TaxRate>
</Line-Item>
<Line-Delivery>
<SellerLocationCode>0</SellerLocationCode>
</Line-Delivery>
<Line-Control>
<EanCatalog>RS</EanCatalog>
<SupplierItemCodeCatalog>RS</SupplierItemCodeCatalog>
</Line-Control>
</Line>
...
Рейтинг: 0 / 0
Сортировка XSLT
    #38432015
Pretty_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовала вот так,для каждой линии
<xsl:template mode="ORDER" match="Line-Item">
<Line>
<xsl:if test="EAN=4607135600011">
<Line-Item>
<xsl:copy-of select="LineNumber"/>
<xsl:copy-of select="EAN"/>
<xsl:if test="BuyerItemCode">
<xsl:copy-of select="BuyerItemCode"/>
</xsl:if>
<SupplierItemCode>
<xsl:choose>
<xsl:when test="SupplierItemCode!=''">
<xsl:value-of select="SupplierItemCode"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="BuyerItemCode"/>
</xsl:otherwise>
</xsl:choose>
</SupplierItemCode>
<xsl:copy-of select="ItemDescription"/>
<xsl:copy-of select="ItemType"/>
<xsl:copy-of select="OrderedQuantity"/>
<xsl:copy-of select="OrderedUnitPacksize"/>
<xsl:copy-of select="UnitOfMeasure"/>
<UnitCodeDigital>
<xsl:value-of select="'796'"/>
</UnitCodeDigital>
<xsl:copy-of select="OrderedUnitNetPrice"/>
<xsl:copy-of select="OrderedNetAmount"/>
<xsl:copy-of select="OrderedTaxAmount"/>
<xsl:copy-of select="TaxRate"/>
<xsl:copy-of select="OrderedUnitGrossPrice"/>
<xsl:copy-of select="OrderedOrderedNetAmount"/>
<xsl:copy-of select="OrderedGrossAmount"/>
</Line-Item>
</xsl:if>

</Line>
</xsl:template>
...
Рейтинг: 0 / 0
Сортировка XSLT
    #38432171
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pretty_meВ XML документе необходимо произвести сортировку линий по полю EAN.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
  <xsl:template match="/">
    <xsl:apply-templates select="//Line">
      <xsl:sort select="Line-Item/EAN" data-type="number"/>
    </xsl:apply-templates>
  </xsl:template>

  <xsl:template match="Line">
    <xsl:copy-of select="."/>
  </xsl:template>



Не?
...
Рейтинг: 0 / 0
Сортировка XSLT
    #38432183
Pretty_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvik, нужно именно сравнивать значение поля EAN. Т.е. линия в которой EAN=4607135600011 должна выводиться первой,
2 4607135600010
3 4607135600035
4 4607135600028
5 4607135600127
6 4607135600134
7 4607135600141
В исходном документе они могут быть в любом порядке
...
Рейтинг: 0 / 0
Сортировка XSLT
    #38432189
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pretty_mepetalvik, нужно именно сравнивать значение поля EAN. Т.е. линия в которой EAN=4607135600011 должна выводиться первой,
2 4607135600010
3 4607135600035
4 4607135600028
5 4607135600127
6 4607135600134
7 4607135600141
В исходном документе они могут быть в любом порядке

Угу, вот только в xml, который в самом первом сообщении, нет таких значений.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  <xsl:template match="/">
    <xsl:apply-templates select="//Line[Line-Item/EAN=4607135600011]"/>
    <xsl:apply-templates select="//Line[Line-Item/EAN=4607135600010]"/>
    <xsl:apply-templates select="//Line[Line-Item/EAN=4607135600035]"/>
    <xsl:apply-templates select="//Line[Line-Item/EAN=4607135600028]"/>
    <xsl:apply-templates select="//Line[Line-Item/EAN=4607135600127]"/>
    <xsl:apply-templates select="//Line[Line-Item/EAN=4607135600134]"/>
    <xsl:apply-templates select="//Line[Line-Item/EAN=4607135600141]"/>
  </xsl:template>

  <xsl:template match="Line">
    <xsl:copy-of select="."/>
  </xsl:template>
...
Рейтинг: 0 / 0
Сортировка XSLT
    #38432932
Pretty_me
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
petalvik, Спасибо,это то,что нужно!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Сортировка XSLT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]