Книга: Технология XSLT

Несколько выходящих документов

Несколько выходящих документов

Как известно, преобразование в XSLT 1.0 имеет один основной входящий документ (плюс документы, доступные при помощи функции document) и ровно один выходящий документ. То есть, для того, чтобы сгенерировать на основе одного входящего документа несколько выходящих следует просто выполнить несколько преобразований.

Следуя многочисленным запросам программистов, почти все разработчики XSLT-процессоров предоставили в своих продуктах возможность генерировать несколько выходящих документов непосредственно из одного преобразования. Элемент xsl:document, добавленный в XSLT 1.1, сделал эту возможность стандартной.

Пример

Самым простым применением xsl:document является разбиение одного документа на несколько. Например, имея документ вида

<book>
 <chapter>Text 1</chapter>
 <chapter>Text 2</chapter>
 <chapter>Text 3</chapter>
</book>

мы можем выделить элементы chapter в отдельные файлы, а в самом выходящем документе создать оглавление со ссылками.

Листинг 12.1. Преобразование, использующее элемент xsl:document

<xsl:stylesheet
 version="1.1"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="book">
  <xsl:copy>
   <xsl:apply-templates select="chapter"/>
  </xsl:copy>
 </xsl:template>
 <xsl:template match="chapter">
  <chapter href="chapter{position()}.xml"/>
  <xsl:document href="chapter{position()}.xml">
   <xsl:copy-of select="."/>
  </xsl:document>
 </xsl:template>
</xsl:stylesheet>

Результатом этого преобразования будут следующие четыре документа.

Листинг 12.2. Главный выходящий документ преобразования

<book>
 <chapter href="chapter1.xml"/>
 <chapter href="chapter2.xml"/>
 <chapter href="chapter3.xml"/>
</book>

Листинг 12.3. Документ chapter1.xml

<chapter>Text 1</chapter>

Листинг 12.4. Документ chapter2.xml

<chapter>Text 2</chapter>

Листинг 12.5. Документ chapter3.xml

<chapter>Text 3</chapter>

Оглавление книги


Генерация: 1.225. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз