Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В следующих примерах показано, как указываются оси в запросах XPath.
Запросы XPath в этих примерах указываются в схеме сопоставления, содержащейся в SampleSchema1.xml. Дополнительные сведения об этой схеме см. в примере аннотированной схемы XSD для примеров XPath (SQLXML 4.0).
Примеры
А. Получение дочерних элементов узла контекста
Следующий запрос XPath выбирает все дочерние <элементы контакта> узла контекста:
/child::Contact
В запросе используется ось и Contact
является тестом узла (TRUE, child
если Contact
является <узлом элемента>, так как <элемент> является основным типом узла, связанным с child
осей).
child
Ось — это по умолчанию. Таким образом, запрос можно записать следующим образом:
/Contact
Тестирование запроса XPath на схему сопоставления
Скопируйте пример кода схемы и вставьте его в текстовый файл. Сохраните файл как SampleSchema1.xml.
Создайте следующий шаблон (XPathAxesSampleA.xml) и сохраните его в каталоге, где был сохранен SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact </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">
<Contact ContactID="1" LastName="Achong" FirstName="Gustavo" Title="Mr." />
<Contact ContactID="2" LastName="Abel" FirstName="Catherine" Title="Ms." />
<Contact ContactID="3" LastName="Abercrombie" FirstName="Kim" Title="Ms." />
<Contact ContactID="4" LastName="Acevedo" FirstName="Humberto" Title="Sr." />
...
</ROOT>
В. Получение внуков узла контекста
Следующий запрос XPath выбирает все дочерние <элементы Order> дочерних <элементов элемента Customer> узла контекста:
/child::Customer/child::Order
В запросе используется ось и Customer
Order
выполняются тесты узлов (эти тесты узлов являются TRUE, child
если customer и Order являются <узлами элементов>, так как <узел элемента> является основным узлом для child
оси). Для каждого узла, соответствующего <клиенту>, узлы, соответствующие <заказы> , добавляются в результат. В результирующем наборе возвращается только <порядок> .
child
Ось — это по умолчанию. Таким образом, запрос можно указать следующим образом:
/Customer/Order
Тестирование запроса XPath на схему сопоставления
Скопируйте пример кода схемы и вставьте его в текстовый файл. Сохраните файл как SampleSchema1.xml.
Создайте следующий шаблон (XPathAxesSampleB.xml) и сохраните его в каталоге:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order </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-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-761" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-762" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-765" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-768" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-770" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</ROOT>
Если запрос XPath указан как Customer/Order/OrderDetail
, из каждого узла, соответствующего <Клиенту,> запрос переходит к его <элементам Order> . И для каждого соответствующего узла< запрос добавляет узлы OrderDetail>>в результат.< В результирующем наборе возвращается только <OrderDetail> .
С. Использование.. Указание родительской оси
Следующий запрос извлекает все <элементы Order> с родительским <элементом Customer> со значением атрибута CustomerID 1. Запрос использует child
ось в предикате для поиска родительского <элемента Order> .
/child::Customer/child::Order[../@CustomerID="1"]
child
Ось — это ось по умолчанию. Таким образом, запрос можно указать следующим образом:
/Customer/Order[../@CustomerID="1"]
Запрос XPath эквивалентен следующему:
/Customer[@CustomerID="1"]/Order.
Замечание
Запрос /Order[../@CustomerID="1"]
XPath возвращает ошибку, так как родительский <элемент order> отсутствует. Хотя в схеме сопоставления могут быть элементы, содержащие <Order>, XPath не начал ни с одной из них. Следовательно, <Order> считается типом элемента верхнего уровня в документе.
Тестирование запроса XPath на схему сопоставления
Скопируйте пример кода схемы и вставьте его в текстовый файл. Сохраните файл как SampleSchema1.xml.
Создайте следующий шаблон (XPathAxesSampleC.xml) и сохраните его в каталоге:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[../@CustomerID="1"] </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-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-753" UnitPrice="2576.3544"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-756" UnitPrice="1049.7528"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-758" UnitPrice="1049.7528"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-761" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-762" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-763" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-765" UnitPrice="503.3507"
OrderQty="2" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-768" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-770" UnitPrice="503.3507"
OrderQty="1" UnitPriceDiscount="0" />
</Order>
...
</Order>
</ROOT>
Д. Указание оси атрибутов
Следующий запрос XPath выбирает все дочерние <элементы клиента> узла контекста со значением атрибута CustomerID 1:
/child::Customer[attribute::CustomerID="1"]
В предикате attribute::CustomerID
attribute
является осью и CustomerID
является тестом узла (если CustomerID
это атрибут теста узла имеет значение TRUE, так как <узел атрибута> является основным узлом для attribute
оси).
Ярлык для attribute
оси (@) можно указать, и так как child
это ось по умолчанию, ее можно исключить из запроса:
/Customer[@CustomerID="1"]
Тестирование запроса XPath на схему сопоставления
Скопируйте пример кода схемы и вставьте его в текстовый файл. Сохраните файл как SampleSchema1.xml.
Создайте следующий шаблон (XPathAxesSampleD.xml) и сохраните его в каталоге, где сохранены SampleSchema1.xml.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> child::Customer[attribute::CustomerID="1"] </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">
<Customer CustomerID="1" SalesPersonID="280"
TerritoryID="1" AccountNumber="1"
CustomerType="S" Orders="Ord-43860 Ord-44501 Ord-45283 Ord-46042">
<Order SalesOrderID="Ord-43860" SalesPersonID="280"
OrderDate="2001-08-01T00:00:00"
DueDate="2001-08-13T00:00:00"
ShipDate="2001-08-08T00:00:00">
<OrderDetail ProductID="Prod-729" UnitPrice="226.8571"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-732" UnitPrice="440.1742"
OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-738" UnitPrice="220.2496"
OrderQty="1" UnitPriceDiscount="0" />
...
</Order>
...
</Customer>
</ROOT>