xslt Reduziert untergeordnete Elemente in einem DocBook-Para-Element

Ich verwandle einige generierte DocBook-XML-Dateien (von Doxygen) in XML-Dateien meiner Firma, die wirklich eine Teilmenge von DocBook sind. Es gibt ein Para-Element wie das folgende:

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

Da unsere Untergruppe von docbook KEINE Blockelemente innerhalb eines Paras, wie einer Tabelle oder einer Abbildung, mag, möchte ich dieses Element analysieren und neue Paraelemente um diese Textteile platzieren, so dass ich etwas in der Art haben würde:

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

Früher dachte ich, ich würde niemals etwas so Komplexes sehen, und stellte Tabellen außerhalb eines Para-Elements wie dieses:

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

Aber das endete damit, dass nur der erste Textknoten erfasst und andere Dinge durcheinander gebracht wurden.

Kann jemand vorschlagen, hoffentlich eine elegante Art, damit umzugehen, wenn para-Elemente so chaotisch sind?

Vielen Dank,

Russ

Update: Ich habe es versäumt, einen Eckfall einzuführen. Ich habe die Originalquelle über dem Linkelement bearbeitet. Die aktuelle Lösung entfernt das enthaltene para-Element aus der Quelle.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage