Файл xsl что это

XSL-таблицы стилей: отображение XML-документа

Основы использования XSL-таблиц стилей

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

Если XML-документ не связан ни с CSS-таблицей, ни с XSL-таблицей стилей, Internet Explorer отобразит документ с помощью встроенной XSL-таблицы, которая используется по умолчанию. Эта таблица расположена на вашем локальном компьютере по такому адресу:

Вы можете просмотреть эту таблицу, введя указанный URL в адресную строку Internet Explorer.

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

Шаблоны имеют следующую форму:

Браузер использует каждый шаблон для отображения определённой ветви элементов в иерархии XML-документа. Атрибут match шаблона указывает на определённую ветвь и аналогичен селектору в правиле CSS. Значение атрибута match называется образцом (pattern). Образец в приведённом выше примере («/») представляет «элемент», для которого является дочерним корневой элемент XML-документа (т.е. представляет «сам» XML-документ). Этот шаблон будет таким образом служить для отображения всего XML-документа. Каждая XSL-таблица стилей должна содержать один и только один шаблон с образцом «/». Вы также можете включить один или несколько дополнительных шаблонов для отображения определённых подчинённых ветвей XML-документа.

Каталог товаров

Браузер отличает XML-элемент от HTML-элемента, поскольку первый имеет префикс xsl.

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

Вам не нужно включать в XSL-шаблон HTML-элементы «HTML» и «BODY», поскольку они будут сформированы автоматически.

Чтобы отобразить все отвечающие образцу XML-элементы, а не только первый из них, следует использовать XSL-элемент for-each, например:

Заголовок

Атрибут select элемента for-each задаёт текущий элемент, поэтому внутри элемента for-each все образцы (пути к элементам в атрибутах select) задаются уже относительно этого текущего элемента.

Другой способ отображения всех отвечающих образцу XML-элементов, а не только первого из них, состоит в использовании XSL-элемента apply-templates:

Заголовок

В приведённом выше примере XSL-элемент apply-templates сообщает браузеру, что для каждого элемента PRODUCT внутри корневого элемента PRODUCTS он должен обрабатывать шаблон, для атрибута match которого установлено значение «PRODUCT».

Если вы не укажете атрибут select для элемента apply-templates, браузер будет обрабатывать соответствующий шаблон (если таковой имеется) для каждого дочернего элемента текущего элемента.

XSL трактует любой атрибут, принадлежащий любому элементу в XML-документе, как дочерний элемент. Однако, когда вы ссылаетесь на атрибуты, вы должны предварять имя атрибута символом @. Например, вот так может выглядеть ссылка на атрибут import элемента PRODUCT:

Пример отображения XML-документа

Попробуем отобразить с помощью XSL-таблицы стилей следующий XML-документ, представляющий из себя некий абстрактный упрощённый каталог товаров:

XSL-таблица стилей (файл Sample.xsl) для отображения приведённого выше XML-документа может выглядеть следующим образом:

Фильтрация и сортировка данных

Следующий образец указывает, что обрабатывать надо только импортные товары (т.е. только те элементы PRODUCT, у которых атрибут import равен «yes»:

Если в фильтр включено только имя элемента (без знака равенства и «контрольного» значения), проверяется только наличие этого дочернего элемента. Если элемент имеет более одного дочернего элемента с именем, указанным в условии фильтрации, проверяется только первый дочерний элемент.

Источник

Практический XSLT. Использование в качестве шаблонизатора

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

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

Рабочий стол

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

В качестве парсера (сборщика) конечного документа можно использовать браузер. Нужно лишь указать в XML-документы путь к файлу шаблону:

Хотя, как показала практика, этот механизм довольно глючный (мне пришлось пользовать IE). Лучше воспользоваться средствами XML-парсинга языка, на котором написана CMS-система. Я использую Parser (на нем, вообщем-то, у меня вся система и работает).

Входной XML-документ

Для начала разберемся со входным XML-документом. Для того, чтобы использовать XSL нужно иметь полное представление о его структуре.

Я использую следующую схему:

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

— заголовок XML-файла. Должен идти строго с начала файла. В нем прописана версия используемого XML-языка и кодировка документа. Я как правило работаю в windows-1251 (пока так удобнее), но, по идее UTF-8 лучше.

Подготовка XHML-шаблона

XSL-шаблон создается на базе XHTML-шаблона (некой типовой страницы сайта). Код XHTML-страницы, при этом, должен быть валидным.

Рассмотрим по шагам процесс создания шаблона.

Администрирование сайта

Основы описания XSL-шаблонов

Все файлы XSL-шаблонов имеют следующий вид:

данные шаблона

Структура папок шаблонов

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

В простейшем варианте можно создать каталог xsl и там все складировать.

Где:
— шаблон для элемента /node() (корневого). Вместо /node() можно указать //document, т.к. он у нас являеться корневым узлом.

Копируем весь XHTML-код внутрь блока

Этот шаблон будет автоматически применяться ко всему XML-документу. В нашем случае, XSL-преобразование заменит весь XML-код на XHTML-код вашего шаблона.

Где:

Директива импорта внешнего XSL-файла (обрабатываеться XSL-процессором) из указанного файла. Путь к файлу указываем относительный.

Создание шаблона для основного навигационного меню

Наш предыдущий шаблон не обладает никакой динамикой, т.к. просто заменяет весь выходной XML-документ на код нашего шаблона.

Меню навигации сайта строиться на основе его структуры, представленной в XML-документе в следующем виде:

Начало
/

1. Создаем в директории xsl/my_template файл navigation.xsl следующего вида:

2. Вставляем в шаблон код нашего меню из файла layout.xsl:

3. …а на его место в файле layout.xsl вставляем вызов нашего шаблона меню:

4. Плюс, добавим в файл layout.xsl директиву импорта файла шаблона navigation.xsl:

5. Далее, создаем в файле navigation.xsl еще один шаблон, для обработки пунктов меню:

Где:
— вызов шаблона по имени. При этом шаблон не имеет привязки к элементу, т.е. вызывается произвольно.

6. Немного изменяем шаблон sections:

Где:
— обработка всех элементов item элемента sections. При этом, элементы item самих элементов item (sections/item/item) обрабатываться не будут, т.е. выводиться только один уровень меню разделов.

Мы вынесли обработку элементов item (пунктов меню) в отдельный шаблон. При этом, в нем мы добавили еще и вызов другого шаблона:

Этот шаблон будет формировать нормальные uri-ссылки для элементов нашего меню. О нем немного позже.

7. Теперь нам необходимо доделать меню,

чтобы оно учитывало, какой раздел является текущим. Для этого нам придется добавить условную обработку в наш шаблон элемента item:

Здесь мы сталкиваемся с новой конструкцией:

…которая, собственно, и задает условную обработку XML-элементов. В качестве параметра мы задаем условие:

В нашем случае это условие равенства атрибутов ID у корневого элемента (document) и текущего элемента (item), которое и определяет, является ли элемент текущим.

8. Теперь, разберем шаблон href_attribute:

Здесь мы сталкиваемся с инструкцией xsl:attribute. Она позволяет создавать атрибуты для элементов внутри которого она вызывается. В нашем случае мы вызываем ее из элемента a, соответственно, она создаст для него атрибут href, т.е. адрес.

Далее, нам необходимо каким-то образом определить, как у нас будут обрабатываться модули содержимого. Но, об этом в следующий раз.

UPD:
Материалы к статье. Собрал из того, что было:
parser.proc.ru/iso/xslt-1.zip

В шаблоне все пути прописаны от корня (делал на основе шаблона работающего на реальном сайте) поэтому либо перепишите их на относительные либо запускайте из под Apache.

Источник

Файлы XSLT – чем открыть и преобразовать формат файла

Файл xsl что это. Смотреть фото Файл xsl что это. Смотреть картинку Файл xsl что это. Картинка про Файл xsl что это. Фото Файл xsl что это

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

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

Когда 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-файлы создают документы путём объединения инструкций XSL-файла и кода XML-файла. Для этой цели вы можете использовать XSL Transformer от FreeFormatter.com. Он поддерживает вставку значений XML и XSL на веб-сайт, а также загрузку этих файлов с вашего компьютера.

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

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

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

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

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

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

Источник

Файл xsl что это

Для того, чтобы работать с данным документом, вам необходимо располагать как минимум браузером Internet Explorer версии 5.0 и выше. При этом будут работать некоторые из приведенных в тексте примеров.

А теперь перейдем к основной части нашего документа.

Введение

Рассмотрим простой пример XML-файла (ex01.xml).

tutorial >
title > «Заметки об XSL» title >
author > Леонов Игорь Васильевич author >
tutorial >

Перепишем наш XML-файл в следующем виде (ex01-1.xml).

tutorial >
title > «Заметки об XSL» title >
author > Леонов Игорь Васильевич author >
tutorial >

И создадим XSL-файл ex01-1.xsl. Текст файла приведен ниже.

xsl:stylesheet version =» 1.0 » xmlns:xsl =» http://www.w3.org/TR/WD-xsl «>
xsl:template match =» / «>
p > strong > xsl:value-of select =» //title «/> strong > p >
p > xsl:value-of select =» //author «/> p >
xsl:template >
xsl:stylesheet >

«Заметки об XSL»

Леонов Игорь Васильевич

Перепишем XML-файл. Информационную часть изменять не будем, а шаблон укажем другой ex01-2.xml.

tutorial >
title > «Заметки об XSL» title >
author > Леонов Игорь Васильевич author >
tutorial >

Создадим XSL-файл ex01-2.xsl. Текст файла приведен ниже.

xsl:stylesheet version =» 1.0 » xmlns:xsl =» http://www.w3.org/TR/WD-xsl «>
xsl:template match =» / «>
p > strong > xsl:value-of select =» //author «/> strong > p >
p > xsl:value-of select =» //title «/> p >
xsl:template >
xsl:stylesheet >

Если мы теперь откроем файл ex01-2.xsl в браузере Internet Explorer, то результат будет другим.

Леонов Игорь Васильевич

«Заметки об XSL»

Первые шаги

Разберем теперь более подробно первый пример. Напомним его текст.

tutorial >
title > «Заметки об XSL» title >
author > Леонов Игорь Васильевич author >
tutorial >

Элементы могут иметь атрибуты, значения которых тоже могут обрабатываться в соответствии с шаблоном.

На верхнем уровне XML-файла всегда находится один элемент. То есть файл вида

tutorial >
title > «Заметки об XSL» title >
author > Леонов Игорь Васильевич author >
tutorial >
tutorial >
title > «Введение в CSP» title >
author > Леонов Игорь Васильевич author >
tutorial >

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

knowledgeDatabase >
tutorial >
title > «Заметки об XSL» title >
author > Леонов Игорь Васильевич author >
tutorial >
tutorial >
title > «Введение в CSP» title >
author > Леонов Игорь Васильевич author >
tutorial >
/knowledgeDatabase >

Для того, чтобы браузер выполнил необходимое преобразование, нужно в XML-файле указать ссылку на XSL-файл

Рассмотрим теперь текст XSL-файла

xsl:stylesheet version =» 1.0 » xmlns:xsl =» http://www.w3.org/TR/WD-xsl «>
xsl:template match =» / «>
p > strong > xsl:value-of select =» //title» «/> strong > p >
p > xsl:value-of select =» //author «/> p >
xsl:template >
xsl:stylesheet >

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

В первом примере мы посмотрели, как с помощью элемента xsl:value-of можно вывести в HTML-формате содержание элемента (текст, заключенный между тегами). Теперь мы посмотрим, как при помощи того же самого элемента можно вывести значение атрибута элемента.

Рассмотрим следующий XML-файл ex02-1.xml

В этом файле информация хранится не в содержании элементов, а в виде значений атрибутов. Файл ex02-1.xsl имеет вид

Результат имеет следующий вид:

Собака: Шарик. 18 кг, рыжий с черными подпалинами.

Результат будет тем же самым.

Собака: Шарик. 18 кг, рыжий с черными подпалинами.

Вывод результатов запроса

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

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

Простая таблица

В этот файл добавлен шаблон преобразования ex03-1.xsl.

Рассмотрим этот шаблон подробнее. Вот его текст.

КличкаВесЦвет
КличкаВесЦвет
Шарик18 кгрыжий с черными подпалинами
Тузик10 кгбелый с черными пятнами
Бобик2 кгбело-серый
Трезор25 кгчерный

Сортировка

В предыдущих примерах порядок строк в таблице полностью соответствовал группам тегов в XML-файле. Этот порядок можно изменять. Добавим в тег

КличкаВесЦвет
Бобик2 кгбело-серый
Трезор25 кгчерный
Тузик10 кгбелый с черными пятнами
Шарик18 кгрыжий с черными подпалинами
КличкаВесЦвет
Тузик10 кгбелый с черными пятнами
Шарик18 кгрыжий с черными подпалинами
Бобик2 кгбело-серый
Трезор25 кгчерный
КличкаВесЦвет
Бобик2 кгбело-серый
Тузик10 кгбелый с черными пятнами
Шарик18 кгрыжий с черными подпалинами
Трезор25 кгчерный
КличкаВесЦвет
Трезор10 кгчерный
Тузик10 кгбелый с черными пятнами
Бобик18 кгбело-серый
Шарик18 кгрыжий с черными подпалинами

При использовании нового синтаксиса используется ссылка на другое пространство имен

Это очень важный момент, и его никогда нельзя упускать из виду.

Кроме того, мы убрали атрибут order-by в элементе xsl:for-each и добавили другой элемент

Таблица результатов приведена ниже.

КличкаВесЦвет
Бобик2 кгбело-серый
Трезор25 кгчерный
Тузик10 кгбелый с черными пятнами
Шарик18 кгрыжий с черными подпалинами

С использованием нового синтаксиса легко сменить сортировку по возрастанию на сортировку по убыванию (ex03-8.xml, ex03-8.xsl). Этот пример работает только под управлением XML-парсера версии 3.

Разница заключается в одной строке

Таблица результатов приведена ниже.

КличкаВесЦвет
Шарик18 кгрыжий с черными подпалинами
Тузик10 кгбелый с черными пятнами
Трезор25 кгчерный
Бобик2 кгбело-серый

Покажем теперь сортировку по нескольким полям (ex03-9.xml, ex03-9.xsl). Этот пример работает только под управлением XML-парсера версии 3.

КличкаВесЦвет
Волчонок3 кгтемно-серый
Трезор10 кгчерный
Тузик10 кгбелый с черными пятнами
Бобик18 кгбело-серый
Шарик18 кгрыжий с черными подпалинами
КличкаВесЦвет
Волчонок3 кгтемно-серый
Тузик10 кгбелый с черными пятнами
Трезор10 кгчерный
Шарик18 кгрыжий с черными подпалинами
Бобик18 кгбело-серый

Рассмотрим теперь способы фильтрации строк таблицы. Первый пример использует старый синтаксис. В нем условие фильтрации указывается непосредственно в атрибуте select (ex04-1.xml, ex04-1.xsl).

Ниже приведена строка, в которую мы внесли необходимые изменения.

xsl:for-each select=»tutorial/enimals/dogs/dog [dogWeight$gt$10] » order-by=»number(dogWeight); dogName;»>

И таблица результатов.

КличкаВесЦвет
Шарик18 кгрыжий с черными подпалинами
Трезор25 кгчерный

Вы видите, что в таблице остались только те собаки, чей вес превышает 10 кг, причем первым стоит Шарик, чей вес меньше.

Все дальнейшие примеры в этом параграфе работают только под управлением XML-парсера версии 3.

В этом примере таблица результатов полностью аналогична предыдущей.

КличкаВесЦвет
Шарик18 кгрыжий с черными подпалинами
Трезор25 кгчерный

Полностью преимущества нового синтаксиса проявляются при использовании функций.

КличкаВесЦвет
Шарик18 кгрыжий с черными подпалинами
Тузик10 кгбелый с черными пятнами

В этом элементе мы использовали переменные. Значения переменных были инициализированы ранее

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

КличкаВесЦвет
Тузик10 кгбелый с черными пятнами
Трезор25 кгчерный

Этот пример полностью аналогичен предыдущему.

КличкаВесЦвет
Бобик2 кгбело-серый
Трезор25 кгчерный

Соответствующий фрагмент XSL-файла.

КличкаВесЦвет
Шарик18 кгрыжий с черными подпалинами

Можно добиться и эффекта оператора OR. Для этого нам нужно включить два цикла, в каждом из которых формируется своя выборка (ex04-7.xml, ex04-7.xsl).

Соответствующий фрагмент XSL-файла.

КличкаВесЦвет
Бобик2 кгбело-серый
Шарик18 кгрыжий с черными подпалинами
Трезор25 кгчерный

Фрагмент XSL-файла, который отвечает за требуемое чередование.

position() mod 2 = 0 «>
#CCCCCC

С элементом xsl:if и с функцией position() мы уже знакомы. Оператор mod дает нам остаток от деления на 2. А элемент xsl:attribute позволяет нам динамически подставлять в файл результатов различные атрибуты. Это очень мощный элемент, мы разберем еще одно применение этого элемента в следующем параграфе. А сейчас приведем для полноты картины таблицу результатов.

КличкаВесЦвет
Шарик18 кгрыжий с черными подпалинами
Тузик10 кгбелый с черными пятнами
Бобик2 кгбело-серый
Трезор25 кгчерный

Динамическое формирование атрибутов на примере параметров ссылки в теге

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

И, наконец, мы ознакомились с комментариями в XSL-файлах. Это вторая строка приведенного фрагмента.

JavaScript и XML

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

Перейдем к реализации этой программы.

Приведем здесь текст элемента xsl:sort для каждого файла

Теперь нам осталось только объединить все это вместе. Ниже мы полностью приводим текст файла ex05-1.htm, сопроводив его необходимыми комментариями.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *