• name
(обязательный). Имя переменной, устанавливается в QName;
• select
(необязательный). Значение параметра по умолчанию. Устанавливается в выражение XPath.
Аналогично , этот элемент может либо быть элементом высокого уровня, либо применяться внутри тела шаблона. Параметры, созданные элементами , являются глобальными, а созданные внутри шаблонов — локальными. При создании параметра внутри тела шаблона, элемент должен быть расположен перед какими-либо другими дочерними элементами. Элемент может также содержать необязательное тело шаблона, создающее фрагмент результирующего дерева — в XSLT 1.1 это уже не разрешено. Если элемент содержит тело, атрибут select
использовать нельзя.
После объявления параметра при помощи к его значению можно обращаться в шаблоне таким же способом, как и к значению переменной, — добавляя к имени префикс «$».
Когда вы вызываете именованный шаблон при помощи или применяете шаблоны с использованием , вы можете задать значение используемых в шаблоне параметров с помощью элемента . Если самому параметру при объявлении было присвоено значение атрибутом select
элемента , это значение выступает в качестве значения параметра по умолчанию. Значение по умолчанию будет перекрыто, если вы зададите новое значение параметра при помощи элемента . У элемента два атрибута:
• name
(обязательный). Имя переменной; устанавливается в QName;
• select
(необязательный). Выражение XPath, задающее значение параметра. Если опустить этот атрибут, значение переменной будет определяться содержимым .
Элемент может также содержать необязательное тело шаблона, создающее фрагмент результирующего дерева, но в XSLT 1.1 это уже не разрешено.
В следующем примере (листинг 9.3) я создаю именованный шаблон с именем «COLORS» (цвета), добавляющий цвет в данные планет в результирующем HTML-документе. Этот именованный шаблон использует единственный параметр, COLOR
, который устанавливается в требуемый цвет. В примере я устанавливаю параметр COLOR
в разные цвета для разных планет, используя и вызывая шаблон «COLORS». Вот как это реализуется на практике.
Листинг 9.3. Применение параметров таблиц стилей
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».
Здесь я вызываю шаблон localize
, установив language
в «fr»:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
А вот как выглядит параметризованный шаблон «COLORS». Заметьте, что я объявляю параметр COLOR
в шаблоне при помощи элемента (и заметьте, что в HTML 4.01 символьный элемент для «е» в «Planetes», который я и использую — это è
):
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Planets
Planeten
Planètes
.
.
.
Вот результирующий локализованный документ:
Planètes
.
.
.
Этот документ показан на рис. 9.3.
Рис. 9.3.Вызов именованного шаблона с параметрами для установки языков
Читать дальше