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.