Что такое xslt преобразование
Как использовать преобразования XSLT в файлах обмена данными Project XML
Стандарт Extensible Stylesheet Language Transformation (XSLT) указывает определение языка для преобразований данных XML. XSLT используется для преобразования XML-документов в XHTML-документы или в другие XML-документы. В этой статье показано, как использовать XSLT с Microsoft Office Project XML-файлами обмена данными 2007 г. для фильтрации и отображения сведений о проекте. (Содержимое этой статьи было предоставлено Джессикой Бриттон, корпорация Майкрософт.)
Сведения о сохранении проектов в виде Project XML-файлов обмена данными см. в материалах Saving and Opening Projects in XML Format.
Таблица стилей XSLT — это XML-документ, состоящий из сочетания разметки XHTML, правил шаблона XSLT и отчетов XPath, которые работают вместе.
Разметка XHTML определяет среду отображения, в которой представлены XML-данные.
Правила шаблона XSLT предоставляют инструкции по преобразованию элемента XML источника определенным образом.
В заявлениях XPath определяются определенные элементы в документе XML.
Если элемент XML соответствует шаблону XPath, вызывается связанное правило шаблона XSLT. Преобразованные данные затем отображаются в рамках отображения, заданной разметка XHTML.
Дополнительные сведения о правилах шаблона XSLT и утверждениях XPath см. в ссылке в конце этой статьи.
Отображение Project с помощью преобразований XSLT
Процедура 1. Чтобы создать таблицу стилей XSLT:
Создайте XSLT-файл для таблицы стилей. Если вы работаете в Microsoft Visual Studio 2005 г., вы можете использовать шаблон XSLT File (в Visual Studio нажмите кнопку Файл, указать на Новый , а затем нажмите файл . Этот шаблон предварительно заселяется кодом XML, показанным в следующем примере. Если вы работаете в другом тексте или редакторе XML, скопируйте XML-шаблон и вклейте его в XSLT-файл.
Удалите следующий комментарий по коду XML. Здесь вы пишете XSLT-код.
Создайте код XSLT. Код XSLT, показанный в этом примере, делает следующее:
Отображает текстовое значение имени ребенка элемента Project в загонах.
Проверяет ребенка сводки каждого элемента Задачи, чтобы узнать, является ли значение 0 (false).
Тестирует критическое дитя каждого элемента Задачи, чтобы узнать, является ли значение 1 (true).
Отображает данные для критически важных задач, которые не являются сводными задачами в жирный шрифт.
Отображает данные для некритических задач, которые не являются сводными задачами.
Сортировка сведений о ресурсах в алфавитном порядке по текстовому значению имени каждого элемента Ресурса.
Тестирует переоправдаемого ребенка каждого элемента Ресурса, чтобы узнать, является ли значение 1 (true).
Отображает отсортченные данные ресурсов только для перенаваляемых ресурсов.
Сохраните файл в качестве ProjectTransform.xslt.
После создания таблицы стилей XSLT необходимо связать Project XML-файл с ней, добавив инструкции по обработке. В процедуре 2 показано, как связать файл ProjectTransform.xslt, созданный в процедуре 1, с любым Project XML-файлом.
Процедура 2. Чтобы изменить Project XML-файл, используйте таблицу стилей XSLT:
Откройте файл Project XML в Visual Studio или в другом тексте или редакторе XML.
Вставьте следующую строку кода после объявления XML, которая является первой строкой в Project XML-файле.
Удалите объявление пространства имен XML из Project, который является корневым элементом Project XML-файла. Если вы не удалите объявление пространства имен, встроенное в элемент Project, XPath не будет соответствовать элементам в XML Project XML-файле.
После выполнения этапов 2 и 3 первые три строки XML Project XML-файла должны выглядеть следующим примером кода.
Сохраните Project XML-файл.
Рекомендуется сохранить файл с помощью имени файла, которое отличается от исходного имени XML Project XML, так как изменения, внесенные в шаге 3, отсоедят XML-файл Project от схемы Project XML-обмена данными.
Просмотр преобразованного Project XML-файла. Преобразование XSLT можно выполнить в Visual Studio, задав свойство Stylesheet XML Project xML-файла ProjectTransform.xslt, а затем выбрав show XSLT Output из меню XML.
Вы также можете открыть Project XML-файл в Internet Explorer 7, Microsoft Office Word 2007 или любом другом приложении, которое поддерживает XSLT.
На рисунке 1 показан преобразованный выход Project XML-файла в Word 2007. Когда вы открываете Project XML-файл, по умолчанию отображается только представление данных. Чтобы просмотреть преобразованный выход, необходимо выбрать представление данных ProjectTransform.xslt в области документов XML.
Рисунок 1. XML-файл преобразованного проекта
XSLT первый шаг
1. Введение
Важные ссылки по теме, первоисточники:
Переводы на русский язык:
Для лучшего понимания всего происходящего я рекомендую читать спецификации в следующем порядке:
Особо пытливые могут также уделить внимание расширенному языку стилей XSL.
2. Валидный XHTML
Что такое валидный XHTML? В первую очередь, это XML-документ, который должен соответствовать спецификации XML. Во-вторую, почти обычная HTML-страница, к которой все привыкли.
Почему нужен именно XHTML? Исключительно из соображений совместимости и кросс-браузерности. Страница в XHTML будет с большей вероятностью отображаться корректно в популярных браузерах, чем обычный HTML.
Для рядового клепателя страниц словосочетание XML-документ должно означать следующее:
Также сам XHTML обязывает выполнять следующие условия:
Пример простого документа XHTML1.0:
И так обо всём по порядку.
Объявление XML-документа, в котором указывается его версия и кодировка.
Для большей безопасности кодировку нужно всегда выставлять, иначе могут возникнуть проблемы с невалидными (по отношению к дефолтной кодировке) символами.
Объявление типа документа и его схемы.
Объявление пространства имён и используемого языка.
Очень важно указывать ссылку именно в таком регистре и никак иначе. Это связано с тем, что в XML имена элементов и содержимое их атрибутов регистрозависимы.
Три версии XHTML1.0 предназначены для лучшей обратной совместимости:
Помимо XHTML1.0 на данный момент доступен XHTML1.1:
XHTML1.1 по сути является тем же XHTML1.0 Strict и призван вытеснить другие версии XHTML1.0. Однако, по сравнению с XHTML1.0 Strict, у него есть ряд отличий:
Итак, если вам нужна наибольшая кросс-браузерность и совместимость с рекомендациями W3C, то XHTML1.1 самое оно!
Из этих соображений результатом моих преобразований будет именно XHTML1.1.
3. XSLT-преобразования
Что такое XSLT? Это язык преобразований XML-документа, который был разработан как часть расширенного языка стилей (XSL).
Зачем нужен XSLT? Он позволяет реализовать схему, при которой данные хранятся отдельно, а их представление отдельно. То есть, один XML-документ преобразуется с помощью другого XML-документа (XSL, в котором находятся XSLT-шаблоны) в конечный документ. Результатом может быть XML, HTML или текстовый документ любого формата.
Для того, чтобы воспользоваться XSLT-преобразованиями, в первую очередь нужно сформировать правильный стиль XSL и подключить его к XML-файлу.
Валидным XSL-документом является XML-документ, у которого задано пространство имён xsl и присутствует корневой элемент stylesheet. В самом простом случае стиль может выглядеть, например, так:
Этот стиль не содержит каких-либо явных определений шаблонов или других элементов XSL. Однако, его уже можно использовать. Чтобы посмотреть результат, достаточно сформировать произвольный XML-документ и подключить к нему этот стиль:
За подключение стиля отвечает строка:
Если файлы text.xml и test.xsl созданы и находятся в одной папке, то с помощью любого XSLT-парсера можно преобразовать исходный test.xml в результирующий документ. В качестве парсера могут выступать все популярные браузеры (IE5+, FF2+, Opera9+ и другие), а также модули в языках программирования, например, в PHP. Если вы используете браузер, то достаточно открыть test.xml, и он сразу отобразит примерно такой результат:
При этом кодировка результата будет UTF-8, несмотря на то, что исходный документ был сформирован в windows-1251. К сожалению, браузеры обычно не позволяют просмотреть код результирующего документа, но модуль XSLT в PHP5 даёт возможность передать результирующий код в переменную, которую можно сохранить в файл. Поэтому, используя PHP, я приведу исходный код результирующего документа:
Этот код не является валидным XML-документом и тем более XHTML1.1. Для того, чтобы сформировать нужный код, я усложню исходный XSL-стиль и добавлю туда необходимые шаблоны и преобразования. При этом исходный XML-документ останется без изменений.
В качестве примера я приведу XSL-стиль, который при помощи XSLT будет выводить список атрибутов исходного XML-документа с их значениями, при этом будет формироваться валидный XHTML1.1. Итак, стиль:
Чтобы понять, как он работает, я распишу каждое действие отдельно:
Документ сформирован в кодировке windows-1251, о чём сообщается в атрибуте encoding. Версию XML-документа желательно всегда указывать, это рекомендация W3C.
Затем идёт объявление корневого элемента, стиля:
Следующим шагом в корневом элементе stylesheet объявляется, каким образом нужно формировать результирующий документ:
Объявление основного шаблона:
Именно этот XSLT-шаблон соответствует корню исходного дерева и будет вызван первым для преобразования. Атрибут match принимает значения, которые должны соответствовать языку поиска элементов XPath.
Остальные шаблоны, если таковые имеются, должны подключаться из этого шаблона при помощи средств XSLT.
Атрибут xmlns= «http://www.w3.org/1999/xhtml» указывает на пространство имён xhtml, которое будет применено по умолчанию к этому элементу и всем дочерним элементам, у которых оно не задано явно.
Атрибут xml:lang= «ru» указывает на язык, в котором сформирована страница (будущая).
Эта часть стиля была нужна для формирования атрибутики валидного XHTML1.1 кода.
Теперь что касается XSLT-преобразований:
Вставка простого текста:
Текст «Мой список:» будет подставлен в тег
Организация цикла по выборке:
Атрибут select принимает выражение XPath, на основе которого делает выборку. Если выборка вернула список узлов, то начинает работать цикл по каждому элементу.
В данном случае выборка вернёт список атрибутов для этого (корневого) и всех дочерних элементов.
В данном случае проверяется на чётность позиция элемента в списке выборки. Если тест возвращает true (порядковый номер элемента чётный), то срабатывает содержимое этого элемента.
Управление атрибутами вышестоящего элемента:
Вывод значений элемента:
Этот код подставит в вышестоящий элемент строку, собранную из имени текущего элемента и его значения. Содержимое атрибута select соответствует XPath.
Вывод ссылки на разработчика парсера XSLT:
Этот небольшой код XSLT формирует ссылку на разработчика парсера XSLT. Во многих случаях она будет разная и содержать разные значения.
Результатом обработки этого стиля ( test.xsl ) станет такой код:
Этот код соответствует стандарту XHTML1.1 и был сформирован на основе исходного XML-документа. Для проверки можно воспользоваться валидатором от W3C, который расположен по адресу http://validator.w3.org/.
В браузере этот код выглядит примерно так:
IE 6 | FireFox 3 | Opera 9.02 |
---|---|---|
4. Приложение
Ссылки на исходный код
Постоянный адрес статьи //anton-pribora.ru/articles/xml/xslt-first-step/. /Автор: Прибора Антон Николаевич, 2009 год/
Использование PHP5 для обработки XSLT
Для получения результирующего документа при помощи PHP5 я использовал такой код:
Дополнительную информацию по использованию XSLT в PHP5 можно найти по адресу http://ru2.php.net/manual/ru/book.xslt.php.
Мысли вслух
«Товарищи, мы стоим на краю огромной пропасти! И я предлагаю сделать большой, решительный шаг вперёд!»
© 2021 Антон Прибора. При копировании материалов с сайта, пожалуйста, указывайте ссылку на источник.
Языки XSL(T)
В HTML используются предопределенные теги, значение и способ отображения которых хорошо понятны.
CSS используется для добавления стилей элементам HTML.
В XML используются теги не определенные заранее, что делает значение каждого тега не ясным изначально.
Например, элемент