Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
My page
Welcome to my page
И вот результат:
My page
Welcome to my page
Однако поскольку теперь фрагменты результирующего дерева не допускаются в XSLT 1.1, этот пример работать не будет. Как же тогда сохранить весь элемент буквального результата одновременно с возможностью простого вызова? Вы можете создать именованный шаблон.
Элемент : применение именованных шаблонов
У элемента есть атрибут
name
, задающий имя шаблона. Предположим, у меня есть элемент буквального результата, состоящий из двух элементов
и двух элементов
HTML, при помощи которого я создаю в документах HTML вертикальный разделитель:
Тогда я могу создать шаблон с именем «separator» (разделитель), использующий этот элемент буквального результата:
Это именованный шаблон — для его создания нужно только присвоить имя атрибуту name элемента .
Заметьте, что этот шаблон не установлен для выбора чего-то конкретного. Для активизации шаблона необходимо вызвать его явно. Для этого служит элемент , обладающий только одним атрибутом:
• name
(обязательный). Имя вызываемого шаблона, устанавливается в QName
.
Следующий пример демонстрирует применение нашего шаблона «separator», для чего мне нужно было только вызвать его в соответствующих местах:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
</Н1>
Name | Mass | Radius | Day |
Вот результат. Обратите внимание: элементы
и
были вставлены так, как требовалось:
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
Mercury | .0553 (Earth = 1) | 1516 miles | 58.65 days |
Venus | .815 (Earth = 1) | 3716 miles | 116.75 days |
Earth | 1 (Earth = 1) | 2107 miles | 1 days |
Результирующий документ показан на рис. 9.1.

Рис. 9.1.Вызов именованного шаблона
Таким образом, вы можете обращаться к элементу буквального результата по имени, легко помещая его в результирующий документ. Но это слишком статично — элемент буквального результата всегда один и тот же. Впрочем, как можно заметить, вызов именованного шаблона во многом похож на вызов подпрограммы в языке программирования. Так же, как вы передаете данные в подпрограмму, вы можете передать данные в именованные шаблоны при помощи параметров .
Элементы и : создание параметров
Параметры во многом похожи на переменные — за тем исключением, что они обычно используются вместе с именованными шаблонами. Параметры позволяют вам передать в шаблон какие-то значения. Параметры создаются элементом , обладающим двумя атрибутами:
• name
(обязательный). Имя переменной, устанавливается в QName;
• select
(необязательный). Значение параметра по умолчанию. Устанавливается в выражение XPath.
Аналогично , этот элемент может либо быть элементом высокого уровня, либо применяться внутри тела шаблона. Параметры, созданные элементами , являются глобальными, а созданные внутри шаблонов — локальными. При создании параметра внутри тела шаблона, элемент должен быть расположен перед какими-либо другими дочерними элементами. Элемент может также содержать необязательное тело шаблона, создающее фрагмент результирующего дерева — в XSLT 1.1 это уже не разрешено. Если элемент содержит тело, атрибут select
использовать нельзя.
После объявления параметра при помощи к его значению можно обращаться в шаблоне таким же способом, как и к значению переменной, — добавляя к имени префикс «$».
Когда вы вызываете именованный шаблон при помощи или применяете шаблоны с использованием , вы можете задать значение используемых в шаблоне параметров с помощью элемента . Если самому параметру при объявлении было присвоено значение атрибутом select
элемента , это значение выступает в качестве значения параметра по умолчанию. Значение по умолчанию будет перекрыто, если вы зададите новое значение параметра при помощи элемента . У элемента два атрибута:
• name
(обязательный). Имя переменной; устанавливается в QName;
• select
(необязательный). Выражение XPath, задающее значение параметра. Если опустить этот атрибут, значение переменной будет определяться содержимым .
Элемент может также содержать необязательное тело шаблона, создающее фрагмент результирующего дерева, но в XSLT 1.1 это уже не разрешено.
В следующем примере (листинг 9.3) я создаю именованный шаблон с именем «COLORS» (цвета), добавляющий цвет в данные планет в результирующем HTML-документе. Этот именованный шаблон использует единственный параметр, COLOR
, который устанавливается в требуемый цвет. В примере я устанавливаю параметр COLOR
в разные цвета для разных планет, используя и вызывая шаблон «COLORS». Вот как это реализуется на практике.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
.
.
.
Данная таблица вызывает шаблон «COLORS» с разными значениями параметра COLOR. Я могу воспользоваться этими цветами при форматировании данных планет. Заметьте, что я объявил параметр COLOR при помощи в самом начале шаблона «COLORS»:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
.
.
.
И вот результат:
The Colorful Planets Table
The Colorful Planets Table
Name | Mass | Radius | Day |
Mercury | .0553 (Earth = 1) | 1516 miles | 58.65 days |
Venus | .815 (Earth = 1) | 3716 miles | 116.75 days |
Earth | 1 (Earth = 1) | 2107 miles | 1 days |
Этот результирующий документ показан на рис. 9.2 (пусть даже в черно-белом исполнении).

Рис. 9.2.Вызов именованного шаблона с параметрами
В следующем примере я использую параметры для локализации используемого в шаблоне языка. Я создаю новый шаблон
localize
с параметром language
. Если language установлен в « en
», означая английский, результирующий документ будет озаглавлен «Planets»; если language
установлен в « de
», немецкий, результирующий документ будет озаглавлен «Planeten», а если в « fr
», французский, результирующий документ будет озаглавлен «Planetes».
Интервал:
Закладка: