КАТЕГОРИИ: Архитектура-(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 будет выведен список книг в виде таблицы:
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, выводящий список книг:
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 шаблоне:
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 таблица, содержащая список книг:
xsl:if - Условная интерпретация Атрибуты: test - тестовое выражение. Текстовое содержание отсутствует. Может содержать в качестве потомков любые другие команды или часть XSLT шаблона. Описание: Команда производит условную интерпретацию потомков только при истинном значении тестового выражения. Если тестовое выражение ложно, потомки не обрабатываются. Тестовое выражение представляет собой одно или несколько логических выражений вида: X-Path cOperator 'Value', с операторами 'and' или 'or', где: X-Path - результат расширенного X-Path запроса; cOperator - один из операторов сравнения: '=' (равно); '!=' (не равно); '<' (меньше); '>' (больше); 'Value' - проверяемое значение. В соответствии со стандартом XSLT, последовательность символов до оператора сравнения cOperator интерпретируется как расширенный X-Path запрос. В этом случае результат запроса сравнивается c текстовой строкой 'Value' и, если выражение истинно, происходит обработка вложенных команд. В текстовой строке 'Value' можно использовать регулярные выражения Perl, например: '.' - любой одиночный символ; '.*' - любое количество любых символов, '|' - модификатор ИЛИ, круглые скобки для группировки и т.д., а также интерполировать переменные. Если в строке Value опущены апострофы, то выражение вычисляется. Например: в выражении book/@id=int(2*2.4-1.6) будет сравниваться содержимое атрибута id узла book с результатом функции. Примеры тестовых выражений: book='Объектно-ориентированное программирование' - содержание узла book сравнивается со строкой 'Объектно-ориентированное программирование'; chapter/@number < '3' - содержание атрибута number узла chapter меньше 3; document('test.xml')//item='.*глава.*' - в содержании дочернего элемента item файла test.xml встречается слово 'глава' book/cost<'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 таблица с нумерованным содержанием книги:
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 таблица, содержащая список книг, отсортированных по авторам:
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; Просмотров: 2431; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |