</body>
</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
href = '
Обязательный атрибут href
элемента xsl:include
содержит URI внешнего модуля, который должен быть включен в текущее преобразование. Внешний модуль обязан быть корректным XSLT-преобразованием.
Включение внешнего преобразования является включением в прямом смысле этого слова: преобразование, включающее внешний модуль, ведет себя так, как если бы на месте элемента xsl:include
было содержимое этого внешнего модуля.
Рассмотрим простое преобразование a.xsl
, которое определяет значение переменной date
.
<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
.
<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
В этом случае элемент