Стивен Холзнер - XSLT
- Название:XSLT
- Автор:
- Жанр:
- Издательство:Питер
- Год:2002
- Город:Санкт-Петербург
- ISBN:5-94723-271-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Стивен Холзнер - XSLT краткое содержание
Эта книга посвящена XSLT — мощным и удобным системам преобразования документов. В ней не только рассматривается весь синтаксис XSLT, от основ до специальных аспектов, но и подробно излагаются современные способы использования XSLT.
Вы найдете сотни практических примеров, таких как осуществление преобразований XSLT на web-cepвepax, подключение к базам данных и использование браузеров для осуществления преобразований на лету.
Книга рассчитана на всех, кто хочет изучать XSLT и использовать его на практике
XSLT - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
The Planets Table
.
.
.
В этой главе мы рассмотрим все необходимое, что нужно знать для создания образцов выбора в XSLT. Образцы выбора применяются в элементах , и ; с элементом мы работали с самого начала книги, элемент мы увидим в главе 9 и элемент — в главе 5. В частности, для выбора по образцу у элементов и используется атрибут match
, а у элемента — атрибуты count
и from
.
Образцы выбора можно также применять в атрибуте select
таких элементов, как , , и . Здесь важно отметить один момент: атрибут select
этих элементов обладает большими возможностями, чем атрибуты match
, count
и from
элементов , и , потому что в select
можно использовать полные выражения XPath, а не только образцы выбора.
Образцы выбора являются подмножеством выражений XPath, то есть все образцы выбора являются допустимыми выражениями XPath, но не все выражения XPath являются образцами выбора. Единственные выражения XPath, которые могут быть образцами, — это выражения, возвращающие набор узлов (даже набор, состоящий из одного узла) и использующие пути, которые задают только дочерние узлы или узлы атрибутов.
Образцы выбора определены в самой рекомендации XSLT, в то время как выражения XPath определены в рекомендации XPath (www.w3.org/TR/xpath); тем не менее, эти рекомендации совместимы, потому что все образцы выбора являются одновременно выражениями XPath.
СОЗДАНИЕ ПОЛНЫХ ВЫРАЖЕНИЙ XPATH
В главе 7 «Работа и изучение XPath» показано, как создавать полные выражения XPath. Полные выражения XPath можно применять в XSLT в следующих местах: в атрибуте select элементов , , , , , , и ; в значениях шаблонов атрибутов; в атрибуте test элементов и ; в значении атрибута элемента и в предикатах образцов выбора.
Чтобы еще больше все усложнить, следует сказать, что выражения XPath можно использовать в специальной, необязательной части (и только в этой части) образцов выбора: в предикатах. Как мы увидим в этой главе, предикаты — это выражения XPath, которые вычисляются либо в значения «истина/ложь», либо в числа, заключаемые в квадратные скобки, [ и ]. Например, образец PLANET[NAME="Venus"]
выбирает дочерние узлы контекстного узла, у которых есть дочерние узлы с текстом «Venus». Выражения внутри [ и ] представляют собой настоящие выражения XPath с известными ограничениями, которые будут рассмотрены в этой главе.
Безусловно, для создания образцов выбора необходим опыт, поэтому в данной главе приводится много примеров.
MICROSOFT И НЕСТАНДАРТНЫЕ ОБРАЗЦЫ ВЫБОРА
Microsoft поддерживает образцы выбора в своем процессоре XML MSXML3, но есть еще кое-что, о чем вам следует знать: с образцами выбора Microsoft использует также весьма много нестандартного, не используемого W3C синтаксиса. В этой главе я собираюсь придерживаться официальной, W3C, версии, и если вам доведется читать документацию Microsoft об образцах выбора, имейте в виду, что многое из этой документации относится только к реализации Microsoft.
Выбор корневого узла
Как вы уже видели, выбрать корневой узел можно при помощи образца выбора «/», как, например:
Выбор элементов
Можно выбирать элементы, просто задавая их имена, как мы уже видели. Следующий шаблон выбирает элементы :
Выбор дочерних элементов
При доступе к дочернему узлу определенного узла для разделения имен элементов можно использовать операцию шага /. Пусть, например, требуется создать правило, которое должно применяться только к тем элементам , которые являются дочерними для элементов . Для этого можно задать выражение " PLANET/NAME
". Вот правило, окружающее текст таких элементов в элемент HTML <���Н3>
:
Можно также использовать символ * в качестве символа-подстановки, что соответствует любому элементу. (* может выбирать только элементы, однако образец @* выбирает любой атрибут.) Например, следующее правило применяется ко всем элементам , которые являются внуками элементов :
Выбор потомков элемента
В предыдущем разделе при помощи выражения " PLANET/NAME
" я выбирал все элементы , являющиеся прямыми потомками элементов , а при помощи выражения " PLANET/*/NAME
" — все элементы , являющиеся внуками элементов . Есть, однако, более простой способ выполнить оба выбора — применить выражение " PLANET//NAME
", выбирающее все элементы , находящиеся внутри элементов , независимо от глубины вложенности (соответствующие элементы называются потомками элемента ). Иными словами, " PLANET//NAME
" выбирает " PLANET/NAME
", " PLANET/*/NAME
", " PLANET/*/*/NAME
" и т.д.:
Выбор атрибутов
Как было показано в главе 3, «Создание и применение шаблонов», можно выбирать атрибуты, если предварять их имена префиксом @. Вы уже работали с атрибутом UNITS
, который поддерживают большинство детей элементов :
Earth
1
1
2107
1
128.4
Чтобы извлечь единицы измерения и отобразить их вместе со значениями массы и т.п., можно выбрать атрибут UNITS
при помощи @UNITS
(листинг 4.1).
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
.
.
.
.
.
.
</ТD>
Теперь результирующая HTML-таблица включает не только значения, но и их единицы измерения:
The Planets Table
The Planets Table
.
.
.
.
.
.
Mercury | .0553 (Earth = 1) | 1516 miles |
Venus | .815 (Earth = 1) | 3716 miles |
Для выбора всех атрибутов элемента можно также использовать подстановку. Например, " PLANET/@*
" выбирает все атрибуты элементов .
Формальное определение образцов выбора
Определение образцов выбора приводится также в рекомендации XSLT W3C. Образцы выбора определяются в терминах выражений XPath следующим образом: «Синтаксис для образцов является подмножеством для выражений [XPath]. В частности, пути расположения, удовлетворяющие определенным ограничениям, могут использоваться как образцы. Выражение, в то же время являющееся образцом, всегда вычисляется в объект типа набора узлов. Узел удовлетворяет образцу, если узел является членом результата вычисления образца как выражения по отношению к возможному контексту; возможный контекст — это контекст, контекстный узел которого был выбран, или один из его предков».
Самое важное предложение в предыдущем абзаце — последнее. Суть в том, что узел X удовлетворяет образцу тогда и только тогда, когда существует узел X или предок X, такой, что при применении к этому узлу образца как выражения XPath, результирующий набор узлов будет включать X.
Читать дальшеИнтервал:
Закладка: