Especificando operadores booleanos em consultas XPath (SQLXML 4.0)
O exemplo a seguir mostra como os operadores Booleanos são especificados em consultas XPath. A consulta XPath deste exemplo é especificada com relação ao esquema de mapeamento contido em SampleSchema1.xml. Para obter mais informações sobre esse esquema de exemplo, consulte Esquema XSD anotado de exemplo para exemplos de XPath (SQLXML 4.0).
Exemplos
A. Especificar o operador Booleano OR
Esta consulta XPath retorna os filhos do elemento <Customer> do nó de contexto com o valor de atributo CustomerID de 13 ou 31:
/child::Customer[attribute::CustomerID="13" or attribute::CustomerID="31"]
Um atalho para o eixo attribute (@) pode ser especificado e, como o eixo child é o padrão, ele pode ser omitido:
/Customer[@CustomerID="13" or @CustomerID="31"]
No predicado, attribute é o eixo e CustomerID é o teste de nó (TRUE se CustomerID for um nó <attribute>, pois o nó <attribute> é o nó principal para o eixo attribute). O predicado filtra os elementos <Customer> e retorna aqueles que satisfazem a condição especificada no predicado.
Para testar as consultas XPath com relação ao esquema de mapeamento
Copie o código do esquema de exemplo e cole-o em um arquivo de texto. Salve o arquivo como SampleSchema1.xml.
Crie o modelo a seguir (BooleanOperatorsA.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[@CustomerID="13" or @CustomerID="31"] </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"
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 do SQLXML 4.0.
Aqui está o conjunto de resultados 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="31" SalesPersonID="286" TerritoryID="7" AccountNumber="31" CustomerType="S" Orders="Ord-51803 Ord-69427">
<Order SalesOrderID="Ord-51803" SalesPersonID="286" OrderDate="2007-08-01T00:00:00" DueDate="2007-08-13T00:00:00" ShipDate="2007-08-08T00:00:00">
<OrderDetail ProductID="Prod-718" UnitPrice="1059.31" OrderQty="1" UnitPriceDiscount="0" />
<OrderDetail ProductID="Prod-838" UnitPrice="1059.31" OrderQty="1" UnitPriceDiscount="0" />
</Order>
<Order SalesOrderID="Ord-69427" SalesPersonID="286" OrderDate="2008-05-01T00:00:00" DueDate="2008-05-13T00:00:00" ShipDate="2008-05-08T00:00:00">
<OrderDetail ProductID="Prod-835" UnitPrice="440.1742" OrderQty="1" UnitPriceDiscount="0" />
</Order>
</Customer>
</ROOT>