xslt aplanando elementos secundarios en un DocBook para elemento

Estoy transformando algunos DocBook xml generados (de Doxygen) en mis empresas xml, que en realidad es un subconjunto de DocBook. Hay un elemento para como el siguiente:

<para>some text.....
   <literallayout>
   </literallayout>
 more text....
 <table>
   ...
 </table>
 even more text
<table>...</table>
<literallayout>text also look here</literlayout>
more text <link xlink:href="http://someurl.com">
</para>

Como a nuestro subconjunto de docbook NO le gustan los elementos de bloque dentro de un para, como tabla o figura, me gustaría analizar este elemento y colocar nuevos elementos para en torno a esos fragmentos de texto, para que tenga algo como esto:

<para>some text.....
</para>
   <literallayout>
   </literallayout>
 <para>
  more text....
 </para>
 <table>
   ...
 </table>
 <para>
 even more text
 </para>
<table>...</table>
<literallayout>text also look here </literlayout>
 <para> more text</para>
 <para> <link xlink:href="http://someurl.com"></para>

Anteriormente, pensando que nunca vería nada tan complejo, estaba colocando tablas fuera de un elemento para como este:

<xsl:when test="( child::figure | child::table ) and (./text())">
    <Para>
        <xsl:value-of select="./text()"/>
    </Para>
    <xsl:apply-templates select="*"/>
</xsl:when>

Pero eso solo terminó atrapando el primer nodo de texto y desordenando otras cosas.

¿Alguien puede sugerir, esperemos que sea una forma elegante de manejar esto, si los elementos para son tan desordenados?

Gracias,

Russ

Actualización: me olvidé de presentar un caso de esquina. He editado la fuente original arriba verifica el elemento de enlace. La solución actual elimina el elemento para que contiene de la fuente.

Respuestas a la pregunta(3)

Su respuesta a la pregunta