XSLT - Tricky Transformation

Estou tendo problemas com uma transformação XSLT de fragmentos XML. O XML de origem é semelhante a:

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

Mas precisa ser transformado em:

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

A regra é simples, o elemento MMM só pode ter dois nós de elemento filho. Se apenas um desses nós for outro MMM, ele precisará ocupar a primeira posição.

É fácil usar código, mas esses fragmentos XML são valores para colunas XML em um banco de dados SQL, e eu quero usar o SQL juntamente com o XSLT para atualizar esses valores.

Qualquer ponteiro ou sugestão?

questionAnswers(1)

yourAnswerToTheQuestion