xslt achatando elementos filho em um elemento DocBook para

Eu estou transformando alguns xml DocBook gerado (de Doxygen) para minhas empresas xml que é realmente um subconjunto do DocBook. Existe um elemento para como o seguinte:

<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 o nosso subconjunto de docbook NÃO gosta de elementos de bloco dentro de um para, como tabela ou figura, gostaria de analisar este elemento e colocar novos elementos para em torno desses pedaços de texto, para que eu teria algo como isto:

<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 veria nada desse complexo, eu estava colocando tabelas fora de um 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>

Mas isso acabou pegando apenas o primeiro nó de texto e bagunçando outras coisas.

Alguém pode sugerir, esperançosamente, uma maneira elegante de lidar com isso, se os elementos para são tão confusos?

Obrigado,

Russ

Atualização: eu negligenciei a introdução de um caso de canto. Eu editei a fonte original acima e verifique o elemento link. A solução atual remove o elemento para contendo da origem.

questionAnswers(3)

yourAnswerToTheQuestion