Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные команды XSLT




xsl:apply-templates - Применение XSLT шаблона

Атрибуты: select - расширенное X-Path выражение (опционально). Текстовое содержание отсутствует.

Описание: Команда рекурсивно вызывает XSLT шаблон xsl:template с атрибутом match, совпадающим с X-Path выражением select, для всех потомков текущего XML узла, соответствующих данному выражению. Если атрибут select не задан, для каждого потомка текущего XML узла рекурсивно будет вызываться соответствующий XSLT шаблон xsl:template.

Пример. Исходный XML файл:

<?xml version="1.0" encoding=”windows-1251”?>

<books>

<book src="books/oop">Объектно-ориентированное программирование</book>

<book src="books/cpp">Программирование на C++</book>

<book src="books/perl">Введение в Perl</book>

</books>

XSLT шаблон управления вводом:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/books">

<html>

<body>

<table border="1">

<tr><td align="center"><b>Список книг</b></td></tr>

<xsl:apply-templates select="book"/>

</table>

</body>

</html>

</xsl:template>

<xsl:template match="book">

<tr><td><xsl:value-of select="."/></td></tr>

</xsl:template>

</xsl:stylesheet>

В результате применения шаблона xsl:apply-templates будет выведен список книг в виде таблицы:

Список книг
Объектно-ориентированное программирование
Программирование на C++
Введение в Perl

xsl:attribute - Конструирование атрибута

Атрибуты: name - имя конструируемого атрибута. Текстовое содержание отсутствует. Может содержать в качестве потомков команды xsl:value-of и xsl:text.

Описание: Команда конструирует атрибут текущего HTML тега в XSLT шаблоне. Текущим обычно является родительский тег. Для задания значения атрибута в исходном содержании XSLT шаблона используется команда-потомок xsl:text. Если значение должно выбираться из внешнего источника, необходимо использовать команду-потомок xsl:value-of. В этом случае значение определяется результатом X-Path запроса.

Пример. Исходный XML файл:

<?xml version="1.0" encoding=”windows-1251”?>

<books>

<book src="books/oop">Объектно-ориентированное программирование</book>

<book src="books/cpp">Программирование на C++</book>

<book src="books/perl">Введение в Perl</book>

</books>

XSLT шаблон, позволяющий конструировать гиперссылки:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/books">

<html>

<body>

<table border="1">

<tr><td align="center"><b>Список книг</b></td></tr>

<xsl:apply-templates select="book"/>

</table>

</body>

</html>

</xsl:template>

<xsl:template match="book">

<tr><td><a>

<xsl:attribute name="href">

<xsl:value-of select="@src"/>

<xsl:text>/index.htm</xsl:text>

</xsl:attribute>

<xsl:value-of select="."/>

</a></td></tr>

</xsl:template>

В результате применения XSLT шаблона будет выведена HTML страница со ссылками:

<html>

<body>

<table border="1">

<tr><td align="center"><b>Список книг</b></td></tr>

<tr><td><a href="books/oop/index.htm">Объектно-ориентированное программирование</a></td></tr>

<tr><td><a href="books/cpp/index.htm">Программирование на С++</a></td></tr>

<tr><td><a href="books/perl/index.htm">Введение в Perl</a></td></tr>

</table>

</body>

</html>

Как видно из примера, значение гиперссылок определяется атрибутами src узлов book XML файла, содержащими имя каталога книги. Кроме того, в конце каждой гиперссылки добавляется адрес /index.htm, указывающий на заглавную страницу книги. Необходимо отметить, что вместо данной команды можно использовать интерпретируемое X-Path выражение, заключенное в { }. Например следующиая часть XSLT шаблона будет также генерировать вышеприведенные строки таблицы:

<xsl:template match="book">

<tr><td><a href="{@src}/index.htm">{.}</a></td></tr>

</xsl:template>

xsl:call-template - Вызов XSLT шаблона

Атрибуты: name - имя вызываемого XSLT шаблона. Текстовое содержание отсутствует.

Описание: Команда вызывает именованный XSLT шаблон xsl:template с аналогичным атрибутом name. В содержании именованного шаблона путь к XML источнику остается прежним.

Пример. Использование именованного XSLT шаблона:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/books">

<html>

<body>

<table border="1">

<xsl:call-template name="title"/>

<xsl:apply-templates select="book"/>

</table>

</body>

</html>

</xsl:template>

 

<xsl:template name="title">

<tr><td align="center"><b>Список книг</b></td></tr>

</xsl:template>

 

<xsl:template match="book">

<tr><td><xsl:value-of select="."/></td></tr>

</xsl:template>

</xsl:stylesheet>

В результате XSLT преобразования будет вызван именованный шаблон xsl:template с атрибутом name=title, создающий заголовок таблицы, затем рекурсивный шаблон xsl:template с атрибутом match=book, выводящий список книг:

Список книг
Объектно-ориентированное программирование
Программирование на C++
Введение в Perl

xsl:choose - Заголовок множественного выбора

Атрибуты: нет. Текстовое содержание отсутствует. Может содержать в качестве потомков команды xsl:when и xsl:otherwise.

Описание: Команда является заголовком множественного выбора. Вложенные команды xsl:when описывают условия вывода определенных заданных частей XSLT шаблона. Вложенная команда xsl:otherwise описывает вывод заданной части XSLT шаблона при невыполнении всех прочих условий.

Пример. Исходный XML файл:

<?xml version="1.0" encoding=”windows-1251”?>

<books>

<book author="Иванов И.И.">Объектно-ориентированное программирование</book>

<book author="Бьерн Строустрап">Справочное руководство по C++</book>

<book author="Маслов В.В.">Введение в Perl</book>

</books>

XSLT шаблон, соответствующий данному файлу:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/books">

<html>

<body>

<table border="1">

<tr><td align="center"><b>Наименование</b></td>

<td align="center"><b>Категория</b></td></tr>

<xsl:apply-templates select="book"/>

</table>

</body>

</html>

</xsl:template>

 

<xsl:template match="book">

<tr><td><xsl:value-of select="."/></td>

<xsl:choose>

<xsl:when test="@author='Бьерн Строустрап'">

<td>Справочник</td>

</xsl:when>

<xsl:when test="@author='Иванов И.И.'">

<td>Учебное пособие</td>

</xsl:when>

<xsl:otherwise>

<td>Книга</td>

</xsl:otherwise>

</xsl:choose>

</tr>

</xsl:template>

</xsl:stylesheet>

В результате XSLT преобразования будет выведена HTML таблица, содержащая наименования книг и их категории, определяемые в XSLT шаблоне:

Наименование Категория
Объектно-ориентированное программирование Учебное пособие
Справочное руководство по C++ Справочник
Введение в Perl Книга

xsl:for-each - Параметрический цикл

Атрибуты: select - источник данных в формате X-Path выражения; start - начальное значение переменной цикла (опционально); end - конечное значение переменной цикла (опционально). Текстовое содержание отсутствует. Может содержать в качестве потомков узел xsp:sort (опционально), любые другие команды или часть XSLT шаблона.

Описание: Команда производит циклический повтор всех команд потомков для каждого элемента выбранного массива данных. Массив данных выбирается из источника, указанного атрибутом select и представляющего собой расширенное X-Path выражение.

Пример. Исходный XML файл:

<?xml version="1.0" encoding=”windows-1251”?>

<books>

<book author="Иванов И.И.">Объектно-ориентированное программирование</book>

<book author="Бьерн Строустрап">Справочное руководство по C++</book>

<book author="Маслов В.В.">Введение в Perl</book>

</books>

XSLT шаблон, соответствующий данному файлу:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/books">

<html>

<body>

<table border="1">

<tr><td align="center"><b>п/п</b></td>

<td align="center"><b>Наименование</b></td>

