XPath (XML Path Language) — язык запросов к элементам XML-документа. Разработан для организации доступа к частям документа XML в файлах трансформации XSLT и является стандартом консорциума W3C. XPath призван реализовать навигацию по DOM в XML. В XPath используется компактный синтаксис, отличный от принятого в XML.
Выражения XPath могут ссылаться на атрибуты так же, как и на элементы в XML-документе. При ссылке на атрибут используется символ @. Например, следующее выражение XPath идентифицирует элементы currentPrice, в которых атрибуты currency содержат значение EUR:
/list/item/currentPrice[@currency="EUR"]
XPath также предоставляет функции, которые могут быть очень удобными.
Главной синтаксической конструкцией языка XPath является выражение. Любое выражение соответствует сценарию Expr. В результате обработки выражения получается объект, относящийся к одному из четырех основных типов:
- набор узлов (node-set) - неупорядоченный набор узлов без дубликатов
- булевое значение (boolean) - true или false
- число (number) - число с плавающей точкой
- строка (string) - последовательность UCS символов
Обработка выражений осуществляется, отталкиваясь от некого контекста. В спецификациях XSLT и XPointer указывается, каким образом в XSLT и XPointer, соответственно, определяется контекст для выражений XPath. Контекст образуется из:
- узла (узел контекста, contextnode)
- пары ненулевых положительных целых чисел (положение в контексте и размер контекста)
- привязки переменных контекста (variablebindings)
- библиотеки функций
- набора деклараций пространства имен в области видимости данного выражения.
Синтаксически имя оси отделяется от остальной части шага адресации с помощью двойного двоеточия :: .
- Тест узла (nodetest), который определяет тип и, возможно, имя узлов, выбираемых шагом доступа. В то время как ось определяет "направление движения", тест узла определяет желаемые узлы, которые должны быть выбраны.
- Ноль или более предикатов (predicates). Каждый предикат синтаксически записывается в квадратных скобках и используется для дальнейшего просеивания набора узлов, выбираемых шагом доступа.
Шаги в пути доступа вычисляются по очереди слева направо. Самый левый шаг вычисляется первым, обычно по отношению к узлу, который представляет корень XML-документа. Каждый последующий шаг доступа выбирает набор узлов, который вычисляется по отношению к набору узлов, выбранному предыдущим шагом доступа. Набор узлов, выбранный самым правым шагом доступа – это результат всего пути доступа для данного XML-документа.