XML 内の特定のノードとサブノードを属性別に並べ替えてグループ化する必要があります。
指定されたxml:
<Rechnung>
<somenodes />
<RechnungArtikelLieferinfos>
<RechnungArtikelLieferinfo InfoTypLangtext="Folgende Artikel sind vergriffen und leider nicht mehr nachlieferbar:" InfoTypKurztext="NICHT_NACHLIEFERBAR" InfoTyp="2">
<Artikelposition Absagekennzeichen="Allein im Rückstand" AbsagekennzeichenId="38" Artikeltyp="Beilage" ArtikeltypId="9" Zusatztextkennzeichen="" Zusatztext="" Bestellnummer="12345" Bestellmenge="1.00" Artikelbezeichnung="Angebotsblatt someone de" Katalogkennzeichen="99"/>
</RechnungArtikelLieferinfo>
<RechnungArtikelLieferinfo InfoTypLangtext="Folgende Artikel sind im Rückstand:" InfoTypKurztext="RÜCKSTAND" InfoTyp="3">
<Artikelposition Absagekennzeichen="Allein im Rückstand" AbsagekennzeichenId="38" Artikeltyp="Beilage" ArtikeltypId="9" Zusatztextkennzeichen="" Zusatztext="" Bestellnummer="12345" Bestellmenge="2.00" Artikelbezeichnung="Angebotsblatt someoneother de" Katalogkennzeichen="99"/>
</RechnungArtikelLieferinfo>
<RechnungArtikelLieferinfo InfoTypLangtext="Folgende Artikel sind vergriffen und leider nicht mehr nachlieferbar:" InfoTypKurztext="NICHT_NACHLIEFERBAR" InfoTyp="2">
<Artikelposition Absagekennzeichen="Allein im Rückstand" AbsagekennzeichenId="38" Artikeltyp="Beilage" ArtikeltypId="9" Zusatztextkennzeichen="" Zusatztext="" Bestellnummer="54321" Bestellmenge="2.00" Artikelbezeichnung="Angebotsblatt something de" Katalogkennzeichen="99"/>
</RechnungArtikelLieferinfo>
<RechnungArtikelLieferinfo InfoTypLangtext="Folgende Artikel sind im Rückstand:" InfoTypKurztext="NICHT_AUF_LAGER" InfoTyp="0">
<Artikelposition Absagekennzeichen="Allein im Rückstand" AbsagekennzeichenId="38" Artikeltyp="Beilage" ArtikeltypId="9" Zusatztextkennzeichen="" Zusatztext="" Bestellnummer="5555" Bestellmenge="1.00" Artikelbezeichnung="some article" Katalogkennzeichen="99"/>
</RechnungArtikelLieferinfo>
</RechnungArtikelLieferinfos>
<somemorenodes />
</Rechnung>
RechnungArtikelLieferinfo は、その属性 @Infotyp によってソートされます。同じ RechnungArtikelLieferinfo@Infotyp で、Artikelposition-Nodes をグループ化する必要があります (ここで意味を成しているといいのですが、英語は私の母国語ではありません)。
期待される結果:
<Rechnung>
<somenodes />
<RechnungArtikelLieferinfos>
<RechnungArtikelLieferinfo InfoTypLangtext="Folgende Artikel sind im Rückstand:" InfoTypKurztext="NICHT_AUF_LAGER" InfoTyp="0">
<Artikelposition Absagekennzeichen="Allein im Rückstand" AbsagekennzeichenId="38" Artikeltyp="Beilage" ArtikeltypId="9" Zusatztextkennzeichen="" Zusatztext="" Bestellnummer="5555" Bestellmenge="1.00" Artikelbezeichnung="some article" Katalogkennzeichen="99"/>
</RechnungArtikelLieferinfo>
<RechnungArtikelLieferinfo InfoTypLangtext="Folgende Artikel sind vergriffen und leider nicht mehr nachlieferbar:" InfoTypKurztext="NICHT_NACHLIEFERBAR" InfoTyp="2">
<Artikelposition Absagekennzeichen="Allein im Rückstand" AbsagekennzeichenId="38" Artikeltyp="Beilage" ArtikeltypId="9" Zusatztextkennzeichen="" Zusatztext="" Bestellnummer="12345" Bestellmenge="1.00" Artikelbezeichnung="Angebotsblatt someone de" Katalogkennzeichen="99"/>
<Artikelposition Absagekennzeichen="Allein im Rückstand" AbsagekennzeichenId="38" Artikeltyp="something" ArtikeltypId="9" Zusatztextkennzeichen="" Zusatztext="" Bestellnummer="54321" Bestellmenge="2.00" Artikelbezeichnung="Angebotsblatt something de" Katalogkennzeichen="99"/>
</RechnungArtikelLieferinfo>
<RechnungArtikelLieferinfo InfoTypLangtext="Folgende Artikel sind im Rückstand:" InfoTypKurztext="RÜCKSTAND" InfoTyp="3">
<Artikelposition Absagekennzeichen="Allein im Rückstand" AbsagekennzeichenId="38" Artikeltyp="Beilage" ArtikeltypId="9" Zusatztextkennzeichen="" Zusatztext="" Bestellnummer="44444" Bestellmenge="2.00" Artikelbezeichnung="Angebotsblatt someoneother de" Katalogkennzeichen="99"/>
</RechnungArtikelLieferinfo>
</RechnungArtikelLieferinfos>
<somemorenodes />
</Rechnung>
私は XSL(T) に不慣れで、これに関するかなりのドキュメントを読みました。これを行う最善の方法は、XSLT 2.0 とそのグループ化オプション (for-each-group) を使用することだと思いますが、読み終わった後はやや混乱し、以前よりも混乱しています。特に、すべてのチュートリアルでは、構造を再構築する必要があると想定しているため、ノードと子を変更せずに移動するだけです。
事前にご協力いただきありがとうございます。