XSLT - Tricky Transformation

Ich habe Probleme mit einer XSLT-Transformation von XML-Fragmenten. Das Quell-XML sieht folgendermaßen aus:

<XXX>
    <Name>Sample</Name>
    <MMM>
        <AAA ID="A"/>
        <MMM>
            <BBB ID="B"/>
            <MMM>
                <AA ID="C"/>
                <BB ID="D"/>
            </MMM>
        </MMM>
    </MMM>
</XXX>

Aber es muss umgewandelt werden in:

<XXX>
    <Name>Sample</Name>
    <MMM>
        <MMM>
            <MMM>
                <AAA ID="A"/>
                <BBB ID="B"/>
            </MMM>
            <AA ID="C"/>            
        </MMM>
        <BB ID="D"/>
    </MMM>
</XXX>

Die Regel ist einfach: Das MMM-Element kann nur zwei untergeordnete Elementknoten haben. Wenn nur einer dieser Knoten ein anderer MMM ist, muss er die erste Position einnehmen.

Es ist einfach, Code zu verwenden, aber diese XML-Fragmente sind Werte für XML-Spalten in einer SQL-Datenbank, und ich möchte SQL zusammen mit XSLT verwenden, um diese Werte zu aktualisieren.

Irgendwelche Hinweise oder Vorschläge?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage