Как использовать xsl файл

Обновлено: 02.07.2024

Стилевыми таблицами (стилевыми листами) принято называть специальные инструкции, управляющие процессом отображения элемента в окне программы-клиента(например, в окне броузера). Предложенные в качестве рекомендация W3C, каскадные стилевые таблицы (CSS-Cascading Style Sheets) уже больше года используются Web-разработчиками для оформления Web-страниц.

Являясь очень мощным средством оформления HTML-страниц, CSS-таблицы, тем не менее, не могут применяться в XML-документах, т.к. набор тэгов в этом языке не ограничен и использование статических ссылок на форматируемые объекты документа в этом случае невозможно.

Поэтому для форматирования XML-элементов был разработан новый язык разметки, являющийся подмножеством XML, и специально был предназначен для форматирования XML-элементов.

Некоторые его отличия от CSS:

Во-первых, стилевые таблицы XSL позволяют определять оформление элемента в зависимости от его месторасположения внутри документа, т.е. к двум элементам с одинаковым названием могут применяться различные правила форматирования.
Во-вторых, языком, лежащем в основе XSL, является XML, а это означает, что XSL более гибок, универсален и у разработчиков появляется возможность использования средства для контроля за корректностью составления таких стилевых списков(используя DTD или схемы данных)
В-третьих, таблицы XSL не являются каскадными, подобно CSS, т.к. чрезвычайно сложно обеспечить "каскадируемость" стилевых описаний, или, другими словами, возможность объединения отдельных элементов форматирования путем вложенных описаний стиля, в ситуации, когда структура выходного документа заранее неизвестна и он создается в процессе самого разбора. Однако в XSL существует возможность задавать правила для стилей, при помощи которых можно изменять свойства стилевого оформления, что позволяет использовать довольно сложные приемы форматирования

На сегодняшний день единственным броузером, поддерживающим некоторые из этих возможностей, является бэта-версия Internet Explorer 5.0, однако в самом ближайшем будущем, безусловно, XSL будет использоваться также широко, как сегодня стандартные тэги HTML

В этом разделе мы рассмотрим упрощенную объектную модель XSL-документа, используемую в текущей версии XSL-конвертора Microsoft msxsl, и поэтому информацию, изложенную далее, нельзя считать описанием стандарта языка. Полный рабочий вариант спецификации XSL в последней его редакции доступен на сервере.

С чего начать

Принцип обработки XML-документов стилевыми таблицами заключается в следующем: при разборе XSL-документа программа-анализатор обрабатывает инструкции этого языка и каждому элементу, найденному в XML-дереве ставит в соответствие набор тэгов, определяющих форматирование этого элемента. Другими словами, мы задаем шаблон форматирования для XML-элементов, причем сам этот шаблон может иметь структуру соответствующего фрагмента XML-документа. Инструкции XSL определяют точное месторасположение элемента XML в дереве, поэтому существует возможность применять различные стили оформления к одинаковым элементам, в зависимости от контекста их использования.

Рассмотрим основные структурные элементы XSL, используемые, в частности, в конверторе msxsl, для создания оформления XML-документов.

Правила XSL

XSL-документ представляет собой совокупность правил построения, каждое из которых выделено в отдельный блок, ограниченный тэгами <rule> и </rule>;. Правила определяют шаблоны, по которым каждому элементу XML ставится в соответствие последовательность HTML-тэгов, т.е. внутри них содержатся инструкции, определяющие элементы XML-документа и тэги форматирования, применяемые к ним.

Элементы XML, к которым будет применяться форматирование, обозначаются в XSL дескриптором <target-element/>;. Для указания элемента с конкретным названием (название элемента определяется тэгами, его обозначающими), т.е. определения класса элемента, можно использовать атрибут type="<имя_элемента>"

Вот пример простейшего XSL-документа, определяющего форматирование для фрагмента <flower>rose</flower> :

Уже на этом примере можно проследить особенность использования стилевых таблиц: в любых правилах при помощи соответствующих элементов декларативно задается область, которая определяет фрагмент XML-документа, как мы чуть позже увидим, программа-анализатор заново проходит все элементы, начиная с текущего, всякий раз, когда в структуре XML-документа обнаруживаются новые вложенные элементы.

Инструкция <target-element> указывает на то, что данное правило определяет элемент. Параметром type="flower" задается название XML-элемента, для которого будет использоваться это правило. Программа-конвертор будет использовать HTML-тэги, помещенные внутри блока <rule></rule> для форматирования XML-элемента, которому "предназначался" текущий блок. В том случае, если для какого-то элемента XML шаблон не определяется, в выходной документ будут добавлены тэги форматирования по умолчанию (например, <DIV></DIV> )

Процесс разбора XSL-правил является рекурсивным, т.е. если у элемента есть дочерние элементы, то программа будет искать определения этих элементов, расположенных "глубже" в дереве документа. Указанием на то, что необходимо повторить процесс разбора XML документа, теперь уже для дочерних элементов, является инструкция <children/>. Дойдя до нее, анализатор выберет из иерархического дерева XML-элементов нужную ветвь и найдет в XSL-шаблонах правила, определяющие форматирование этих нижележащих элементов. В том случае, если вместо <children> мы укажем инструкцию <empty/>;, программа закончит движение по данной ветви и возвратится назад, в родительское правило. При этом текущее правило никакой информации в выходном HTML-документе изменять не будет, т.к. <empty/> в данном случае означает, что содержимое элемента отсутствует.

Если в одном правиле <target-element> используется несколько раз, то инструкции по форматированию будут распространены на все описываемые внутри него XML-элементы, т.е. можно задавать единый шаблон форматирования для нескольких элементов одновременно:

Ниже приведен пример более сложного XSL-описания, некоторые фрагменты которого будут пояснены позже.


Файл с расширением XSLT представляет собой файл расширяемого языка стилей преобразования. Это язык, который использует инструкции XSL для преобразования и стилизации XML-файла.

Пример отображения файлов формата XSLT в проводнике Windows

Когда XSLT-файлы используются с XML-файлами, исходный XML-файл никак не изменяется. Вместо этого создается новый файл XML. Фактически, XSLT-файлы можно использовать для «преобразования» не только XML-файлов, но и многих других структурированных документов.

Как открыть файл XSLT

Вы можете открыть файл XSLT в любом текстовом редакторе, так как это текстовый файл. Блокнот Windows – это встроенный в Windows текстовый редактор, который может быть полезен, если вам нужно быстро внести изменения, но, вероятно, это не лучшая программа для интенсивного редактирования.

Используйте расширенный текстовый редактор для открытия и редактирования файла XSLT. Она структурирует файл XSLT таким образом, что код гораздо легче редактировать и читать, чем с самыми простыми текстовыми редакторами, такими как Блокнот.

Visual Studio от Microsoft – ещё один инструмент для открытия и редактирования XSLT, который упрощает весь процесс редактирования. Пока вы вносите изменения в файл XSLT, вы можете посмотреть, как преобразования будут выглядеть в результирующем файле, через меню XML.

Хотя они не бесплатны, XMLSpy XSLT Editor и Liquid XML Studio – это ещё несколько хороших вариантов.

Вы также можете открыть файлы XSLT в веб-браузере для просмотра кода, но это не позволит вам вносить изменения.

Как преобразовать файл XSLT

Если вы откроете файл XSLT в редакторе, таком как Visual Studio, вы сможете сохранить файл в ряде других форматов, таких как XSL, XSD, XML, DTD, CONFIG и других.

То, что вы можете использовать вместо преобразования файла XSLT, – это способ фактическое преобразование файлов XML.

Дополнительная информация о файлах XSLT

Более подробную информацию о том, как XSLT-файлы структурированы, а также примеры и учебные пособия по их использованию можно найти на W3Schools, Quackit и в официальной спецификации XSLT.

Статья Википедии на эту тему – ещё один хороший источник расширенной информации о файлах XSLT.

Всё ещё не можете открыть файл?

Одна из причин, по которой вы не сможете открыть свой файл с помощью программ указанных на этой странице, – вы путаете файлы XSLT с другими форматами файлов, которые используют похожее расширение файла. Два форматы файлов, которые выглядят похоже, не обязательно должны открываться в одной программе.

Расширение файла XSLT очень похоже на расширение файла, встречающееся в нескольких других форматах файлов, таких как XLSX, XSPF и XSLIC (XenServer License), но это не означает, что эти форматы имеют что-то общее. Если ваш файл не открывается как XSLT-файл с использованием программ, о которых я упоминал выше, попробуйте перепроверить, с каким форматом файла вы работаете.

Прежде чем изучать XSLT, мы должны сначала понять XSL, что означает E X X- LX. Это похоже на XML, как CSS на HTML.

Нужен для XSL

В случае HTML-документа предварительно определены теги, такие как таблица, div и span; и браузер знает, как добавить стиль к ним и отобразить те, которые используют стили CSS. Но в случае документов XML теги не предопределены. Чтобы понять и оформить XML-документ, Консорциум World Wide Web (W3C) разработал XSL, который может выступать в качестве языка таблиц стилей на основе XML. Документ XSL определяет, как браузер должен отображать документ XML.

Что такое XSLT

XSLT, Преобразования расширяемого языка таблиц стилей, предоставляет возможность автоматического преобразования данных XML из одного формата в другой.

Как работает XSLT

Таблица стилей XSLT используется для определения правил преобразования, которые будут применяться к целевому документу XML. Таблица стилей XSLT написана в формате XML. XSLT Processor берет таблицу стилей XSLT и применяет правила преобразования к целевому XML-документу, а затем генерирует отформатированный документ в форме XML, HTML или текстового формата. Этот форматированный документ затем используется средством форматирования XSLT для генерации фактического вывода, который должен отображаться конечному пользователю.

Рабочий процесс XSLT

преимущества

Независимо от программирования. Преобразования записываются в отдельный файл xsl, который снова является документом XML.

Вывод можно изменить, просто изменив преобразования в файле xsl. Нет необходимости менять код. Таким образом, веб-дизайнеры могут редактировать таблицу стилей и быстро увидеть изменения в выводе.

Независимо от программирования. Преобразования записываются в отдельный файл xsl, который снова является документом XML.

Вывод можно изменить, просто изменив преобразования в файле xsl. Нет необходимости менять код. Таким образом, веб-дизайнеры могут редактировать таблицу стилей и быстро увидеть изменения в выводе.

Предположим, у нас есть следующий пример XML-файла student.xml, который необходимо преобразовать в хорошо отформатированный HTML-документ.

students.xml

Нам нужно определить документ таблицы стилей XSLT для вышеуказанного XML-документа, чтобы он соответствовал следующим критериям:

Столбцы должны иметь следующие заголовки: № броска, Имя, Фамилия, Ник, Марки

Таблица должна содержать информацию о студентах соответственно.

Столбцы должны иметь следующие заголовки: № броска, Имя, Фамилия, Ник, Марки

Таблица должна содержать информацию о студентах соответственно.

Шаг 1. Создайте документ XSLT

Создайте документ XSLT, отвечающий указанным выше требованиям, назовите его как Students.xsl и сохраните его в том же месте, где находится student.xml.

students.xsl

Шаг 2. Свяжите документ XSLT с документом XML

Обновите файл student.xml следующим тегом xml-stylesheet. Установите значение href для Students.xsl

Шаг 3. Просмотр XML-документа в Internet Explorer

students.xml

Выход

Форматированный вывод

<xsl: template> определяет способ повторного использования шаблонов для генерации желаемого вывода для узлов определенного типа / контекста.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: template> .

Атрибуты

Имя элемента, к которому должен быть применен шаблон.

Шаблон, который обозначает элемент (ы), к которому должен быть применен шаблон.

Приоритетный номер шаблона. Соответствующий шаблон с низким приоритетом не рассматривается перед шаблоном с высоким приоритетом.

Позволяет элементу обрабатываться несколько раз, каждый раз получая разные результаты.

Имя элемента, к которому должен быть применен шаблон.

Шаблон, который обозначает элемент (ы), к которому должен быть применен шаблон.

Приоритетный номер шаблона. Соответствующий шаблон с низким приоритетом не рассматривается перед шаблоном с высоким приоритетом.

Позволяет элементу обрабатываться несколько раз, каждый раз получая разные результаты.

элементы

Родительские элементы

xsl: таблица стилей, xsl: transform

Дочерние элементы

xsl: apply-import, xsl: apply-templates, xsl: атрибут, xsl: шаблон вызова, xsl: выбор, xsl: комментарий, xsl: копирование, xsl: copy-of, xsl: элемент, xsl: отступление, xsl: for-each, xsl: if, xsl: message, xsl: номер, xsl: param, xsl: инструкция обработки, xsl: текст, xsl: value-of, xsl: переменная, выходные элементы

Родительские элементы

xsl: таблица стилей, xsl: transform

Дочерние элементы

xsl: apply-import, xsl: apply-templates, xsl: атрибут, xsl: шаблон вызова, xsl: выбор, xsl: комментарий, xsl: копирование, xsl: copy-of, xsl: элемент, xsl: отступление, xsl: for-each, xsl: if, xsl: message, xsl: номер, xsl: param, xsl: инструкция обработки, xsl: текст, xsl: value-of, xsl: переменная, выходные элементы

Демо-пример

Это шаблонное правило имеет шаблон, который идентифицирует элементы <student> и создает выходные данные в табличном формате.

students.xml

students_imports.xsl

Выход

Форматированный вывод

Тег <xsl: value-of> помещает значение выбранного узла в соответствии с выражением XPath в виде текста.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: value-of> .

Атрибуты

Выражение XPath для оценки в текущем контексте.

Disable-outputescaping

Выражение XPath для оценки в текущем контексте.

Disable-outputescaping

элементы

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция по обработке, xsl: template , xsl: variable, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция по обработке, xsl: template , xsl: variable, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

Демо-пример

В этом примере создается таблица элемента <student> с его атрибутом rollno и его дочерним элементом <firstname>, <lastname>, <nickname> и <marks>.

students.xml

students.xsl

Проверьте вывод

Форматированный вывод

Тег <xsl: for-each> применяет шаблон повторно для каждого узла.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: for-each>

Атрибуты

Выражение XPath для оценки в текущем контексте, чтобы определить набор узлов, подлежащих итерации.

Выражение XPath для оценки в текущем контексте, чтобы определить набор узлов, подлежащих итерации.

элементы

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция по обработке, xsl: template, xsl: переменная, xsl: when, xsl: with-param, выходные элементы.

Дочерние элементы

xsl: apply-import, xsl: apply-templates, xsl: атрибут, xsl: шаблон вызова, xsl: выбор, xsl: комментарий, xsl: копирование, xsl: copy-of, xsl: элемент, xsl: отступление, xsl: for-each, xsl: if, xsl: message, xsl: number, xsl: инструкция обработки, xsl: sort, xsl: text, xsl: value-of, xsl: variable.

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция по обработке, xsl: template, xsl: переменная, xsl: when, xsl: with-param, выходные элементы.

<?xml version = "1.0"?> <?xml-stylesheet type = "text/xsl" href = "students.xsl"?> <class> <student rollno = "393"> <firstname>Dinkar</firstname> <lastname>Kad</lastname> <nickname>Dinkar</nickname> <marks>85</marks> </student> <student rollno = "493"> <firstname>Vaneet</firstname> <lastname>Gupta</lastname> <nickname>Vinni</nickname> <marks>95</marks> </student> <student rollno = "593"> <firstname>Jasvir</firstname> <lastname>Singh</lastname> <nickname>Jazz</nickname> <marks>90</marks> </student> </class>

students.xsl

Выход

Форматированный вывод

Тег <xsl: sort> определяет критерии сортировки на узлах.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: sort> .

Атрибуты

Ключ сортировки узла.

Язык алфавита, используемый для определения порядка сортировки.

Тип данных текста.

Порядок сортировки. По умолчанию «по возрастанию».

Дело порядка

Порядок сортировки строк по заглавным буквам. По умолчанию «верхний-первый».

Ключ сортировки узла.

Язык алфавита, используемый для определения порядка сортировки.

Тип данных текста.

Порядок сортировки. По умолчанию «по возрастанию».

Дело порядка

Порядок сортировки строк по заглавным буквам. По умолчанию «верхний-первый».

элементы

Количество вхождений неограниченный
Родительские элементы xsl: apply-templates, xsl: for-each
Дочерние элементы Никто

Демо-пример

В этом примере создается таблица элемента <student> с его атрибутом rollno и его дочерним элементом <firstname>, <lastname>, <nickname> и <marks> путем итерации по каждому студенту с сортировкой их по имени.

students.xml

students.xsl

Выход

Форматированный вывод сортировки

Тег <xsl: if> указывает условный тест на содержание узлов.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: if> .

Атрибуты

тестовое задание

Условие в данных XML для проверки.

тестовое задание

Условие в данных XML для проверки.

элементы

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция обработки, xsl: шаблон, xsl: variable, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

xsl: apply-templates, xsl: атрибут, xsl: call-template, xsl: выбор, xsl: комментарий, xsl: копия, xsl: copy-of, xsl: элемент, xsl: for-each, xsl: if, xsl: инструкция обработки, xsl: текст, xsl: значение-значения, xsl: переменная, выходные элементы

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция обработки, xsl: шаблон, xsl: variable, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

xsl: apply-templates, xsl: атрибут, xsl: call-template, xsl: выбор, xsl: комментарий, xsl: копия, xsl: copy-of, xsl: элемент, xsl: for-each, xsl: if, xsl: инструкция обработки, xsl: текст, xsl: значение-значения, xsl: переменная, выходные элементы

Демо-пример

В этом примере создается таблица элемента <student> с его атрибутом rollno и его дочерним элементом <firstname>, <lastname>, <nickname> и <marks> путем итерации по каждому студенту. Он проверяет отметки, чтобы быть больше 90, а затем печатает данные студента (ов).

students.xml

students.xsl

Выход

Форматированный вывод IF

Тег <xsl: choose> задает несколько условных проверок содержимого узлов вместе с элементами <xsl: else> и <xsl: when>.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: choose> .

элементы

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция обработки, xsl: шаблон, xsl: variable, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

xsl: в противном случае xsl: когда

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: for-each, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция обработки, xsl: шаблон, xsl: variable, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

xsl: в противном случае xsl: когда

Демо-пример

В этом примере создается таблица элемента <student> с его атрибутом rollno и его дочерним элементом <firstname>, <lastname>, <nickname> и <marks> путем итерации по каждому студенту. Он проверяет, а затем печатает детали оценки.

students.xml

students.xsl

Выход

Форматированный Выберите вывод

Элемент тега <xsl: key> указывает именованную пару имя-значение, назначенную определенному элементу в документе XML. Этот ключ используется с функцией key () в выражениях XPath для доступа к назначенным элементам в документе XML.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: key> .

Атрибуты

Название ключа, который будет использоваться.

Шаблоны, используемые для идентификации узла, который содержит этот ключ.

использование

Выражение XPath для определения значения узлов документа xml.

Название ключа, который будет использоваться.

Шаблоны, используемые для идентификации узла, который содержит этот ключ.

использование

Выражение XPath для определения значения узлов документа xml.

элементы

Количество вхождений неограниченный
Родительские элементы XSL: таблицы стилей
Дочерние элементы Никто

Демо-пример

В этом примере создается таблица элемента <student> с его атрибутом rollno и его дочерним элементом <firstname>, <lastname>, <nickname> и <marks> путем итерации по каждому студенту. Он проверяет ключ как имя, чтобы быть одним из имени студента, а затем печатает данные студента.

students.xml

students.xsl

Выход

Форматированный ключ вывода

декларация

Ниже приводится объявление синтаксиса элемента <xsl: message> .

Атрибуты

Он указывает, должно ли преобразование завершаться при выполнении этой инструкции или нет. По умолчанию «да».

Он указывает, должно ли преобразование завершаться при выполнении этой инструкции или нет. По умолчанию «да».

элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция по обработке, xsl: template, xsl: переменная, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

xsl: apply-templates, xsl: атрибут, xsl: call-template, xsl: выбор, xsl: комментарий, xsl: копия, xsl: copy-of, xsl: элемент, xsl: for-each, xsl: if, xsl: инструкция обработки, xsl: текст, xsl: значение-значения, xsl: переменная, выходные элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция по обработке, xsl: template, xsl: переменная, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

xsl: apply-templates, xsl: атрибут, xsl: call-template, xsl: выбор, xsl: комментарий, xsl: копия, xsl: copy-of, xsl: элемент, xsl: for-each, xsl: if, xsl: инструкция обработки, xsl: текст, xsl: значение-значения, xsl: переменная, выходные элементы

Демо-пример

students.xml

students.xsl

Выход

Тег <xsl: apply-template> сигнализирует процессору XSLT найти подходящий шаблон для применения на основе типа и контекста каждого выбранного узла.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: apply-template> .

Атрибуты

Используется для обработки узлов, выбранных выражением XPath, вместо обработки всех дочерних элементов.

Позволяет элементу, указанному в его квалифицированных именах, обрабатываться несколько раз, каждый раз получая разные результаты.

Используется для обработки узлов, выбранных выражением XPath, вместо обработки всех дочерних элементов.

Позволяет элементу, указанному в его квалифицированных именах, обрабатываться несколько раз, каждый раз получая разные результаты.

