У меня есть следующая упрощенная структура XML:
<?xml version="1.0" encoding="UTF-8" ?>
<INVOIC02>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
</EDI_DC40>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718221</IDTNR>
<KTEXT>Orange</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>Z03</QUALF>
<IDTNR>7610400013079</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718160</IDTNR>
<KTEXT>Pistache</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400181600</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718228</IDTNR>
<KTEXT>Strawberry</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400182287</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718221</IDTNR>
<KTEXT>Orange</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400182218</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718160</IDTNR>
<KTEXT>Pistache</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400181600</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718228</IDTNR>
<KTEXT>Strawberry</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400182287</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDS01 SEGMENT="1">
<SUMID>001</SUMID>
<SUMME>6</SUMME>
</E1EDS01>
</IDOC>
</INVOIC02>
Мне нужно отсортировать сегменты <E1EDP01 SEGMENT="1">
по их номеру <IDTNR>
с помощью QUALF = '002'
Итак, я пришелс этим XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="IDOC">
<xsl:apply-templates>
<xsl:sort select="E1EDP19[QUALF='002']/IDTNR"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>
Но в моем выводе сегменты <E1EDP01>
отсортированы, но помещены в конец моей структуры:
<?xml version="1.0" encoding="UTF-8"?>
<INVOIC02>
<EDI_DC40 SEGMENT="1">
<TABNAM>EDI_DC40</TABNAM>
</EDI_DC40>
<E1EDS01 SEGMENT="1">
<SUMID>001</SUMID>
<SUMME>6</SUMME>
</E1EDS01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718160</IDTNR>
<KTEXT>Pistache</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400181600</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718160</IDTNR>
<KTEXT>Pistache</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400181600</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718221</IDTNR>
<KTEXT>Orange</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>Z03</QUALF>
<IDTNR>7610400013079</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718221</IDTNR>
<KTEXT>Orange</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400182218</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718228</IDTNR>
<KTEXT>Strawberry</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400182287</IDTNR>
</E1EDP19>
</E1EDP01>
<E1EDP01 SEGMENT="1">
<MENGE>1.000</MENGE>
<E1EDP19 SEGMENT="1">
<QUALF>002</QUALF>
<IDTNR>000000000000718228</IDTNR>
<KTEXT>Strawberry</KTEXT>
</E1EDP19>
<E1EDP19 SEGMENT="1">
<QUALF>003</QUALF>
<IDTNR>7610400182287</IDTNR>
</E1EDP19>
</E1EDP01>
</INVOIC02>
Сегмент <E1EDS01>
находится перед отсортированными сегментами, но должен быть в конце.Это почему?Может кто-нибудь дать мне объяснение?Спасибо за вашу помощь и наилучшие пожелания, Питер