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.