xslt spłaszczanie elementów potomnych w elemencie para DocBook

Przekształcam wygenerowany xml DocBook (z Doxygen) w mój xml firmy, który jest naprawdę podzbiorem DocBook. Istnieje element para taki jak poniżej:

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

Ponieważ nasz podzbiór docbook NIE lubi elementów blokowych w obrębie par, takich jak tabela lub figura, chciałbym przeanalizować ten element i umieścić nowe elementy para wokół tych fragmentów tekstu, tak aby mieć coś takiego:

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

Wcześniej myśląc, że nigdy nie zobaczę niczego tak skomplikowanego, umieszczałem tabele poza elementem para takim jak ten:

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

Ale to skończyło się tylko na wyłapaniu pierwszego węzła tekstowego i zakłóceniu innych rzeczy.

Czy ktoś może zasugerować, miejmy nadzieję, elegancki sposób radzenia sobie z tym, jeśli elementy para są tak bałaganiarskie?

Dzięki,

Russ

Aktualizacja: zaniedbałem wprowadzenie przypadku narożnego. Zmodyfikowałem pierwotne źródło powyżej zaznacz element łącza. Obecne rozwiązanie usuwa zawierający para element ze źródła.

questionAnswers(3)

yourAnswerToTheQuestion