Во-первых, мой вопрос очень похож на этот , но с некоторыми вариациями, и мой текущий результат противоположен тому, что я вижу в этом связанном вопросе.Вот подробности моей проблемы:
Цель состоит в том, чтобы удалить все теги table
вокруг таблиц, которые содержат изображения и никакой другой контент.Я не могу иметь эти изображения внутри таблицы.
Вот входной XML, который я пытаюсь преобразовать:
<table frame="all">
<tgroup cols="1">
<colspec colname="col1" colwidth="480pt"/>
<thead>
<row>
<entry valign="middle">
<p>
<image href="Images/image33.png" width="770.0" height="122.0">
<alt>../../topics/media/image33.wmf</alt>
</image><i >italic image title</i>
</p>
</entry>
</row>
</thead>
<tbody>
<row>
<entry/>
</row>
</tbody>
</tgroup>
</table>
Вот вывод, который я ищу:
<fig>
<title>image title</title>
<image href="Images/image33.png" width="770.0" height="122.0"></image>
</fig>
Я могу добавить <fig>
теги с помощью этого шаблона:
<xsl:template match="table//image">
<xsl:element name="fig">
<xsl:element name="image">
<xsl:apply-templates select="*|@*"/>
</xsl:element>
</xsl:element>
</xsl:template>
но когда я добавляю этот шаблон (ответ на связанный вопрос выше):
<xsl:template match="table//image">
<xsl:copy-of select="/tgroup/thead/row/entry/node()" />
</xsl:template>
Я получаю этот вывод:
<table frame="all" class="- topic/table ">
<tgroup id="topic_61_tg_2" cols="1" class="- topic/tgroup ">
<colspec colname="col1" colwidth="480pt" class="- topic/colspec "/>
<thead class="- topic/thead ">
<row class="- topic/row ">
<entry valign="middle" class="- topic/entry ">
<i>italic text title</i>
</entry>
</row>
</thead>
<tbody class="- topic/tbody ">
<row class="- topic/row ">
<entry class="- topic/entry "/>
</row>
</tbody>
</tgroup>
</table>
Как видите, таблица, а не изображение сохранилась.Есть идеи, что я здесь делаю не так?Я также хотел бы отметить, что в этом XML-файле есть много другого контента, который я тоже хочу сохранить, поэтому я попытался <xsl:template match="table//image">
для этого copy-of
part