Шаблон «Hello, world!»
Первый написанный XSLT-шаблоны — это страница, выводящая надпись «Hello, world!». Для работы с кодом используем программу IntelliJIDEA. В блоге Вадима Макишвили о работе с ней рассказано достаточно подробно.
Свой первый шаблон мы ассоциируем с главной страницей. Каждая страница в нашем проекте представляется отдельным xml-файлом (сейчас — статическим, но в последствии они будут генерироваться на сервере). «Рыба» выглядит так:
<?xml-stylesheet type="text/xsl" href="../index.xsl"?>
<page name="index">
<!-- Содержание страницы -->
</page>
Вся информация заключена в корневой тег page, у которого есть атрибут name. Этот атрибут можно использовать для уточнения шаблонов конкретных страниц.
Как видно из процессорной инструкции в «рыбе», каждую страницу мы собираемся ассоциировать с одноимённым XSL-файлом. Поскольку мы используем XSLT-процессор, поддерживающий процессорные инструкции, то мы можем переопределять шаблоны для отдельных страниц в тех файлах, которые соответствуют этим страницам. Если же необходимо одним и тем же образом преопределить шаблон для нескольких страниц, можно написать общий переопределяющий шаблон, используя в предикате значения атрибута name.
Чтобы написать XSLT-преобразование для этой страницы, нужно создать файл index.xsl. Содержание файла поначалу следующее:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Здесь будет преобразование -->
</xsl:stylesheet>
XSL-шаблоны записываются в виде XML-файлов, поэтому для них действуют те же правила, что и для любых других XML-документов. Файл начинается с XML-декларации (первая строка). Всё теги заключены в один корневой тег xsl:stylesheet. Поскольку используется пространство имён (namespace) xsl, оно объявлено в корневом теге.
Для того, чтобы после наложения XSLT получился бы вывод какой-либо информации, необходимо написать шаблон (template). Начнём с шаблона на корневой узел page:
Этот код необходимо поместить в файл index.xsl в тег xsl:stylesheet. Запись match="/page" означает, что процессор применит перечисленные в шаблоне инструкции с корневому элементу с именем «page». То, что это должен быть именно корневой элемент, говорит знак слеш перед его именем.
Значение атрибута match — это XPath — путь, описывающий положение узла (или узлов) в документе. Об XPath можно почитать на zvon.org.
Предложенный шаблон выводит вместо корневого тега page то, что у него внутри. То есть надпись «Hello, world!»
Более осмысленные шаблоны мы будем писать в следующий раз. Это будут шаблоны для формы авторизации и приветствия авторизованного пользователя.
Tags: xml/xsl