Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Запрос языка XML-пути (XPath) можно указать как часть URL-адреса или в шаблоне. Схема сопоставления определяет структуру этого результирующего фрагмента, а значения извлекаются из базы данных. Этот процесс концептуально аналогичен созданию представлений с помощью инструкции CREATE VIEW и написанию sql-запросов к ним.
Замечание
Чтобы понять запросы XPath в SQLXML 4.0, необходимо ознакомиться с XML-представлениями и связанными понятиями, такими как шаблоны и схема сопоставления. Дополнительные сведения см. в разделе "Введение в аннотированные схемы XSD" (SQLXML 4.0) и стандарт XPath, определенный консорциумом W3C.
XML-документ состоит из узлов, таких как узел элемента, узел атрибутов, текстовый узел и т. д. Например, рассмотрим этот XML-документ:
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was
very satisfied</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">
<Urgency>Important</Urgency>
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
В этом документе <Customer> является узлом элемента, cid является узлом атрибута, а "Важно" — текстовым узлом.
XPath — это язык навигации графа, используемый для выбора набора узлов из XML-документа. Каждый оператор XPath выбирает набор узлов на основе набора узлов, выбранного предыдущим оператором XPath. Например, учитывая набор узлов customer>, XPath может выбрать все узлы Order со значением атрибута<даты"7/14/1999".>< Результирующий набор узлов содержит все заказы с датой заказа 7.14.1999.
Язык XPath определяется консорциумом W3C (W3C) как стандартный язык навигации. SQLXML 4.0 реализует подмножество спецификации W3C XPath, расположенной по адресу http://www.w3.org/TR/1999/PR-xpath-19991008.html.
Ниже приведены основные различия между реализацией W3C XPath и реализацией SQLXML 4.0.
Корневые запросы
SQLXML 4.0 не поддерживает корневой запрос (/). Каждый запрос XPath должен начинаться с типа элемента> верхнего уровня< в схеме.
Отчеты об ошибках
Спецификация W3C XPath не определяет никаких ошибок. Запросы XPath, которые не могут выбрать какие-либо узлы, возвращают пустой набор узлов. В SQLXML 4.0 запрос может возвращать множество типов сообщений об ошибках.
Порядок документов
В SQLXML 4.0 порядок документов не всегда определяется. Поэтому числовые предикаты и оси, использующие порядок документов (например
following
), не реализуются.Отсутствие порядка документов также означает, что строковое значение узла можно оценить только в том случае, если этот узел сопоставляется с одним столбцом в одной строке. Элемент с дочерними элементами или узлом IDREFS или NMTOKENS нельзя преобразовать в строку.
Замечание
В некоторых случаях
key-fields
заметка или ключи изrelationship
заметки могут привести к детерминированному порядку документа. Однако это не основное использование этих заметок. Дополнительные сведения см. в разделе "Определение ключевых столбцов" с помощью полей sql:key-fields (SQLXML 4.0) и указание связей с помощью sql:relationship (SQLXML 4.0).Типы данных
SQLXML 4.0 имеет ограничения при реализации XPath
string
number
иboolean
типов данных. Дополнительные сведения см. в разделе "Типы данных XPath" (SQLXML 4.0).Запросы между продуктами
SQLXML 4.0 не поддерживает запросы XPath между продуктами, например
Customers[Order/@OrderDate=Order/@ShipDate]
. Этот запрос выбирает всех клиентов с любым заказом, для которого OrderDate равно ShipDate любого заказа.Однако SQLXML 4.0 поддерживает такие запросы, как
Customer[Order[@OrderDate=@ShippedDate]]
выбор клиентов с любым заказом, для которого OrderDate равен его ShipDate.Обработка ошибок и безопасность
В зависимости от используемого выражения запроса XPath Transact-SQL могут предоставляться пользователям в определенных условиях.
Таблицы в следующих разделах содержат сведения о том, как реализация запросов XPath в SQLXML 4.0 отличается от спецификации W3C в этих областях.
Поддерживаемые функции
В следующей таблице показаны функции языка XPath, реализованного в SQLXML 4.0.
Функция | Товар | Ссылка на примеры запросов |
---|---|---|
Оси |
attribute , , child parent и self оси |
Указание осей в запросах XPath (SQLXML 4.0) |
Логические предикаты, включая последовательные и вложенные предикаты | Указание арифметических операторов в запросах XPath (SQLXML 4.0) | |
Все реляционные операторы | =, !=, =, <<>, = > | Указание реляционных операторов в запросах XPath (SQLXML 4.0) |
Арифметические операторы | +, -, *, div | Указание арифметических операторов в запросах XPath (SQLXML 4.0) |
Явные функции преобразования |
number() , , string() Boolean() |
Указание явных функций преобразования в запросах XPath (SQLXML 4.0) |
Логические операторы | AND, OR | Указание логических операторов в запросах XPath (SQLXML 4.0) |
Логические функции |
true() , , false() not() |
Указание логических функций в запросах XPath (SQLXML 4.0) |
Переменные XPath | Указание переменных XPath в запросах XPath (SQLXML 4.0) |
Неподдерживаемые функции
В следующей таблице показаны функции языка XPath, который не реализован в SQLXML 4.0.
Функция | Товар |
---|---|
Оси |
ancestor , ancestor-or-self descendant descendant-or-self (//) following following-sibling namespace preceding preceding-sibling |
Числовые предикаты | |
Арифметические операторы | модуль |
Функции узла |
ancestor , ancestor-or-self descendant descendant-or-self (//) following following-sibling namespace preceding preceding-sibling |
Строковые функции |
string() , concat() , starts-with() contains() substring-before() substring-after() substring() string-length() normalize() translate() |
Логические функции | lang() |
Числовые функции |
sum() , , floor() ceiling() round() |
Оператор Union | | |
При указании запросов XPath в шаблоне обратите внимание на следующее поведение:
- XPath может содержать такие символы, как < или >, имеющие особые значения в ФОРМАТЕ XML (и шаблон — XML-документ). Эти символы необходимо экранировать с помощью XML-кодировки или указать XPath в URL-адресе.