我必须通过属性对我的 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),但在阅读完所有内容后我有些迷茫并且比以前更加困惑。特别是因为所有教程都假设您必须重建结构,而我只需移动节点和子节点而不更改它们。
提前感谢您的帮助。