</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
В этом случае элемент
