Converter a formatação em linha OOXML para um elemento mesclado

No OOXML, formatação como negrito, itálico etc. pode ser (e geralmente é irritantemente) dividida entre vários elementos, da seguinte forma:

<w:p>
    <w:r>
        <w:rPr>
            <w:b/>
         </w:rPr>
         <w:t xml:space="preserve">This is a </w:t>
    </w:r>
    <w:r>
        <w:rPr>
            <w:b/>
        </w:rPr>
        <w:t xml:space="preserve">bold </w:t>
    </w:r>
    <w:r>
        <w:rPr>
            <w:b/>
            <w:i/>
        </w:rPr>
        <w:t>with a bit of italic</w:t>
    </w:r>
    <w:r>
        <w:rPr>
            <w:b/>
        </w:rPr>
        <w:t xml:space="preserve"> </w:t>
    </w:r>
    <w:r>
        <w:rPr>
            <w:b/>
        </w:rPr>
        <w:t>paragr</w:t>
    </w:r>
    <w:r>
        <w:rPr>
            <w:b/>
        </w:rPr>
        <w:t>a</w:t>
    </w:r>
    <w:r>
        <w:rPr>
            <w:b/>
        </w:rPr>
        <w:t>ph</w:t>
    </w:r>
    <w:r>
        <w:t xml:space="preserve"> with some non-bold in it too.</w:t>
    </w:r>
</w:p>

Preciso combinar esses elementos de formatação para produzir isso:

<p><b>This is a mostly bold <i>with a bit of italic</i> paragraph</b> with some non-bold in it too.</p>

Minha abordagem inicial seria escrever a tag de formatação inicial quando for encontrada pela primeira vez usando:

 <xsl:text disable-output-escaping="yes">&lt;b&gt;</xsl:text>

E depois que eu processar cada<w:r>, verifique o próximo para ver se a formatação ainda está presente. Caso contrário, adicione a tag final da mesma forma que adiciono a tag start. Continuo pensando que deve haver uma maneira melhor de fazer isso e ficaria grato por todas as sugestõe

Deve mencionar também que estou vinculado ao XSLT 1.

O motivo dessa necessidade é que precisamos comparar um arquivo XML antes de ser transformado em OOXML e depois de ser transformado em OOXML. As tags de formatação extras fazem parecer que foram feitas alterações quando não era

questionAnswers(4)

yourAnswerToTheQuestion