Применение реляционных операторов в запросах XPath (SQLXML 4.0)
Область применения: SQL Server База данных SQL Azure
В следующих примерах показано, как задаются реляционные операторы в запросах XPath. В данных примерах запросы XPath определены в соответствии со схемой сопоставления, которая содержится в файле SampleSchema1.xml. Дополнительные сведения об этой схеме см. в примере аннотированной схемы XSD для примеров XPath (SQLXML 4.0).
Примеры
А. Укажите реляционный оператор
Этот запрос XPath возвращает дочерние элементы элемента Customer, где значение атрибута CustomerID> равно "1" и где все дочерние <элементы Order содержат дочерний дочерний< элемент OrderDetail>> с атрибутом OrderQty со значением больше 3:<
/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Предикат, указанный в скобках, фильтрует <элементы Customer> . Возвращаются только элементы Customer>, имеющие по крайней мере один< внук OrderDetail> с значением атрибута OrderQty больше 3.<
Ось дочернего объекта по умолчанию. Поэтому запрос можно определить следующим образом.
/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]
Проверка запроса XPath к схеме сопоставления
Скопируйте пример кода схемы и вставьте его в текстовый файл. Сохраните файл с именем SampleSchema1.xml.
Создайте следующий шаблон (SpecifyRelationalA.xml) и сохраните его в каталоге, в котором сохранен файл SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3] </sql:xpath-query> </ROOT>
Путь к каталогу схемы сопоставления (файл SampleSchema1.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Создайте и запустите тестовый скрипт SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.
Дополнительные сведения см. в разделе "Использование ADO для выполнения запросов SQLXML 4.0".
Далее приведен результирующий набор, полученный в результате выполнения этого шаблона.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<OrderDetail ProductID="Prod-760" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-766" UnitPrice="503.3507" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742" OrderQty="4" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-757" UnitPrice="1049.7528" OrderQty="4" UnitPriceDiscount="0" />
</ROOT>
B. Укажите реляционный оператор в запросе XPath и используйте логическую функцию для сравнения результатов
Этот запрос возвращает все дочерние <элементы Order> узла контекста с значением атрибута SalesPersonID, которое меньше 270:
/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]
Ярлык для оси атрибута (@) можно указать, и так как дочерняя ось является по умолчанию, ее можно исключить из запроса:
/Customer/Order[(@SalesPersonID < 270)=true()]
Примечание.
Если этот запрос указан в шаблоне, < символ должен быть закодирован, так как < символ имеет особое значение в XML-документе. В шаблоне используйте <
для указания символа < .
Проверка запроса XPath к схеме сопоставления
Скопируйте пример кода схемы и вставьте его в текстовый файл. Сохраните файл с именем SampleSchema1.xml.
Создайте следующий шаблон (SpecifyRelationalB.xml) и сохраните его в том же каталоге, в котором сохранен файл SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[(@SalesPersonID<270)=true()] </sql:xpath-query> </ROOT>
Путь к каталогу схемы сопоставления (файл SampleSchema1.xml) задается относительно каталога, в котором сохранен шаблон. Можно также задать абсолютный путь, например:
mapping-schema="C:\MyDir\SampleSchema1.xml"
Создайте и запустите тестовый скрипт SQLXML 4.0 (Sqlxml4test.vbs), чтобы выполнить шаблон.
Дополнительные сведения см. в разделе "Использование ADO для выполнения запросов SQLXML 4.0".
Далее приведен частичный результирующий набор, полученный в результате выполнения этого шаблона.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Order SalesOrderID="Ord-46613" SalesPersonID="268"
OrderDate="2002-07-01T00:00:00"
DueDate="2002-07-13T00:00:00"
ShipDate="2002-07-08T00:00:00">
<OrderDetail ProductID="Prod-739" UnitPrice="917.9363"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-779" UnitPrice="1491.4221"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-825" UnitPrice="242.1391"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
<Order SalesOrderID="Ord-71919" SalesPersonID="268"
OrderDate="2004-06-01T00:00:00"
DueDate="2004-06-13T00:00:00"
ShipDate="2004-06-08T00:00:00">
<OrderDetail ProductID="Prod-961" UnitPrice="534.492"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-965" UnitPrice="534.492"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-966" UnitPrice="1716.5304"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</ROOT>