Jump to content

XPath 2.0

XPath 2.0 — это версия языка XPath , разработанная Консорциумом Всемирной паутины W3C. 23 января 2007 года это стало рекомендацией. [1] В качестве рекомендации W3C он был заменен XPath 3.0 10 апреля 2014 года.

XPath используется в основном для выбора частей XML- документа. Для этого XML-документ моделируется как дерево узлов. XPath позволяет выбирать узлы посредством иерархического пути навигации по дереву документа.

Этот язык значительно больше, чем его предшественник, XPath 1.0 , и некоторые базовые концепции, такие как модель данных и система типов, изменились. Поэтому две языковые версии описаны в отдельных статьях.

XPath 2.0 используется как подъязык XSLT 2.0 , а также является подмножеством XQuery 1.0. Все три языка используют одну и ту же модель данных ( XDM ), систему типов и библиотеку функций, были разработаны вместе и опубликованы в один и тот же день.

Модель данных

[ редактировать ]

Каждое значение в XPath 2.0 представляет последовательность элементов собой . Элементами могут быть узлы или атомарные значения . Отдельный узел или атомарное значение считается последовательностью длины один. Последовательности не могут быть вложенными.

Узлы бывают семи видов, соответствующих различным конструкциям синтаксиса XML : элементы, атрибуты, текстовые узлы, комментарии, инструкции обработки, узлы пространства имен и узлы документа. (Узел документа заменяет корневой узел XPath 1.0 , поскольку модель XPath 2.0 позволяет корням деревьев базироваться на других типах узлов, особенно на элементах.)

Узлы могут быть типизированными и нетипизированными. Узел приобретает тип в результате проверки на соответствие XML-схеме . Если элемент или атрибут успешно проверен на соответствие определенному сложному типу или простому типу, определенному в схеме, имя этого типа прикрепляется как аннотация к узлу и определяет результат операций, примененных к этому узлу: например, когда сортировки узлы, помеченные как целые числа, будут отсортированы как целые числа.

Атомарные значения могут принадлежать любому из 19 примитивных типов, определенных в спецификации XML-схемы (например, строка, логическое значение, двойное значение, число с плавающей запятой, десятичное число, dateTime, QName и т. д.). Они также могут принадлежать типу, производному от одного из этих примитивных типов: либо встроенному производному типу, такому как целое число или имя, либо определяемому пользователем производному типу, определенному в написанной пользователем схеме.

Типовая система

[ редактировать ]
Иерархия XDM типов

Система типов XPath 2.0 примечательна тем, что сочетаются строгая и слабая в одном языке типизация.

Такие операции, как арифметические и логические сравнения, требуют в качестве операндов атомарных значений. Если операнд возвращает узел (например, @price * 1.2), затем узел автоматически атомизируется для извлечения атомарного значения. Если входной документ был проверен на соответствие схеме, то узел обычно будет иметь аннотацию типа, которая определяет тип результирующего атомарного значения (в этом примере price атрибут может иметь тип decimal). Если схема не используется, тип узла будет нетипизирован, а тип результирующего атомарного значения будет untypedAtomic. Типизированные атомарные значения проверяются, чтобы убедиться, что они имеют тип, соответствующий контексту, в котором они используются: например, невозможно умножить дату на число. Нетипизированные атомарные значения, напротив, следуют слабой дисциплине типизации: они автоматически преобразуются в тип, соответствующий операции, в которой они используются: например, при арифметической операции нетипизированное атомарное значение преобразуется в тип double.

Выражения пути

[ редактировать ]

Пути расположения XPath 1.0 в XPath 2.0 называются выражениями путей . Неформально выражение пути представляет собой последовательность шагов, разделенных знаком « /"оператор, например a/b/c (что является сокращением от child::a/child::b/child::c). Однако более формально» /" — это просто бинарный оператор, который применяет выражение в его правой части к каждому элементу, поочередно выбранному выражением в левой части. Итак, в этом примере выражение a выбирает все дочерние элементы узла контекста, имеющие имя <a>; выражение child::b затем применяется к каждому из этих узлов, выбирая все <b> дети <a> элементы; и выражение child::c затем применяется к каждому узлу в этой последовательности, которая выбирает все <c> дети этих <b> элементы.

" /" Оператор обобщен в XPath 2.0, чтобы позволить использовать в качестве операнда любое выражение: в XPath 1.0 правая часть всегда была шагом оси. Например, вызов функции может использоваться в правой части Правила типизации для оператора требуют, чтобы результатом первого операнда была последовательность узлов. Правый операнд может возвращать либо узлы, либо атомарные значения (но не смесь). Если результат состоит из узлов, дубликаты удаляются. и узлы возвращаются в порядке документа , причем порядок определяется относительными позициями узлов в исходном XML-дереве.

