Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os exemplos a seguir mostram como os eixos são especificados em consultas XPath.
As consultas XPath nesses exemplos são especificadas em relação ao esquema de mapeamento contido em SampleSchema1.xml. Para obter informações sobre esse esquema de exemplo, consulte Exemplo de esquema XSD anotado para exemplos XPath (SQLXML 4.0).
Exemplos
Um. Recuperar elementos filho do nó de contexto
A consulta XPath a seguir seleciona todos os <elementos filho de contato> do nó de contexto:
/child::Contact
Na consulta, child é o eixo e Contact é o teste de nó (TRUE se Contact for um <nó de elemento> , porque <o elemento> é o tipo de nó primário associado ao child eixo).
O child eixo é o padrão. Portanto, a consulta pode ser escrita como:
/Contact
Para testar a consulta XPath no esquema de mapeamento
Copie o código de esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.
Crie o modelo a seguir (XPathAxesSampleA.xml) e salve-o no diretório em que SampleSchema1.xml foi salvo.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Contact </sql:xpath-query> </ROOT>O caminho do diretório especificado para o esquema de mapeamento (SampleSchema1.xml) é relativo ao diretório em que o modelo é salvo. Também é possível especificar um caminho absoluto, por exemplo:
mapping-schema="C:\MyDir\SampleSchema1.xml"Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.
Para obter mais informações, consulte Usar o ADO para executar consultas SQLXML 4.0.
Aqui está o conjunto de resultados parcial da execução do modelo:
<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>
B. Recuperar netos do nó de contexto
A consulta XPath a seguir seleciona todos os filhos do <elemento Order> dos <filhos do elemento Customer> do nó de contexto:
/child::Customer/child::Order
Na consulta, child é o eixo e CustomerOrder são os testes de nó (esses testes de nó são TRUE se Customer e Order são <nós de elemento> , porque o nó do <elemento> é o nó primário do child eixo). Para cada cliente> correspondente< a nós, os nós correspondentes< aos Pedidos> são adicionados ao resultado. Somente <Order> é retornado no conjunto de resultados.
O child eixo é o padrão. Portanto, a consulta pode ser especificada como:
/Customer/Order
Para testar a consulta XPath no esquema de mapeamento
Copie o código de esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.
Crie o modelo a seguir (XPathAxesSampleB.xml) e salve-o no diretório em que:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order </sql:xpath-query> </ROOT>O caminho do diretório especificado para o esquema de mapeamento (SampleSchema1.xml) é relativo ao diretório em que o modelo é salvo. Também é possível especificar um caminho absoluto, por exemplo:
mapping-schema="C:\MyDir\SampleSchema1.xml"Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.
Para obter mais informações, consulte Usar o ADO para executar consultas SQLXML 4.0.
Aqui está o conjunto de resultados parcial da execução do modelo:
<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>
Se a consulta XPath for especificada como Customer/Order/OrderDetail, de cada nó correspondente <ao Cliente> , a consulta navegará até seus <elementos Order> . E para cada ordem> de correspondência< de nó, a consulta adiciona os nós <OrderDetail> ao resultado. Somente <OrderDetail> é retornado no conjunto de resultados.
C. Usar.. para especificar o eixo pai
A consulta a seguir recupera todos os <elementos Order> com um elemento Customer> pai< com um valor de atributo CustomerID de 1. A consulta usa o child eixo no predicado para localizar o pai do <elemento Order> .
/child::Customer/child::Order[../@CustomerID="1"]
O child eixo é o eixo padrão. Portanto, a consulta pode ser especificada como:
/Customer/Order[../@CustomerID="1"]
A consulta XPath é equivalente a:
/Customer[@CustomerID="1"]/Order.
Observação
A consulta /Order[../@CustomerID="1"] XPath retornará um erro porque não há um pai de <Order>. Embora possa haver elementos no esquema de mapeamento que contêm <Order>, o XPath não começou em nenhum deles; consequentemente, <Order> é considerado o tipo de elemento de nível superior no documento.
Para testar a consulta XPath no esquema de mapeamento
Copie o código de esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.
Crie o modelo a seguir (XPathAxesSampleC.xml) e salve-o no diretório em que:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="SampleSchema1.xml"> /Customer/Order[../@CustomerID="1"] </sql:xpath-query> </ROOT>O caminho do diretório especificado para o esquema de mapeamento (SampleSchema1.xml) é relativo ao diretório em que o modelo é salvo. Também é possível especificar um caminho absoluto, por exemplo:
mapping-schema="C:\MyDir\SampleSchema1.xml"Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.
Para obter mais informações, consulte Usar o ADO para executar consultas SQLXML 4.0.
Aqui está o conjunto de resultados parcial da execução do modelo:
<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>
D. Especificar o eixo do atributo
A consulta XPath a seguir seleciona todos os elementos filho do <cliente> do nó de contexto com um valor de atributo CustomerID de 1:
/child::Customer[attribute::CustomerID="1"]
No predicado attribute::CustomerID, attribute é o eixo e CustomerID é o teste de nó (se CustomerID for um atributo, o teste do nó é TRUE, porque o <nó de atributo> é o nó primário para o attribute eixo).
Um atalho para o attribute eixo (@) pode ser especificado e, como child é o eixo padrão, ele pode ser omitido da consulta:
/Customer[@CustomerID="1"]
Para testar a consulta XPath no esquema de mapeamento
Copie o código de esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.
Crie o modelo a seguir (XPathAxesSampleD.xml) e salve-o no diretório em que SampleSchema1.xml é salvo.
<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>O caminho do diretório especificado para o esquema de mapeamento (SampleSchema1.xml) é relativo ao diretório em que o modelo é salvo. Também é possível especificar um caminho absoluto, por exemplo:
mapping-schema="C:\MyDir\SampleSchema1.xml"Crie e use o script de teste SQLXML 4.0 (Sqlxml4test.vbs) para executar o modelo.
Para obter mais informações, consulte Usar o ADO para executar consultas SQLXML 4.0.
Aqui está o conjunto de resultados parcial da execução do modelo:
<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>