элементы

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция по обработке, xsl: template, xsl: переменная, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

xsl: sort, xsl: with-param

Родительские элементы

xsl: attribute, xsl: comment, xsl: copy, xsl: element, xsl: fallback, xsl: foreach, xsl: if, xsl: message, xsl: иначе, xsl: param, xsl: инструкция по обработке, xsl: template, xsl: переменная, xsl: when, xsl: with-param, выходные элементы

Дочерние элементы

xsl: sort, xsl: with-param

Демо-пример

В этом примере создается список элемента <student> с его атрибутом rollno и его дочерним элементом <firstname>, <lastname>, <nickname> и <marks> путем итерации по каждому студенту.

students.xml

students.xsl

Выход

Форматированный вывод шаблона

Тег <xsl: import> импортирует содержимое одной таблицы стилей в другую. Импорт таблицы стилей имеет более высокий приоритет по сравнению с импортированной таблицей стилей.

декларация

Ниже приводится объявление синтаксиса элемента <xsl: import> .

Язык преобразований XSLT

XSLT (eXtensible Stylesheet Language Transformations) - расширяемый язык преобразования листов стилей.

Язык XSLT служит транслятором, с помощью которого можно свободно модифицировать исходный текст. XLST играет решающую роль в утверждении XML в качестве универсального языка хранения и передачи данных. Область применения XSLT широка - от электронной коммерции до беспроводного Web.

Фактическая сборка результирующего документа происходит, когда исходный документ и лист стилей XSLT передаются в синтаксический анализатор XSLT (XSLT-процессор).

При использовании XSLT в среде Web синтаксический анализ может происходить либо на стороне пользователя (т.е. в пользовательском браузере), либо на стороне сервера.

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

Здесь transform.xsl - имя файла листа стилей XSLT.

Шаблоны

Каждый элемент XSLT начинается префиксом xsl:. Элемент xsl:stylesheet служит контейнером для листа стилей XSLT. Атрибут version="1.0" этого элемента определяет версию спецификации XSL.

Преобразования XSLT основаны на шаблонах. Шаблон определяется инструкцией xsl:template.

XSLT-процессор анализируют исходный документ и пытается найти подходящий XSL-шаблон. Если такой шаблон найден, то выполняются инструкции внутри него.

Обработка всегда начинается с шаблона, где match="/". Это значение пути адресации соответствует корневому узлу (в примере 1 это книга).

Пример 1

Исходный XML

Преобразование XSLT ( файл t01.xsl )

Михаил Булгаков

  1. инструкцией xsl:value-of. В этом случае содержание элемента используется без какой-либо дальнейшей обработки (см. пример 2);
  2. инструкцией xsl:apply-templates. В этом случае XSLT-процессор продолжает обрабатывать выбранные элементы, для которых определен шаблон (см. пример 3).

Пример 2

Исходный XML

Преобразование XSLT ( файл t02.xsl )

Мастер и Маргарита. Михаил Булгаков

Пример 3

Исходный XML

Преобразование XSLT ( файл t03.xsl )

Мастер и Маргарита. Михаил Булгаков

В качестве значений атрибутов match и select используются выражения, синтаксис которых похож на маршрут файловой системы:

ВыражениеОписание /Корневой узел .Текущий узел ..Родительский узел текущего узла fruitУзел fruit fruit/limeПодузел lime узла fruit fruit/*Все потомки узла fruit /fruitУзел fruit, являющийся прямым потомком корневого узла @tasteАтрибут taste текущего узла @*Все атрибуты текущего узла fruit@tasteАтрибут taste узла fruit fruit/lime@tasteАтрибут taste узла lime, являющегося подузлом узла fruit ..@tasteАтрибут taste родительского узла //Любое количество промежуточных узлов fruit//limeВсе узлы lime, имеющие предка fruit |Знак разделения конкретных узлов lime|grapeУзел lime и узел grape []Предикатное выражение fruit[lime]Узел fruit, имеющий потомка lime fruit[lime="fine"]Узел fruit, имеющий потомка lime, значение которого равно fine fruit[@taste]Узел fruit, имеющий атрибут taste fruit[@taste="5"]Узел fruit, имеющий атрибут taste, значение которого равно 5 count(fruit/*)Количество потомков узла fruit name()Имя текущего узла

Сравните результаты примера 4 (перечисление узлов) и примера 5 (все узлы).

Читайте также: