xslt выравнивает дочерние элементы в элементе DocBook para

Я преобразовываю некоторые сгенерированные DocBook XML (из Doxygen) в мои компании XML, который действительно является подмножеством DocBook. Элемент para похож на следующий:

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

Поскольку наше подмножество docbook НЕ любит блочные элементы внутри para, такие как таблица или рисунок, я хотел бы проанализировать этот элемент и поместить новые элементы para вокруг этих фрагментов текста, чтобы у меня было что-то вроде этого:

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

Раньше, думая, что я никогда не увижу ничего такого сложного, я ставил таблицы вне элемента para, как это:

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

Но это закончилось только перехватом первого текстового узла и запутыванием других вещей.

Может кто-нибудь предложить, мы надеемся, элегантный способ справиться с этим, если пара элементов это грязный

Спасибо,

Russ

Обновление: я забыл представить угловой случай. Я редактировал исходный код выше, проверьте элемент ссылки. Текущее решение удаляет содержащий элемент para из источника.

Ответы на вопрос(3)

Ваш ответ на вопрос