XPath 3
![]() | Эта статья включает список литературы , связанную литературу или внешние ссылки , но ее источники остаются неясными, поскольку в ней отсутствуют встроенные цитаты . ( декабрь 2022 г. ) |
XPath 3 — это последняя версия языка XML Path Language , языка запросов для выбора узлов в XML- документах. Он заменяет XPath 1.0 и XPath 2.0 .
XPath 3.0 стал рекомендацией W3C 8 апреля 2014 года, а XPath 3.1 стал рекомендацией W3C 21 марта 2017 года.
Новые возможности XPath 3.0
[ редактировать ]По сравнению с XPath 2.0 , в XPath 3.0 добавлены следующие новые функции:
- Встроенные функциональные выражения
- Анонимные функции могут быть созданы в контексте выражения . Например, выражение
function($a as xs:double, $b as xs:double) as xs:double { $a * $b }
создает функцию, которая возвращает произведение двух своих аргументов. Выражениеcollection()/(let $a := . return function() { $a })
создает последовательность функций, каждая из которых возвращает отдельный узел из коллекции. - Динамические вызовы функций
- Значения функций можно вызывать без ссылки на них по имени. Например,
$f[2]("Hi there")
извлекает второй элемент из последовательности$f
и вызывает его как функцию, передавая строку"Hi there"
как аргумент. - Типы союзов
- Типы объединения , определенные в XML-схеме , могут использоваться в преобразованиях типов и сигнатурах типов функций .
- Литералы пространства имен
- На пространства имен XML можно ссылаться с помощью URI литералов в фигурных скобках . Например, полное имя
math:pi
может быть расширен доQ{http://www.w3.org/2005/xpath-functions/math}pi
, встраивая URI пространства имен в префикс. - Оператор конкатенации строк
- Новый
||
оператор может использоваться для конкатенации строк :$a || $b
эквивалентноfn:concat($a, $b)
. - Оператор сопоставления
- Новый
!
оператор выполняет простое сопоставление:E1 ! E2
оцениваетE2
для каждого элемента последовательностиE1
и объединяет полученные элементы. Это сравнимо с оператором пути/
, но!
оператор не выполняет устранение дубликатов и не документирует упорядочивание результатов.
Новые возможности XPath 3.1
[ редактировать ]В XPath 3.1 в основном добавлена поддержка типов данных массива и карты ( ассоциативный массив ). Эти типы и связанные с ними функциональные возможности предназначены для упрощения работы с данными JSON .
Еще одно новшество — стрелочный оператор. =>
для цепочки функций. Например, выражение XPath 2.0
contains(upper-case(substring-before($in, ' ')), 'X')
теперь можно написать
$in => substring-before(' ') => upper-case() => contains('X')
Ссылки
[ редактировать ]- «Язык путей XML (XPath) 3.0» . Консорциум Всемирной паутины . 8 апреля 2014 г.
- «Язык путей XML (XPath) 3.1» . Консорциум Всемирной паутины . 21 марта 2017 г.