Partilhar via


Especificando operadores relacionais em consultas XPath (SQLXML 4.0)

Os exemplos a seguir mostram como os operadores relacionais 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. Especificar operador relacional

Essa consulta XPath retorna os elementos filho do <elemento Customer> em que o valor do atributo CustomerID é "1" e onde todos os elementos de Pedido> filho< contêm um <filho OrderDetail> com um atributo OrderQty com um valor maior que 3:

/child::Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  

O predicado especificado nos colchetes filtra os elementos do< Cliente>. Somente os elementos cliente<> que têm pelo menos um <neto OrderDetail> com um valor de atributo OrderQty maior que 3 são retornados.

O child eixo é o padrão. Portanto, a consulta pode ser especificada como:

/Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
Para testar a consulta XPath no esquema de mapeamento
  1. Copie o código de esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.

  2. Crie o modelo a seguir (SpecifyRelationalA.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">  
        /Customer[@CustomerID="1"]/Order/OrderDetail[@OrderQty > 3]  
      </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"  
    
  3. 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 da execução do modelo:

<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. Especifique o operador relacional na consulta XPath e use a função booliana para comparar o resultado

Essa consulta retorna todos os filhos do <elemento Order> do nó de contexto que têm um valor de atributo SalesPersonID menor que 270:

/child::Customer/child::Order[(attribute::SalesPersonID < 270)=true()]  

Um atalho para o attribute eixo (@) pode ser especificado e, como o child eixo é o padrão, ele pode ser omitido da consulta:

/Customer/Order[(@SalesPersonID < 270)=true()]  

Observação

Quando essa consulta é especificada em um modelo, o < caractere deve ser codificado em entidade porque o < caractere tem um significado especial em um documento XML. Em um modelo, use < para especificar o < caractere.

Para testar a consulta XPath no esquema de mapeamento
  1. Copie o código de esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.

  2. Crie o modelo a seguir (SpecifyRelationalB.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">  
            /Customer/Order[(@SalesPersonID<270)=true()]  
        </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"  
    
  3. 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-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>