Partilhar via


Especificando funções boolianas em consultas XPath (SQLXML 4.0)

Aplica-se a: SQL Server Banco de Dados SQL do Azure

Os exemplos a seguir mostram como as funções boolianas são especificadas em consultas XPath. As consultas XPath nesses exemplos são especificadas com 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 de XPath (SQLXML 4.0).

Exemplos

R. Especificar a função booliana not()

Essa consulta retorna todos os elementos filho Customer> do nó de contexto que não têm <elementos filho Order>:<

/child::Customer[not(child::Order)]  

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

/Customer[not(Order)]  

Para testar a consulta XPath com relação ao 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 (BooleanFunctionsA.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">  
        Customer[not(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 foi 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">  
  <Customer CustomerID="13" SalesPersonID="286" TerritoryID="7" AccountNumber="13" CustomerType="S" />   
  <Customer CustomerID="32" SalesPersonID="289" TerritoryID="8" AccountNumber="32" CustomerType="S" />   
  <Customer CustomerID="35" SalesPersonID="275" TerritoryID="2" AccountNumber="35" CustomerType="S" />   
  ...  
</ROOT>  

B. Especificar as funções boolianas true() e false()

Essa consulta retorna todos os <filhos de elementos Customer> do nó de contexto que não têm <elementos filhos Order>. Em termos relacionais, esta consulta retorna todos os clientes que não fizeram nenhum pedido.

/child::Customer[child::Order=false()]  

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

/Customer[Order=false()]  

Essa consulta é equivalente à especificação a seguir:

/Customer[not(Order)]  

A consulta seguinte retorna todos os clientes que fizeram pelo menos um pedido:

/Customer[Order=true()]  

Essa consulta é equivalente a esta:

/Customer[Order]  

Para testar a consulta XPath com relação ao 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 (BooleanFunctionsB.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">  
        /Customer[Order=false()]  
      </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 foi 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">  
  <Customer CustomerID="13" SalesPersonID="286" TerritoryID="7" AccountNumber="13" CustomerType="S" />   
  <Customer CustomerID="32" SalesPersonID="289" TerritoryID="8" AccountNumber="32" CustomerType="S" />   
  <Customer CustomerID="35" SalesPersonID="275" TerritoryID="2" AccountNumber="35" CustomerType="S" />   
  ...  
</ROOT>