<td align="center"><b>Авторы</b></td></tr>

<xsl:for-each select="book">

<tr><td><xsl:value-of select="$I"/></td>

<td><xsl:value-of select="."/></td>

<td><xsl:value-of select="@author"/></td></tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

В результате XSLT преобразования будет выведена HTML таблица, содержащая список книг:

п/п Наименование Авторы
  Объектно-ориентированное программирование Иванов И.И.
  Справочное руководство по C++ Бьерн Строустрап
  Введение в Perl Маслов В.В.

 

xsl:if - Условная интерпретация

Атрибуты: test - тестовое выражение. Текстовое содержание отсутствует. Может содержать в качестве потомков любые другие команды или часть XSLT шаблона.

Описание: Команда производит условную интерпретацию потомков только при истинном значении тестового выражения. Если тестовое выражение ложно, потомки не обрабатываются.

Тестовое выражение представляет собой одно или несколько логических выражений вида:

X-Path cOperator 'Value', с операторами 'and' или 'or', где:

X-Path - результат расширенного X-Path запроса;

cOperator - один из операторов сравнения: '=' (равно); '!=' (не равно); '&lt;' (меньше); '&gt;' (больше);

'Value' - проверяемое значение.

В соответствии со стандартом XSLT, последовательность символов до оператора сравнения cOperator интерпретируется как расширенный X-Path запрос. В этом случае результат запроса сравнивается c текстовой строкой 'Value' и, если выражение истинно, происходит обработка вложенных команд.

В текстовой строке 'Value' можно использовать регулярные выражения Perl, например: '.' - любой одиночный символ; '.*' - любое количество любых символов, '|' - модификатор ИЛИ, круглые скобки для группировки и т.д., а также интерполировать переменные.

Если в строке Value опущены апострофы, то выражение вычисляется. Например: в выражении book/@id=int(2*2.4-1.6) будет сравниваться содержимое атрибута id узла book с результатом функции.

Примеры тестовых выражений:

book='Объектно-ориентированное программирование' - содержание узла book сравнивается со строкой 'Объектно-ориентированное программирование';

chapter/@number &lt; '3' - содержание атрибута number узла chapter меньше 3;

document('test.xml')//item='.*глава.*' - в содержании дочернего элемента item файла test.xml встречается слово 'глава'

book/cost&lt;'200' and book/author='Шварц' - содержание узла cost меньше 200 и содержанием author является слово 'Шварц'.

Пример. XSLT шаблон, выводящий список книг автора 'Шварц':

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/books">

<html>

<body>

<table border="1">

<tr><td align="center"><b>Наименование</b></td>

<td align="center"><b>Авторы</b></td></tr>

<xsl:for-each select="book">

<xsl:if test="@author='Шварц'">

<tr><td><xsl:value-of select="."/></td>

<td><xsl:value-of select="@author"/></td></tr>

</xsl:if>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

xsl:number - Автоматическая нумерация

Атрибуты: start - начальное значение номера (опционально). Текстовое содержание отсутствует.

Описание: Команда генерирует автоматическую нумерацию в шаблоне HTML. Применяется внутри цикла xsl:for-each. При использовании команды внутри вложенных циклов генерируется многоуровневая нумерация через разделитель '.', например: '1.1'. Если указан опциональный атрибут start, нумерация начинается с заданного номера.

Пример. Исходный XML файл:

<?xml version="1.0" encoding=”windows-1251”?>

<book>

<title>Изучаем Perl</title>

<author>Рэндал Шварц, Том Кристиансен</author>

<chapter>

<title>Введение</title>

<item>Назначение языка Perl</item>

<item>Основные понятия</item>

</chapter>

<chapter>

<title>Скалярные данные</title>

<item>Числа</item>

<item>Строки</item>

</chapter>

</book>

Использование автоматической нумерации в XSLT шаблоне:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/book">

<html>

<body>

<table border="1">

<tr><td align="center"><b>Содержание</b></td></tr>

