Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
The Planets Table
The Planets Table
</Н1>
Name | Mass | Radius | Day |
Mercury | .0553(Very heavy) | 1516 miles | 58.65 days |
Venus | .815(Very heavy) | 3716 miles | 116.75 days |
Earth | 1(Very heavy) | 2107 miles | 1 days |
УСОВЕРШЕНСТВОВАНИЯ В XSLT 2.0
Вопрос приоритета шаблонов должен быть учтен в XSLT 2.0. В частности, W3C рассматривает возможность добавления нового элемента с предварительным названием , который позволит выбирать для шаблона второй лучше всего подходящий элемент.
О приоритетах полезно знать еще одно: если двум шаблонам удовлетворяет один и тот же узел, и этим шаблонам не были присвоены приоритеты, процессор XSLT выберет шаблон с более узким правилом выбора. Например, условию " PLANET
" будет отдано предпочтение перед обобщенным условием " *
".
Элемент
Элемент позволяет скопировать узел из исходного дерева в выходное. Заметьте, однако, что это поверхностное (shallow) копирование, при котором не копируются потомки и атрибуты узла. У элемента есть один атрибут:
• use-attribute-sets
. Задает названия наборов атрибутов, которые нужно применить к создаваемому элементу. Принимает значение списка QName
, разделенных символами-разделителями. Этот атрибут можно использовать только в том случае, когда контекстный узел является элементом. Дополнительная информация о наборах атрибутов приведена в главе 6.
Этот элемент может содержать тело шаблона, которое используется только когда копируется корневой узел или элемент. Заметьте, что при применении к корневому узлу элемент не задействован, поскольку узел выходного документа создается автоматически.
Приведенная в листинге 3.9 таблица стилей впервые появилась в главе 2; все, что она делает, — копирует все элементы из исходного документа в результирующий.
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Однако не копирует атрибуты — вот результат применения этой таблицы стилей к planets.xml
:
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
Копирование атрибутов несколько сложнее, потому что нужно найти какой-либо способ применить к каждому атрибуту элемента. Это можно сделать, например, при помощи элемента , о котором пойдет речь в главе 5.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
А вот результат — заметьте, что на этот раз атрибуты не затронуты:
Mercury
.0553
58.65
1516
.983
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
128.4
Но есть более простой путь проверить, что копируются все дочерние узлы, атрибуты и другие потомки узлов: вместо элемента можно применить .
ГЛУБОКОЕ КОПИРОВАНИЕ
Пример использования для осуществления глубокого копирования документа будет приведен в главе 4, в которой описывается функция узла и объясняется, как рекурсивно вызывать один и тот же шаблон.
Элемент
Элемент позволяет осуществлять глубокое копирование узлов, при котором копируется не только узел, но и все его атрибуты и потомки. У этого элемента единственный атрибут:
• select
(обязательный). Узел или набор копируемых узлов. Этот элемент пуст и не имеет содержимого.
Ниже приведен пример работы этого элемента; в этом случае я заменил в листинге 3.10 элемент элементом , который явно выбирает для копирования все атрибуты контекстного элемента.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
Этот код работает так же, как и предыдущий пример, копируя все элементы и атрибуты. С другой стороны, можно вообще обойтись без каких-либо изменений в листинге 3.10, — я могу просто использовать для того, чтобы скопировать весь документ, выбрав корневой узел и скопировав всех его потомков:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
При помощи можно также копировать конкретные узлы и их потомков вместо того, чтобы задавать подстановку *. Например, следующее правило копирует все элементы и их потомков:
По этой причине я могу заменить элемент на элемент :
Элемент
При помощи элемента можно дать указание процессору XSLT отобразить сообщение и, по выбору, прекратить обработку таблицы стилей. У элемента один атрибут:
• terminate
(необязательный). Значение «yes» прекращает обработку. По умолчанию установлено «no».
Куда на самом деле будет отправлено сообщение, зависит от процессора XSLT. Для процессоров, основанных на Java, сообщение обычно отправляется в выходной поток ошибок Java, которому соответствует экран компьютера, если процессор XSLT был вызван из командной строки. Другие процессоры XSLT могут выводить сообщения во всплывающие окна или в web-страницы, отправляемые в браузеры.
В приведенном ниже листинге 3.12 я прекращаю обработку XSLT, когда процессор XSLT пытается преобразовать элемент в planets.xml
, выводя сообщение " Sorry, DAY information is classified.
" (Извините, информация о параметре «ДЕНЬ» засекречена.).
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
Sorry. DAY information is classified.
Вот результаты применения этой таблицы стилей в Xalan:
C:\planets>java org.apache.xalan xslt.Process -IN planets.xml -XSL message.xsl -OUT planets.html
file:///C:/XSL/messages/message.xsl: Line 49; Column 38;
Sorry. DAY information is classified.
XSLT Error (javax.xml.transform.TransformerException):
Stylesheet directed termination
При помощи элемента можно выводить информацию о том, что происходит при обработке таблицы стилей, что может пригодиться не только для вывода ошибок и предупреждений, но и для отладки таблиц стилей.
Далее в книге будут рассмотрены и другие посвященные шаблонам темы — такие, как вызов именованных шаблонов и использование параметров. В следующей главе мы перейдем к большой и важной теме — созданию образцов выбора, при помощи которых в XSLT можно выбирать, какие узел или узлы вам нужны для работы. Мы уже затрагивали тему работы с образцами выбора, теперь же пора перейти к их систематическому рассмотрению.
Глава 4
Создание образцов выбора
До сих пор материал книги был достаточно очевиден, за исключением одного: несколько загадочных образцов выбора (match pattern). Мы работали с различными образцами выбора, такими как «/PLANETS» в элементах , не предлагая систематического объяснения того, как в действительности работают эти образцы, — как в этом случае:
Читать дальшеИнтервал:
Закладка: