XSLT - Tricky Transformation

Mam problem z transformacją XSLT fragmentów XML. Źródłowy XML wygląda tak:

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

Ale trzeba to przekształcić w:

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

Zasada jest prosta, element MMM może mieć tylko dwa węzły elementu podrzędnego. Jeśli tylko jeden z tych węzłów stanie się innym MMM, musi zająć pierwszą pozycję.

Łatwo jest używać kodu, ale te fragmenty XML są wartościami dla kolumn XML w bazie danych SQL i chcę używać SQL wraz z XSLT do aktualizacji tych wartości.

Wszelkie wskazówki lub sugestie?

questionAnswers(1)

yourAnswerToTheQuestion