Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
РАБОТА С ФРАГМЕНТАМИ XML
Можно работать не только с документами XML целиком, но и с их фрагментами. В этом случае следует установить атрибут omit-xml-declaration в «yes» — для того, чтобы опустить объявление XML в начале дерева вывода, как обсуждается в главе 6.
Когда вы используете метод вывода XML, дерево вывода представляет собой хорошо сформированный XML (однако он не обязан быть допустимым). Не обязательно оно должно быть хорошо сформированным XML-документом, это может быть общая разобранная внешняя сущность XML. Содержимое вывода может включать символьные данные, разделы CDATA, ссылки на сущности, инструкции обработки, комментарии и элементы. Вывод должен также удовлетворять объявлению пространств имен XML.
Метод вывода: текст
Метод текстового вывода предназначен не только для создания простого текста: он применяется для любого основанного на тексте формата, не являющегося XML или HTML. Например, с его помощью можно создавать документы в формате RTF (Rich Text Format). В этом формате для задания форматирования документов используются встроенные текстовые коды — их можно поместить в документы самостоятельно при помощи метода текстового вывода.
В листинге 2.6 приведен пример таблицы стилей (которую мы увидим в главе 6), преобразующей planets.xml
в planets.rtf
.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
{\rtf1\ansi\deff0{\fonttbl {\\fcharset0 Courier New:}}
\viewkind4\uc1\pard\langl033\b\ The Planets Table\par\b0
Name\tab Mass\tab Rad.\tab Day\par
\par
}
\tab
\tab
\tab
\tab
\par
Результирующий документ RTF, planets.rtf, изображен на рис. 2.3 в Microsoft Word 2000. Обратите внимание на то, что я установил метод вывода в текст в элементе :
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
{\rtf1\ansi\deff0{\fonttbl(\\fcharset0 Courier New;}}
\viewkind4\ucl\pard\lang1033\b\ The Planets Table\par
.
.
.

Рис. 2.3.Planets.rtf в Microsoft Word
Вы также могли заметить, что я принялся записывать коды RTF сразу же после элемента — я сделал так потому, что в документах RTF коды RTF должны появляться с самого начала. Если бы я решил вставлять коды RTF на следующей строке — например, так:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
{\rtf1\ansi\deff0{\fonttbl{\\fcharset0 Courier New;}}
\viewkind4\uc1\pard\lang1033\b\ The Planets Table\par
.
.
.
то выходной файл RTF начинался бы с символа новой строки, что вызвало бы ошибку приложения для работы с файлами RTF — такого, как Microsoft Word. Более подробно RTF и другие форматы будут рассмотрены в главе 6.
Упрощенные таблицы стилей
Как можно заметить на основе рассмотренного до сих пор материала, создавать таблицы стилей XSLT не так-то просто. W3C попытался облегчить эту процедуру, разработав упрощенные таблицы стилей (simplified stylesheets), в которые не нужно — а на самом деле и невозможно — включать элемент или какие-либо еще элементы высокого уровня.
Фактически упрощенная таблица стилей представляет собой результирующий документ, содержащий несколько элементов XSL невысокого уровня. W3C называет такую таблицу «элемент буквального результата как таблица».
В листинге 2.7 я осуществлю преобразование planets.xml
в planets.html
, но теперь я сделаю это при помощи упрощенной таблицы стилей. В упрощенных таблицах стилей вы не можете применять элементы высокого уровня, такие как , позволяющие рекурсивную обработку всех элементов в исходном документе. Поэтому здесь я зайду немного вперед и воспользуюсь элементом (рассматриваемым в главе 5), который, не являясь элементом высокого уровня, позволяет обработать в цикле сразу несколько узлов.
Мне также нужно каким-либо образом выбрать все элементы в исходном документе, и вы можете подумать, что это невозможно без использования шаблонов нескольких уровней — например, один для корневого узла, затем один для выбора на следующем уровне вниз, корневом элементе , и затем еще один уровень вниз для самих элементов . Однако, используя XPath, можно при помощи выражения " //PLANET
" найти все узлы элемента , производные от корневого узла (см. главу 4). Это значит, что я могу написать упрощенную таблицу стилей следующим образом.
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
Данная версия работает точно так же, как и предыдущая версия planets.xsl
, при этом совсем не используя элементы высокого уровня. Упрощенные таблицы стилей, такие как эта, были представлены в помощь авторам HTML при осуществлении преобразований в XSL, однако их применимость весьма ограничена. Очевидно, все равно нужно знать, как работать с элементами XSL, а отсутствие возможности использовать в данном случае только затруднило работу. Однако вы должны знать, что упрощенные таблицы стилей существуют и включены в спецификацию XSLT.
ОБРАБОТКА ПО УМОЛЧАНИЮ БЕЗ ЭЛЕМЕНТА
Если процессор XSLT не может найти в таблице стилей элемент , он трактует таблицу как упрощенную таблицу стилей.
Встроенные таблицы стилей
Рекомендация XSLT также поддерживает встроенные таблицы стилей, embedded stylesheets (вслед за использованием встроенных таблиц стилей и элементов стиля в HTML), но, как и упрощенные таблицы стилей, они не очень распространены.
Встроенные таблицы стилей могут обрабатывать не все процессоры XSLT, но некоторые — в частности, Saxon — могут. Давайте рассмотрим пример. В этом случае я включил весь элемент таблицы стилей целиком из planets.xsl
в planets.xml
для создания нового документа, embedded.xml
. В новом документе будут содержаться все данные и вся таблица стилей. Заметьте, что для того, чтобы быть хорошо сформированным XML, embedded.xml
должен иметь только один корневой элемент, поэтому я сделал таблицу стилей (то есть элемент ) родительским элементом корневого элемента .
Чтобы указать, какой элемент будет трактоваться как встроенная таблица стилей, я задал элементу ID "stylesheet", установив атрибут id
в это имя:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
В начале документа я также присваиваю это имя, "stylesheet", атрибуту href
элемента :
Теперь процессору XSLT известно, какой элемент я хочу использовать в качестве таблицы стилей — элемент с ID "stylesheet". Но что это за элемент? Элементы XML формируют элементы типа ID в объявлениях DTD или схемах XML, и, как вы помните, информация объявлений DTD и схем пока еще не передается процессору XSLT.
Некоторые процессоры XSLT, такие как Saxon, читают объявление DTD, если оно есть, для определения атрибутов, обладающих типом ID, поэтому я включил DTD в embedded.xml
(листинг 2.8).
Интервал:
Закладка: