Чтение онлайн

ЖАНРЫ

Холзнер Стивен

Шрифт:

• 

//PLANET
выбирает всех потомков
<PLANET>
корня документа;

• 

PLANETS//PLANЕТ
выбирает потомков элемента
<PLANET>
детей элемента
<PLANETS>
контекстного узла;

• 

//PLANET/NAME
выбирает все элементы
<NAME>
, дочерние по отношению к родителю
<PLANET>
;

• 

РLАNETS//PLАNET/DISTАNСЕ//РЕRIНЕLION
выбирает элементы
<PERIHELION>
везде внутри элемента
<DISTANCE>
элемента
<PLANET>
,
везде внутри элемента
<PLANETS>
;

• 

@UNITS
выбирает атрибут
UNITS
контекстного узла;

• 

@*
выбирает все атрибуты контекстного узла;

• 

*[@UNITS]
выбирает все элементы с атрибутом
UNITS
;

• 

DENSITY/@UNITS
выбирает атрибут
UNITS
в элементах
<DENSITY>
;

• 

PLANET[not(@COLOR) or not(@SIZE)]
выбирает элементы
<PLANET>
, не имеющие обоих атрибутов
COLOR
и
SIZE
;

• 

PLANETS[@STAR="Sun"]//DENSITY
выбирает любой элемент
<DENSITY>
с элементом-предком
<PLANETS>
, имеющим атрибут
STAR
со значением "
Sun
";

• 

PLANET[NAME="Venus"]
выбирает детей
<PLANET>
контекстного узла, имеющих детей
<NAME>
с текстом "
Venus
";

• 

PLANET[NAME[1]="Venus"]
выбирает все элементы
<PLANET>
, у которых в первом элементе
<NAME>
содержится текст в "
Venus
";

• 

DAY[@UNITS!="million miles"]
выбирает все элементы
<PLANET>
, атрибут
UNITS
которых не равен "
million miles
";

• 

PLANET[@UNITS="days"]
выбирает всех детей
<PLANET>
контекстного узла, имеющих атрибут
UNITS
со значением "
days
";

• 

PLANET[6][@UNITS="days"]
выбирает шестого ребенка
<PLANET>
контекстного узла, только если у этого ребенка есть атрибут
UNITS
со значением "
days
", — что также можно записать как
PLANET[@UNITS="days"][6]
;

• 

PLANET[@COLOR and @UNITS]
выбирает всех детей
<PLANET>
контекстного узла, имеющих оба атрибута
COLOR
и
UNITS
;

• 

*[1][NAME]
выбирает любой элемент
<NAME>
, являющийся первым ребенком своего родителя;

• 

*[position &lt; 5]
выбирает первые пять детей контекстного узла;

• 

*[position &lt; 5][@UNIT]
выбирает первые пять детей контекстного узла с атрибутом
UNITS
;

• 

text
выбирает все дочерние текстовые узлы контекстного узла;

• 

text[starts-with(., "In the course of human events")]
выбирает все дочерние текстовые узлы контекстного узла, начинающиеся с "
In the course of human events
";

• 

/PLANETS[@UNITS="million miles"]
выбирает все элементы
PLANETS
, у которых значение атрибута
UNITS
равно "
million miles
";

• 

PLANET[/PLANETS/@UNITS=@REFERENCE]
выбирает все элементы
<PLANET>
, у которых значение атрибута
REFERENCE
такое же, как значение атрибута
UNITS
элемента
PLANETS
в корне документа;

• 

PLANET/*
выбирает все дочерние элементы элементов
PLANET
;

• PLANET/*/DAY выбирает все элементы DAY — правнуки элементов PLANET, являющиеся детьми контекстного узла;

• 

*/*
выбирает элементы-внуки текущего элемента;

• 

astrophysics:PLANET
выбирает элемент
PLANET
в пространстве имен «
astrophysics
»;

• 

astrophysics:*
выбирает любые элементы в пространстве имен «
astrophysics
»;

• 

PLANET[DAY and DENSITY]
выбирает все элементы
<PLANET>
, у которых есть по крайней мере один элемент
<DAY>
и один элемент
<DENSITY>
;

• 

PLANET[(DAY or DENSITY) and MASS]
выбирает все элементы
<PLANET>
, у которых есть по крайней мере один элемент
<DAY>
или один элемент
<DENSITY>
, а также по крайней мере один элемент
<MASS>
;

• 

PLANET[DAY and not(DISTANCE)]
выбирает все элементы
<PLANET>
, у которых есть по крайней мере один элемент
<DAY>
и нет элементов
<DISTANCE>
;

• 

PLANET[MASS=/STANDARD/REFERENCE/MASS]
выбирает все элементы
<PLANET>
, у которых значение элемента
<MASS>
равно значению элемента
/<STANDARD>/<REFERENCE>/<MASS>
.

На этом мы завершаем в данный момент рассмотрение образцов выбора; связанный материал приводится в главе 7 при рассмотрении выражений XPath. Глава 5 начинается с изучения способов работы с данными в XML-документах путем сортировки и принятия решения на основе значений данных.

Глава 5

Принятие решений и сортировка данных

Эта глава посвящена принятию решений, сортировке и различным способам обработки данных в ХМL-документах. Мы рассмотрим элементы

<xsl:if>
,
<xsl:choose>
,
<xsl:when>
,
<xsl:otherwise>
,
<xsl:for-each>
и
<xsl:sort>
, при помощи которых вы сможете обрабатывать данные и управлять выполнением преобразования в зависимости от значения данных.

Однако эти элементы не предоставляют такой точности, как в языках программирования. Поэтому я также представлю в этой главе расширения XSLT, в том числе элемент рабочего проекта XSLT 1.1

<xsl:script>
. Этот элемент был предназначен для упрощения применения Java и JavaScript с процессором XSLT. (Для чтения этой книги нет необходимости владеть Java или JavaScript, но если вы знаете эти языки, вам будет приятно удостовериться, что некоторые процессоры XSLT дают возможность использовать их при преобразованиях XML.) Нечто похожее на этот элемент обязательно появится в XSLT 2.0. При помощи расширений вы можете расширять спецификацию XSLT, добавляя в XSLT новые элементы и функции какого-либо производителя или свои собственные.

Поделиться с друзьями: