</body>

</html>

Следующий листинг приводит полную версию этого же преобразования.

Листинг 4.5. Полная запись преобразования XML-документа в HTML

<xsl:stylesheet

 version='1.0'

 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

 <xsl:template match='/'>

  <html>

   <head>

    <title>

     <xsl:value-of select='page/name'/>

    </title>

   </head>

   <body>

    <xsl:value-of select='page/content'/>

   </body>

  </html>

 </xsl:template>

</xsl:stylesheet>

Модульная организация преобразования

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

Включение преобразований

Подобно тому, как мы бы использовали в языке С директиву #include для включения внешних файлов, преобразования в XSLT могут использовать для той же самой цели элемент xsl:include. Правда, в отличие от языка С, условное включение в XSLT невозможно.

Элемент xsl:include

<xsl:include

 href = 'URI'/>

Обязательный атрибут href элемента xsl:include содержит URI внешнего модуля, который должен быть включен в текущее преобразование. Внешний модуль обязан быть корректным XSLT-преобразованием.

Включение внешнего преобразования является включением в прямом смысле этого слова: преобразование, включающее внешний модуль, ведет себя так, как если бы на месте элемента xsl:include было содержимое этого внешнего модуля.

Пример

Рассмотрим простое преобразование a.xsl, которое определяет значение переменной date.

Листинг 4.6. Преобразование a.xsl

<xsl:stylesheet

 version='1.0'

 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

 <xsl:variable name='date' select=''16.07.2001''/>

</xsl:stylesheet>

Включим a.xsl в преобразование b.xsl.

Листинг 4.7. Преобразование b.xsl

<xsl:stylesheet

 version='1.0'

 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

 <xsl:include href='a.xsl'/>

 <xsl:template match='/'>

  <content>

   <xsl:text>Today is </xsl:text>

   <xsl:value-of select='$date'/>

   <xsl:text>.</xsl:text>

  </content>

 </xsl:template>

</xsl:stylesheet>

Включение в преобразование b.xsl преобразования a.xsl эквивалентно замене в b.xsl соответствующего элемента xsl:include на содержимое преобразования a.xsl. В нашем случае будет включено только определение переменной date. Преобразование b.xsl можно переписать в следующем виде: .

<xsl:stylesheet

 version='1.0'

 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

 <xsl:variable name='date' select=''16.07.2001''/>

 <xsl:template match='/'>

  <content>

   <xsl:text>Today is </xsl:text>

   <xsl:value-of select='$date'/>

   <xsl:text>.</xsl:text>

  </content>

 </xsl:template>

</xsl:stylesheet>

При включении внешних преобразований при помощи xsl:include следует учитывать некоторые особенности использования этого элемента.

Все ссылки и относительные идентификаторы ресурсов (URI), используемые во включаемом преобразовании, вычисляются относительно его базового адреса.

Пример

Предположим, что URI нашего преобразования имеет вид:

http://www.xsltdev.ru/examples/a.xsl

В этом случае элемент

Вы читаете Технология XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату