Что такое XPath?
XPath - это синтаксисдля адресации частей XML-документа
XPath - использует пути для адресации элементов XML
XPath - является важнейшей частью стандарта XSLT
XPath - не является XML-форматом
XPath - является стандартом W3C
XPath - использует адресные выражения для идентификации узлов в XML-документе. Эти адресные выражения очень похожи на выражения, с которыми вы сталкиваетесь при работе с файловой системой компьютера:
w3schools/xpath/default.asp
Пример XPath
Empire Burlesque Bob Dylan USA Columbia 10.90 1985 Hide your heart Bonnie Tyler UK CBS Records 9.90 1988 /year>
Это выражение XPath:
catalog/cd/price
определяет элементы price, дочерние относительно элементов cd, подэлементов элемента catalog
Пути адресации XPath
Выражения для Путей Адресации
Имя
Описание
Пример
Результат
/
Дочерний элемент узла
/price
элемент price
//
Узел и его дочерние элементы
//cd
элемент cd и его подэлементы
|
список дочерних элементов
price | title
элемент price и title
Оси
Оси служат для определения набора узлов относительно данного узла.
Имя
Описание
Узел
self
сам узел
child
Дочерние узлы
parent
Родительский узел
descendant
Потомки узла
descendant-or-self
Узел и его потомки
ancestor
Предки узла
ancestor-or-self
Сам узел и его предки
following
Все узлы после данного
following-sibling
Все узлы этого же уровня после данного
preceding
Все узлы перед данным
preceding-sibling
Все узлы этого же уровня перед данным
attribute
Узлы аттрибутов
namespace
Узлы пространства имен
Предикаты Путей Адресации
Предикаты - это выражения, использующиеся для построения конкретных подмножеств узлов на основе данного.
Предикаты записываются внутри квадратных скобок.
Например, child::price[price=9.90] возвращает множество узлов, где элемент price имеет значение 9.90.
Новое множество узлов содержит все узлы, для которых значение предиката верно.
Сокращения для Путей Адресации
При описании путей адресации могут использоваться сокращения.
Сокращение
Значение
child::
@
attribute::
.
self::
..
parent::
//
/descendant-or-self/
число
[position()='значение']
Выражения XPath
Числовые Выражения
Числовые выражения используются для выполнения арифметических операций над числами.
Оператор
Описание
Пример
Результат
+
Сложение
6 + 4
10
-
Вычитание
6 - 4
2
*
Умножение
6 * 4
24
div
Деление
8 div 4
2
mod
Остаток от деления
5 mod 2
1
Замечание: XPath всегда преобразует аргумент в число перед выполнением арифметических операций.
Операции равенства
Операции равенства используются для проверки равенства двух значений.
Оператор
Описание
Пример
Результат
=
Равно
price=9.80
'истина' (если значение price равно 9.80)
!=
Не равно
price!=9.80
'ложь'
Проверка по Множеству Узлов
В случае, когда тестовое значение проверяется на равенство по множеству узлов, результатом будет 'истина', если множество узлов содержит какой-либо узел со значением, которое соответствует тестовому значению.
Когда тестовое значение проверяется на неравенство по множеству узлов, результатом будет 'истина', если множество узлов содержит хотя бы один узел со значением, отличным от тестового.
В итоге множество узлов может быть равно и не равно одновременно!!!
Операции Сравнения
Эти операции используются для сравнения двух значений.
Оператор
Описание
Пример
Результат
Меньше
price9.80
'ложь' (если price равно 9.80)
=
Меньше или равно
price=9.80
'истина'
>
Больше
price>9.80
'ложь'
>=
Меньше или равно
price>=9.80
'истина'
Замечание: XPath всегда преобразует каждый аргумент в число перед выполнением сравнения.
Булевы Выражения
Оператор
Описание
Пример
Результат
or
или
price=9.80 or price=9.70
'истина' (если price равно 9.80)
and
и
price=9.80 and price=9.70
Функции XPath
Библиотека Функций XPath
Библиотека функций XPath включает набор базовых функций для преобразования данных.
Числовые Функции
Имя
Описание
Пример
Результат
round
Округляет до ближайшего целого.
round(3.14)
3
ceiling
Округляет до ближайшего целого, которое больше данного.
ceiling(3.14)
4
floor
Округляет до ближайшего целого, которое меньше данного.
floor(3.14)
3
count
Возвращает количество узлов.
count(nodeset)
количество узлов в множестве узлов
number
Преобразует аргумент в число.
number(price)
Численное значение элемента price
sum
Возвращает сумму списка чисел.
sum(/cd/price)
Суммарная цена всех CD
Строковые Функции
Имя
Описание
Пример
Результат
string
Преобразует аргумент в строку.
string(3.14)
'3,14'
string-length
Возвращает длину строки.
string-lenght('Beatles')
7
substring
Возвращает подстроку.
substring('Beatles',1,4)
'Beat'
substring-after
Возвращает остаток строки после второго аргумента.
substring-after('12:30',':')
'30'
substring-before
Возвращает часть строки перед вторым аргументом.
substring-before('12:30',':')
'12'
contains
Возвращает 'истину', если первая строка содержит вторую.
contains('XML','X')
'истина'
starts-with
Возвращает 'истину', если первая строка начинается второй.
starts-with('XML','X')
'истина'
concat
Возвращает конкатенацию двух строк.
concat('The',' ','Beatles')
'The Beatles'
normalize-space
Удаляет лишние пробелы в строке.
normalize-space(' The Beatles')
'The Beatles'
translate
Заменяет символы в строке.
translate('12:30',':','.')
'12.30'
Булевы Функции
Имя
Описание
Пример
Результат
boolean
Преобразует аргумент к булевому типу.
boolean(3.14)
'истина', если price не равен нулю
false
Вовращает 'ложь'.
number(false())
0
true
Возвращает 'истину'.
number(true())
1
not
Возвращает отрицание.
not(false())
'истина'
Источник: www.w3schools.com/XPath/default.asp