Во многих случаях операнды " /«будут шаги оси: они практически не изменились по сравнению с XPath 1.0 и описаны в статье о XPath 1.0 .

Другие операторы

[ редактировать ]

Другие операторы, доступные в XPath 2.0, включают следующие:

Операторы Эффект
+, -, *, div, режим, idiv Арифметика чисел, дат и длительности
=, !=, <, >, <=, >= Общее сравнение: сравнить произвольные последовательности. Результат истинен, если любая пара элементов, по одному из каждой последовательности, удовлетворяет сравнению.
eq, ne, lt, gt, le, ge Сравнение значений: сравнение отдельных элементов
является Сравнить идентичность узла: true, если оба операнда являются одним и тем же узлом.
<<, >> Сравнить положение узла на основе порядка документа
союз, пересечение, кроме Сравнивайте последовательности узлов, рассматривая их как наборы, возвращая объединение, пересечение или разность множеств.
и, или Булева конъюнкция и дизъюнкция. Отрицание достигается с помощью not() функция.
к определяет целочисленный диапазон, например 1 to 10
экземпляр определяет, является ли значение экземпляром данного типа
сыграть как преобразует значение в заданный тип
отлитый как проверяет, может ли значение быть преобразовано в заданный тип

Условные выражения могут быть написаны с использованием синтаксиса if (A) then B else C.

XPath 2.0 также предлагает for выражение, которое является небольшим подмножеством выражения FLWOR из XQuery . Выражение for $x in X return Y оценивает выражение Y для каждого значения в результате выражения X в свою очередь, ссылаясь на это значение, используя ссылку на переменную $x.

Библиотека функций

[ редактировать ]

Библиотека функций XPath 2.0 значительно расширена по сравнению с библиотекой функций XPath 1.0. ( Жирные элементы доступны в XPath 1.0)

Доступные функции включают в себя следующее:

Цель Примеры функций
Общая обработка строк нижний регистр, верхний регистр, подстрока , подстрока-до , подстрока-после , перевод , начинается с , заканчивается, содержит , длина строки , concat , нормализовать-пространство , нормализовать-юникод
Регулярные выражения совпадения, замена, токенизация
Арифметика подсчет , сумма , среднее, мин, максимум, круглый , пол , потолок , абс
Даты и время настройка-dateTime-to-timezone, current-dateTime, day-from-dateTime, месяц-from-dateTime, дни-from-duration, месяцы-from-duration и т. д.
Свойства узлов имя , имя-узла, локальное имя , пространство-имен-uri , базовый-uri, обнулено
Обработка документов документ, доступный документ, документ-uri, коллекция, идентификатор , idref
URI кодировать-для-uri, escape-html-uri, iri-to-uri, разрешить-uri
QИмена QName, пространство имен-uri-from-QName, префикс-from-QName, разрешение-QName
Последовательности вставить перед, удалить, подпоследовательность, индекс, отдельные значения, обратный, неупорядоченный, пустой, существует
Проверка типа один или несколько, ровно один, ноль или один

Обратная совместимость

[ редактировать ]

Из-за изменений в модели данных и системе типов не все выражения в XPath 2.0 имеют такой же эффект, как в версии 1.0. Основное отличие состоит в том, что XPath 1.0 более спокойно относился к преобразованию типов, например, к сравнению двух строк ( "4" > "4.0") было вполне возможно, но потребовалось бы числовое сравнение; в XPath 2.0 это определено для сравнения двух значений как строк с использованием контекстно-определяемой последовательности сортировки.

Чтобы облегчить переход, XPath 2.0 определяет режим выполнения, в котором семантика изменяется так, чтобы быть максимально приближенной к поведению XPath 1.0. При использовании XSLT 2.0 этот режим активируется установкой version="1.0" в качестве атрибута на xsl:stylesheet элемент. Это по-прежнему не обеспечивает 100% совместимости, но любые оставшиеся различия могут возникнуть только в исключительных случаях.

Поддерживать

[ редактировать ]

Поддержка XPath 2.0 по-прежнему ограничена.

  1. ^ «Хронология стандартов XML и семантической сети W3C» (PDF) . 4 февраля 2012 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: cf816e179ecd230871c8f72da1d3d2a7__1690830000
URL1:https://arc.ask3.ru/arc/aa/cf/a7/cf816e179ecd230871c8f72da1d3d2a7.html
Заголовок, (Title) документа по адресу, URL1:
XPath 2.0 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)