Основные сведения об использовании запросов XPath (SQLXML 4.0)

Применимо к:SQL Server База данных SQL Azure

Запрос на языке 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 (World Wide Web Consortium) как стандартный язык навигации. SQLXML 4.0 реализует подмножество спецификации W3C XPath, расположенной по адресу http://www.w3.org/TR/1999/PR-xpath-19991008.html.

Далее приведены ключевые отличия реализации XPath консорциума W3C и реализации SQLXML 4.0.

  • Корневые запросы

    SQLXML 4.0 не поддерживает корневой запрос (/). Каждый запрос XPath должен начинаться с типа элемента> верхнего уровня <в схеме.

  • Отчеты об ошибках

    Спецификация XPath консорциума W3C не определяет условия ошибки. Запросы XPath, которые не смогли выбрать какой-либо узел, возвращают пустой набор узлов. В SQLXML 4.0 запрос может вернуть несколько типов ошибок.

  • Порядок документов

    В SQLXML 4.0 порядок документа не всегда определен. Таким образом, числовые предикаты и оси, использующие порядок документов (например , приведенные ниже), не реализуются.

    Отсутствие порядка документа также означает, что строковое значение узла может быть вычислено, только когда этот узел соответствует одному столбцу в одной строке. Элемент с дочерними элементами, или узел IDREFS, или узел NMTOKENS не могут быть преобразованы в строку.

    Примечание.

    В некоторых случаях заметка или ключи ключевых полей из заметки связи может привести к детерминированному порядку документа. Однако это не основное использование этих заметок. Дополнительные сведения см. в разделе "Определение ключевых столбцов" с помощью полей sql:key-fields (SQLXML 4.0) и указание связей с помощью sql:relationship (SQLXML 4.0).

  • Типы данных

    SQLXML 4.0 имеет ограничения при реализации строки XPath, числа и логических типов данных. Дополнительные сведения см. в разделе "Типы данных XPath" (SQLXML 4.0).

  • Запросы между продуктами

    SQLXML 4.0 не поддерживает запросы перекрестного произведения XPath, такие как Customers[Order/@OrderDate=Order/@ShipDate]. Этот запрос выбирает все наборы узлов Customer, состоящие из узлов Order, для которых OrderDate совпадает с ShipDate любого узла Order.

    Однако SQLXML 4.0 не поддерживает такие запросы, как Customer[Order[@OrderDate=@ShippedDate]], которые выбирают наборы узлов Customer, состоящие из узлов Order, для которых OrderDate совпадает с ShipDate.

  • Обработка ошибок и безопасность

    В зависимости от используемого выражения запроса XPath ошибки Transact-SQL могут предоставляться пользователям в определенных условиях.

Таблицы следующего раздела содержат сведения о различиях реализации запросов XPath в SQLXML 4.0 от спецификации консорциума W3C.

Поддерживаемые функции

В следующей таблице приведены возможности языка XPath, реализованные в SQLXML 4.0.

Компонент Товар Ссылка на образцы запросов
Оси атрибуты, дочерние, родительские и самостоятельные оси Указание осей в запросах 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.

Компонент Товар
Оси предок, предок или самозагод, потомок, потомок или самосознание (/), следующее, следующее, одноуровневое пространство имен, предыдущее, предыдущее
Предикаты с числовыми значениями
Арифметические операторы mod
Функции узлов предок, предок или самозагод, потомок, потомок или самосознание (/), следующее, следующее, одноуровневое пространство имен, предыдущее, предыдущее
Строковые функции string(), concat(), starts-with(), contains(), substring-before(), substring-after(), substring(), string-length(), normalize(), translate()
логические функции lang()
Числовые функции sum(), floor(), потолок(), раунд()
Оператор Union |

При указании запросов XPath в шаблоне обратите внимание на следующее поведение.

  • XPath может содержать такие символы, как < или >, имеющие особые значения в ФОРМАТЕ XML (и шаблон — XML-документ). Эти символы необходимо экранировать с помощью XML-кодировки или указать XPath в URL-адресе.

См. также

Использование запросов XPath в SQLXML 4.0