<xsl:for-each select="chapter">

<tr><td><b><xsl:number/></b>

<b><xsl:value-of select="title"/></b></td></tr>

<xsl:for-each select="item">

<tr><td><span><xsl:number/></span>

<span><xsl:value-of select="."/></span></td></tr>

</xsl:for-each>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

В результате XSLT преобразования будет выведена HTML таблица с нумерованным содержанием книги:

Содержание
1 Введение
1.1 Назначение языка Perl
1.2 Основные понятия
2 Скалярные данные
2.1 Числа
2.2 Строки

xsl:otherwise - Множественный выбор по условию "иначе"

Атрибуты: нет. Текстовое содержание отсутствует. Может содержать в качестве потомков любые другие команды или часть XSLT шаблона.

Описание: Команда выполняет вывод XSLT шаблона при всех ложных условиях xsl:when. Является прямым потомком команды множественного выбора xsl:choose.

xsl:sort - Сортировка данных

Атрибуты: select - источник сортировки в формате X-Path выражения; order - метод сортировки (опционально). Текстовое содержание отсутствует.

Описание: Команда выполняет сортировку массива узлов, выбранных командой параметрического цикла xsl:for-each по критерию (полю), заданному атрибутом select. Является первым прямым потомком команды xsl:for-each. Опциональный атрибут order определяет один из методов сортировки: 'ascending' - по возрастанию значения (по умолчанию), 'descending' - по убыванию значения.

Пример. Исходный XML файл:

<?xml version="1.0" encoding=”windows-1251”?>

<books>

<book author="Иванов И.И.">Объектно-ориентированное программирование</book>

<book author="Бьерн Строустрап">Справочное руководство по C++</book>

<book author="Маслов В.В.">Введение в Perl</book>

</books>

Пример XSLT шаблона, использующего сортировку:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/books">

<html>

<body>

<table border="1">

<tr><td align="center"><b>Наименование</b></td>

<td align="center"><b>Авторы</b></td></tr>

<xsl:for-each select="book">

<xsl:sort select="@author"/>

<tr><td><xsl:value-of select="."/></td>

<td><xsl:value-of select="@author"/></td></tr>

</xsl:for-each>

</table>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

В результате XSLT преобразования будет выведена HTML таблица, содержащая список книг, отсортированных по авторам:

Наименование Авторы
Справочное руководство по C++ Бьерн Строустрап
Объектно-ориентированное программирование Иванов И.И.
Введение в Perl Маслов В.В.

xsl:stylesheet - Заголовок XSLT страницы

Атрибуты: нет. Текстовое содержание отсутствует.

Описание: Команда является главным корневым элементом XSLT страницы. Содержит в качестве потомков один или несколько XSLT шаблонов xsl:template.

xsl:template - Описание XSLT шаблона

Атрибуты: match - X-Path выражение, определяющее путь к источнику при генерации шаблона; name - имя шаблона (альтернативно). Текстовое содержание отсутствует. Дочерние узлы представляют собой содержание XSLT шаблона.

Описание: Команда описывает XSLT шаблон. Если указан атрибут match, то содержание шаблона генерируется при рекурсивном обходе XML документа командой xsl:apply-templates с атрибутом select, значение которого совпадает с атрибутом шаблона match. При генерации содержания шаблона путь к XML источнику становится относительным. Допускается использование вложенных шаблонов.

Если вместо атрибута match указан атрибут name, шаблон является именованным. Содержание именованного шаблона генерируется командой xsl:call-template с аналогичным значением атрибута name. При генерации содержания именованного шаблона путь к XML источнику остается прежним.

xsl:text - Генерация текста

Атрибуты: нет. Текстовое содержание определяет генерируемый текст.

Описание: Команда генерирует указанный текст в выходном HTML документе. Генерируемое текстовое содержание добавляется к содержанию родительского узла.

Пример использования генерации текста в шаблоне:

<xsl:template name="title">

<tr><td align="center">

<xsl:text>Наименование книги - </xsl:text>

