Convierta el formato en línea OOXML a un elemento combinado

En OOXML, el formato como negrita, cursiva, etc. puede dividirse (y a menudo es molesto) entre varios elementos, de esta manera:

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

Necesito combinar estos elementos de formato para producir esto:

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

Mi enfoque inicial iba a ser escribir la etiqueta de formato de inicio cuando se encuentra por primera vez usando:

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

Y luego, después de procesar cada<w:r>, verifique el siguiente para ver si el formato todavía está presente. Si no es así, agregue la etiqueta final de la misma manera que agrego la etiqueta de inicio. Sigo pensando que debe haber una mejor manera de hacer esto, y agradecería cualquier sugerencia.

También debería mencionar que estoy vinculado a XSLT 1.0.

La razón para necesitar esto es que necesitamos comparar un archivo XML antes de que se transforme en OOXML, y después de que se transforme fuera de OOXML. Las etiquetas de formato adicionales hacen que parezca que se hicieron cambios cuando no se hicieron.

Respuestas a la pregunta(4)

Su respuesta a la pregunta