Partilhar via


Especificação de Operadores Relacionais em Consultas XPath (SQLXML 4.0)

Aplica-se a:SQL ServerBanco de Dados SQL do Azure

Os exemplos seguintes mostram como os operadores relacionais são especificados nas consultas XPath. As consultas XPath nestes exemplos são especificadas contra o esquema de mapeamento contido em SampleSchema1.xml. Para informações sobre este esquema de exemplo, consulte Esquema XSD Anotado de Exemplo para Exemplos XPath (SQLXML 4.0).

Examples

A. Especificar operador relacional

Esta consulta XPath devolve os elementos filhos do <elemento Cliente> onde o valor do atributo CustomerID é "1" e onde quaisquer elementos de Ordem> filho< contêm um <filho OrderDetail> com um atributo OrderQty com valor superior a 3:

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

O predicado especificado entre parênteses filtra os <elementos do Cliente> . Apenas os <elementos Customer> que tenham pelo menos um <neto OrderDetail> com valor de atributo OrderQty superior a 3 são devolvidos.

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

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

  2. Crie o seguinte modelo (SpecifyRelationalA.xml) e guarde-o no diretório onde SampleSchema1.xml está guardado.

    <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 onde o modelo é guardado. Um caminho absoluto também pode ser especificado, 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 Usando 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 Booleana para comparar o resultado

Esta consulta devolve todos os filhos <do elemento Order> do nó de contexto que tenham um valor de atributo SalesPersonID inferior a 270:

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

Pode ser especificado um atalho para o eixo do atributo (@) e, como o eixo filho é o predefinido, pode ser omitido da consulta:

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

Observação

Quando esta consulta é especificada num modelo, o < carácter deve ser codificado por entidade porque tem < um significado especial num documento XML. Num modelo, use < para especificar a < personagem.

Para testar a consulta XPath contra o esquema de mapeamento
  1. Copie o código de esquema de exemplo e cole-o num ficheiro de texto. Guarde o ficheiro como SampleSchema1.xml.

  2. Crie o seguinte modelo (SpecifyRelationalB.xml) e guarde-o no diretório onde SampleSchema1.xml está guardado.

    <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 onde o modelo é guardado. Um caminho absoluto também pode ser especificado, 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 Usando o ADO para executar consultas SQLXML 4.0.

Aqui está o conjunto parcial de resultados 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>