<xsl:value-of select="title"/>

</td></tr>

</xsl:template>

xsl:value-of - Вывод результата X-Path запроса

Атрибуты: select - X-Path выражение. Текстовое содержание отсутствует.

Описание: Команда подставляет результат расширенного X-Path запроса, определяемого атрибутом select, в выходной HTML документ. Генерируемое значение добавляется к содержанию родительского узла.

Пример. Исходный XML файл:

<?xml version="1.0" encoding=”windows-1251”?>

<book>

<author>Иванов И.И.</author>

<title>Объектно-ориентированное программирование</book>

</book>

Использование вывода результата X-Path запроса в шаблоне:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/book">

<html>

<body>

<table border="1">

<tr><td align="center"><b>Наименование</b></td>

<td align="center"><b>Автор</b></td></tr>

<tr><td><xsl:value-of select="title"/></td>

<td><xsl:value-of select="author"/></td>

</tr></table></body>

</html>

</xsl:template>

</xsl:stylesheet>

Для корневого узла book XML документа шаблон генерирует содержание дочерних узлов title и author. В результате XSLT преобразования будет выведена таблица:

Наименование Автор
Объектно-ориентированное программирование Иванов И.И.

xsl:variable - Определение переменной

Атрибуты: name - имя переменной; select - X-Path запрос, определяющий значение переменной. Текстовое содержание - значение переменной. Может содержать в качестве потомков команды xsl:value-of и xsl:text.

Описание: Команда определяет глобальную переменную $name в шаблоне и инициализирует ее. Если задан опциональный атрибут select, то переменная инициализируется результатом расширенного X-Path запроса. Если задано текстовое содержание, то переменная инициализируется соответствующим текстом. Если заданы дочерние команды xsl:value-of и xsl:text, то переменная инициализируется результатом их обработки.

Пример. Исходный XML файл:

<?xml version="1.0" encoding=”windows-1251”?>

<book>

<author>Иванов И.И.</author>

<title>Объектно-ориентированное программирование</title>

<options udk="681.3" cost="250"/>

</book>

Определение и использование переменных в XSLT шаблоне:

<?xml-stylesheet version="1.0" encoding=”windows-1251”?>

<xsl:stylesheet>

<xsl:template match="/book">

<html>

<xsl:variable name="title" select="title"/>

<xsl:variable name="author">

<xsl:value-of select="author"/>

</xsl:variable>

<xsl:variable name="opt" select="options" type="node"/>

<body><table border="1">

<tr><td>Наименование</td><td>Автор</td><td>Цена</td></tr>

<tr><td><xsl:value-of select="$title"/></td>

<td><xsl:value-of select="$author"/></td>

<td><xsl:value-of select="$opt{cost}"/></td>

</tr>

</table></body>

</html>

</xsl:template>

</xsl:stylesheet>

В результате XSLT преобразования будет выведена следующая таблица:

Наименование Автор Цена
Объектно-ориентированное программирование Иванов И.И.  

xsl:when - Множественный выбор по условию "если"

Атрибуты: test - тестовое выражение. Текстовое содержание отсутствует. Является прямым потомком команды множественного выбора xsl:choose. Может содержать в качестве потомков любые другие команды или часть XSLT шаблона.

Описание: Команда производит условную интерпретацию потомков только при истинном значении тестового выражения. Если тестовое выражение ложно, потомки не обрабатываются. Применение аналогично использованию команды xsl:if.

xsl:include – Включение XSLT файла

Атрибуты: href - имя файла, содержащего XSLT шаблоны. Текстовое содержание отсутствует.

Описание: Команда выполняет загрузку и включение XSLT шаблонов из файла, имя которого задано с помощью атрибута href. Как правило, используется для определения именованных шаблонов, которые в дальнейшем вызываются с помощью команды xsl:call-template.




Поделиться с друзьями:


Дата добавления: 2014-12-25; Просмотров: 2368; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.131 сек.