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

Использование сущностей для разбивки на модули

Использование сущностей для разбивки на модули

Поскольку XSLT-преобразования являются XML-документами, мы можем воспользоваться средствами XML для модульной организации данных. Части преобразований можно просто вынести во внешние документы и включать в документ в виде сущности.

Пример

Листинг 4.15. Входящий документ:

<root>
 <a/>
 <b/>
</root>

Листинг 4.16. Основное преобразование

<!DOCTYPE xsl:stylesheet [
 <!ENTITY ab SYSTEM "ab.xsl">
]>
<xsl:stylesheet
 version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="root">
  <ROOT>
   <xsl:apply-templates/>
  </ROOT>
 </xsl:template>
 &ab;
</xsl:stylesheet>

Листинг 4.17. Файл ab.xsl

<xsl:template match="a">
 <A/>
</xsl:template>
<xsl:template match="b">
 <B/>
</xsl:template>

Листинг 4.18. Результат преобразования

<ROOT>
 <A/>
 <B/>
</ROOT>

В этом примере в DTD-блоке мы определяем сущность с именем ab, которая содержит два шаблонных правила для обработки элементов a и b. Файл ab.xsl, в котором содержится текст внешней сущности, заменяет в документе ссылку &ab;. После раскрытия процессором сущности (замены ссылки на ее содержимое) наше преобразование будет выглядеть следующим образом.

Листинг 4.19. Основное преобразование после раскрытия сущности &ab;

<xsl:stylesheet
 version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:template match="root">
  <ROOT>
   <xsl:apply-templates/>
  </ROOT>
 </xsl:template>
 <xsl:template match="a">
  <A/>
 </xsl:template>
 <xsl:template match="b">
  <B/>
 </xsl:template>
</xsl:stylesheet>

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


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