Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Для IE версии 5.5 или более ранней необходимо внести изменения и в planets.xml
, и в planets.xsl
. Для того чтобы использовать planets.xml
в IE, необходимо преобразовать атрибут type
в инструкции обработки из «text/xml» в «text/xsl» (листинг 2.14).
Mercury .0553
58.65
1516
983
43.4
Venus
.815
116.75
3716
.943
66.8
Earth
1
1
2107
1
1284
Для работы в IE версии 5.5 или младше необходимо также преобразовать таблицу стилей planets.xsl
. Главное отличие между рекомендацией W3C XSL и реализацией XSL в IE состоит в том, что в IE версии 5.5 и младше не реализованы никакие правила XSL по умолчанию — см. главу 3 (заметьте, что IE версии 6.0 на момент выхода этой книги в свет не обременён такой проблемой). Это значит, что для IE версии 5.5 или младше я должен включать правило XSL для корневого узла документа, который задается при помощи «/». Я также должен использовать в таблице стилей другое пространство имен XSL, «http://www.w3.org/TR/WD-xsl», и опустить атрибут версии в элементе (листинг 2.14).
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
Вот и все! Теперь мы успешно изменили planets.xml
и planets.xsl
для прямого просмотра в Internet Explorer. Такие изменения необходимо провести для навигации непосредственно по XML-документам с таблицами XSL в этом браузере.
На этом завершается обзор работы с таблицами стилей в XSL. В следующей главе мы более подробно познакомимся с основной частью таблиц стилей — шаблонами.
Глава 3
Создание и применение шаблонов
Эта глава полностью посвящена созданию шаблонов и работе с ними как с основой таблиц стилей XSLT. Каждый шаблон образует правило, которое процессор XSLT пытается применить к исходному документу.
В главе 2 мы кратко рассмотрели таблицы стилей и основные шаблоны, при помощи которых наши примеры таблиц стилей в действительности могли что-то сделать. В этой главе мы собираемся подробно изучить шаблоны, а в следующей мы увидим, какие виды выражений можно применять для создания образцов выбора в шаблонах, позволяющих находить требуемые узлы. Образцы выбора (match pattern) являются подмножеством всего языка XPath и достаточно сложны для того, чтобы посвятить им отдельную главу.
В этой главе мы сначала рассмотрим, как работают основные шаблоны, и затем перейдем к таким темам, как правила шаблонов по умолчанию, выбор шаблона для работы, обработка атрибутов, создание мелких и глубоких копий элементов, завершение обработки шаблона и многое другое.
Создание шаблона
В главе 2 для выбора узлов в planets.xml
и преобразования этого документа в HTML я создал основной шаблон. Шаблоны в таблицах стилей создаются при помощи элементов , задающих правила для требуемых преобразований. Мы создали шаблон, находивший корневой элемент по образцу " /PLANETS
", которому соответствуют все элементы , дочерние для корневого узла:
xmlns:xsl="http.//www.w3.org/1999/XSL/Transform">
.
.
.
.
.
.
Когда процессор XSLT находит узел, удовлетворяющий образцу вашего шаблона, этот узел становится контекстным узлом шаблона, то есть все операции производятся над этим узлом. На текущий узел можно ссылаться при помощи выражения XPath «.». Другие выражения XPath мы рассмотрим в этой главе и в главе 7.
УСОВЕРШЕНСТВОВАНИЯ В XSLT 2.0
В XSLT 1.0 возникали трудности при выборе элементов или атрибутов с нулевыми значениями, что должно быть исправлено в XSLT 2.0.
Внутри шаблона создайте разметку HTML, начинающую требуемую таблицу, — такая прямая вставка разметки называется элементом буквального (literal) результата. Когда процессор встречает литерал, он копирует его в результирующее дерево:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
.
.
.
Однако это правило обрабатывает только элемент , но не его дочерние элементы , содержащие сами данные. В соответствии с правилами шаблона по умолчанию, элементы будут обрабатываться, если установить шаблон для их выбора. Это, кстати, нежелательно, поскольку я хочу вставить результат обработки элементов в определенное место в создаваемом файле HTML. Для этого мне потребуется применить элемент .
Обработка дочерних узлов
Элемент дает указание процессору XSLT обрабатывать все совпадающие шаблоны для дочерних узлов контекстного узла. Элемент дает возможность явно указать, когда следует закончить обработку дочерних узлов, а это имеет решающее значение при вставке их данных в нужное место в HTML-таблице.
Один важный момент часто вызывает затруднения: элемент по умолчанию применяет шаблоны только к дочерним узлам контекстного или выбранного узла или набора узлов. Это выглядит довольно безобидно, но многие люди забывают о том, что атрибуты не считаются дочерними узлами элементов и также ими не являются объявления пространств имен. Это значит, что для обработки как элементов, так и атрибутов следует осуществить еще один или два дополнительных шага, что мы увидим далее в этой главе.
В следующем примере мы поместим элемент туда, куда нам требуется вставить данные из элементов в таблицу HTML. Я также добавил новый шаблон для обработки элементов :
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
The Planets Table
The Planets Table
Name | Mass | Radius | Day |
.
.
.
В новом шаблоне, обрабатывающем элементы , я должен извлечь данные из каждого элемента , то есть восстановить значения в дочерних элементах элемента , таких как , и т.д.:
Mercury
.0553
58.65
1516
.983
43.4
.
.
.
Это можно сделать при помощи элемента .
Доступ к значениям узлов
Элемент записывает в результирующий документ строковое значение выражения; в частности, с его помощью можно возвратить значение узла, которым для элемента будет заключенный в элемент текст. Атрибуту выбора элемента можно присвоить выражение XPath, задающее узел или набор узлов. В шаблоне, задающем элементы , обратиться к дочернему элементу можно при помощи выражения XPath " child::MASS
". Как мы увидим в главе 4, выражения XPath можно писать разными способами: например, вместо " child::MASS
" можно просто написать " MASS
". Таким образом, получить данные дочерних элементов, таких как , и т.д., можно следующим способом (листинг 3.1).
Интервал:
Закладка: