Книги онлайн » Книги » Интернет » XSLT - Холзнер Стивен

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

Читать онлайн книгу «XSLT».
XSLT - Холзнер Стивен
Название: XSLT
ISBN: 5-94723-271-5
Год: 2002
Читать онлайн

XSLT - Холзнер Стивен — читать книгу онлайн

Страница 140 из 282

Настройте размер и шрифт текста, включите тёмную тему для удобного чтения. Переходить между страницами можно стрелками внизу или сочетанием Ctrl + ← / →.

Страница 140 из 282

 | RelationalExpr '>=' AdditiveExpr

AdditiveExpr ::= MultiplicativeExpr | AdditiveExpr '+' MultiplicativeExpr

 | AdditiveExpr '-' MultiplicativeExpr

MultiplicativeExpr ::= UnaryExpr

 | MultiplicativeExpr

MultiplyOperator ::= UnaryExpr

| MultiplicativeExpr 'div' UnaryExpr | MultiplicativeExpr 'mod' UnaryExpr

UnaryExpr ::= UnionExpr | '-' UnaryExpr

MultiplyOperator ::= '*'

UnionExpr ::= PathExpr | UnionExpr '|' PathExpr

PathExpr ::= LocationPath | FilterExpr

 | FilterExpr '/' RelativeLocationPath | FilterExpr '//' RelativeLocationPath

LocationPath ::= RelativeLocationPath | AbsoluteLocationPath

AbsoluteLocationPath ::= '/' RelativeLocationPath? | AbbreviatedAbsoluteLocationPath

RelativeLocationPath ::= Step | RelativeLocationPath '/' Step

 | AbbreviatedRelativeLocationPath

AbbreviatedAbsoluteLocationPath ::= '//' RelativeLocationPath

AbbreviatedRelativeLocationPath ::= RelativeLocationPath '//' Step

Step ::= AxisSpecifier NodeTest Predicate* | AbbreviatedStep

AxisSpecifier ::= AxisName '::' | AbbreviatedAxisSpecifier

AxisName ::= 'ancestor' | 'ancestor-or-self' | 'attribute' | 'child' | 'descendant'

 | 'descendant-or-self' | 'following' | 'following-sibling' | 'namespace'

 | 'parent' | 'preceding' | 'preceding-sibling' | 'self'

AbbreviatedAxisSpecifier ::= '@'?

NodeTest ::= NameTest | NodeType '(' ')'

 | 'processing-instruction' '(' Literal ')'

NameTest ::= '*' | NCName '*' | QName

NodeType ::= 'comment' | 'text' | 'processing-instruction' | 'node'

Predicate ::= '[' PredicateExpr ']'

PredicateExpr ::= Expr

FilterExpr ::= PrimaryExpr | FilterExpr Predicate

PrimaryExpr ::= VariableReference | '(' Expr ')'

 | Literal | Number | FunctionCall

VariableReference ::= '$' QName

Number ::= Digits ('.' Digits?)? | Digits

Digits ::= [0-9]+

FunctionCall ::= FunctionName '(' ( Argument ( Argument )* )? ')'

FunctionName ::= QName - NodeType

Argument ::= Expr

AbbreviatedStep := '.' | '..'

Как видите, спецификация весьма объемна, она включает и обращения к функциям XPath (с которыми мы познакомимся в следующей главе). Лучший способ понять, как работают выражения XPath, — рассмотреть их по возвращаемым типам данных.

Типы данных XPath

В XPath существует четыре типа данных, а не только тип набора узлов, который должны возвращать образцы выбора:

• наборы узлов;

• логические значения;

• числа;

• строки.

ФРАГМЕНТЫ РЕЗУЛЬТИРУЮЩЕГО ДЕРЕВА

В XSLT 1.0 к типам данных XPath добавляются фрагменты результирующего дерева. Как говорилось в главе 4, фрагменты результирующего дерева представляют собой просто фрагменты дерева, которые можно присваивать переменным XSLT. Их поддержка была удалена из рабочего проекта XSLT 1.1, поэтому, скорее всего, они не будут включены в XSLT 2.0. Фрагменты результирующего дерева можно рассматривать как типы данных при помощи <xsl:variable>, что мы и увидим в главе 9.

В следующих разделах мы по очереди рассмотрим эти типы данных.

Наборы узлов XPath

Как следует из имени, набор узлов (node set) является просто совокупностью узлов. Набор узлов может включать несколько узлов, единственный узел или быть пустым. Поскольку главная задача XPath — определять место разделов документов, постольку возвращающие наборы узлов выражения XPath являются наиболее популярными типами выражений. Например, выражение XPath

child::PLANET
возвращает набор узлов из всех элементов
<PLANET>
, дочерних для контекстного узла. Выражение
child::PLANET/child::NAME
возвращает набор узлов из всех элементов
<NAME>
, дочерних для элементов
<PLANET>
контекстного узла. Выражения XPath такого рода называются путями расположения, location path (W3C называет их «самой важной конструкцией» в XPath), и существенная часть этой главы будет посвящена разъяснению путей расположения.

Избранные книги

↑