XSLT: Sorting nodes by attribute and grouping child
===

I have to sort and group a certain node and subnodes in my xml by an attribute

given 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 is to be sorted by its attribute @Infotyp. On the same RechnungArtikelLieferinfo@Infotyp the Artikelposition-Nodes should be grouped (I hope I'm nmaking sense here, english is not my first language)

expected result:

    <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>

I am new to XSL(T) and read quiet some documentation about this. I guess the best way to do this would be using XSLT 2.0 with its grouping options (for-each-group), but I'm somewhat lost after all that reading and more confused than before. Especially as all tutorials assume that you have to reconstruct the structure and I just have to move nodes and childs around without changing them.

Thanks for your help in advance.