Книга: XSLT
Сокращенный синтаксис XPath
Сокращенный синтаксис XPath
Сокращения синтаксиса XPath могут быть весьма удобными. Ниже приведены правила:
• self::node()
может быть сокращено как .
;
• parent::node()
может быть сокращено как ..
;
• child::childname
может быть сокращено как childname
;
• attribute::childname
может быть сокращено как @childname
;
• /descendant-or-self::node()/
может быть сокращено как //
.
Например, путь расположения .//PLANET
— сокращение для self::node()/descendant-or-self::node()/child::PLANET
. Можно также сократить выражение предиката [position()=3]
как [3]
, [position()=last()]
как [last()]
и т.д. Работать с путями расположения XPath при помощи сокращенного синтаксиса значительно проще. В следующем списке перечислен ряд примеров путей расположения с использованием сокращенного синтаксиса:
• PLANET
возвращает дочерние элементы <PLANET>
контекстного узла;
• *
возвращает все дочерние элементы контекстного узла;
• text()
возвращает все дочерние текстовые узлы контекстного узла;
• @UNITS
возвращает атрибут UNITS
контекстного узла;
• @*
возвращает все атрибуты контекстного узла;
• PLANET[3]
возвращает третьего ребенка <PLANET>
контекстного узла;
• PLANET[last()]
возвращает последнего ребенка <PLANET>
контекстного узла;
• */PLANET
возвращает всех внуков <PLANET>
контекстного узла;
• /PLANETS/PLANET[3]/NAME[2]
возвращает второй элемент <NAME>
третьего элемента <PLANET>
элемента <PLANETS>
;
• //PLANET
возвращает всех потомков <PLANET>
корня документа;
• PLANETS//PLANET
возвращает элементы-потомки <PLANET>
дочерних элементов <PLANETS>
контекстного узла;
• //PLANET/NAME
возвращает все элементы <NAME>
, у которых есть родитель <PLANET>
;
• .
возвращает сам контекстный узел;
• .//PLANET
возвращает элементы-потомки <PLANET>
контекстного узла;
• ..
возвращает родителя контекстного узла;
• ../@UNITS
возвращает атрибут UNITS
родителя контекстного узла;
• .//..
возвращает всех родителей потомка контекстного узла и родителя контекстного узла;
• PLANET[NAME]
возвращает детей <PLANET>
контекстного узла, у которых есть дети <NAME>
;
• PLANET[NAME="Venus"]
возвращает детей <PLANET>
контекстного узла, у которых есть дети <NAME>
с текстом, равным «Venus»;
• PLANET[@UNITS="days"]
возвращает всех детей <PLANET>
контекстного узла, у которых есть атрибут UNITS
со значением «days
»;
• PLANET[6][@UNITS="days"]
возвращает шестого ребенка <PLANET>
контекстного узла, только если у этого ребенка есть атрибут UNITS
со значением «days». Можно также написать PLANET[@UNITS="days"][6]
;
• PLANET[@COLOR and @UNITS]
возвращает всех детей <PLANET>
контекстного узла, у которых есть атрибут COLOR
и атрибут UNITS
;
• "//PLANET[not(.=preceding::PLANET)]
" выбирает все элементы <PLANET>
, значение которых отлично от значения любого предшествующего элемента <PLANET>
;
• *[1][self::NAME]
выбирает любой элемент <NAME>
, который является первым ребенком своего родителя;
• *[position() < 5][@UNITS]
выбирает первых пятерых детей контекстного узла, у которых есть атрибут UNITS
.
- Изучаем XPath
- Типы данных XPath
- Создание путей расположения XPath
- Шаги расположения XPath, часть 1: оси
- Шаги расположения XPath, часть 2: условия узлов
- Шаги расположения XPath, часть 3: предикаты
- Применение осей XPath
- Применение оси ancestor
- Применение оси ancestor-or-self
- Применение оси descendant
- Применение оси descendant-or-self
- Применение оси following
- Применение оси following-sibling
- Применение оси namespace
- Применение оси parent
- Применение оси preceding
- Применение оси preceding-sibling
- Применение оси self
- Примеры путей расположения
- Сокращенный синтаксис XPath
- Проверка выражений XPath
- XPath 2.0
- Глава 7 Работа с XPath
- Сокращенный синтаксис
- Применение осей XPath
- 1.2. Базовый синтаксис и семантика Ruby
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC
- 1.5.1. Синтаксис
- 1.4.4. Использование нетрадиционного синтаксиса на диаграммах функциональной модели
- Разбор XPath-выражений
- 15.1.3. XPath и другие интерфейсы
- 7.2. Синтаксис CSS
- Синтаксис множественного фона
- Синтаксис явного INNER JOIN в SQL-92