Compartilhar via


Especificação de predicados de seleção no caminho de localização (SQLXML 4.0)

Um predicado filtra um conjunto de nós em relação a um eixo (semelhante a uma cláusula WHERE em uma instrução SELECT). O predicado é especificado entre colchetes. Para cada nó no conjunto de nós a ser filtrado, a expressão de predicado é avaliada com esse nó como o nó de contexto, com o número de nós no nó definido como tamanho de contexto. Se a expressão de predicado for avaliada como TRUE para esse nó, o nó será incluído no conjunto de nós resultante.

O XPath também permite filtragem baseada em posição. Uma expressão de predicado que avalia um número seleciona esse nó ordinal. Por exemplo, o caminho Customer[3] de localização retorna o terceiro cliente. Esses predicados numéricos não têm suporte. Há suporte apenas para expressões de predicado que retornam um resultado booliano.

Observação

Para obter informações sobre as limitações dessa implementação XPath do XPath e as diferenças entre ele e a especificação W3C, consulte Introdução ao uso de consultas XPath (SQLXML 4.0).

Predicado de seleção: Exemplo 1

A seguinte expressão XPath (caminho de local) seleciona no nó de contexto atual todos os filhos do <elemento Customer> que têm o atributo CustomerID com o valor de ALFKI:

/child::Customer[attribute::CustomerID="ALFKI"]  

Nesta consulta XPath, child e attribute são nomes de eixo. Customeré o teste de nó (TRUE se Customer for um <nó> de elemento, porque <o elemento> é o tipo de nó principal do child eixo). attribute::CustomerID="ALFKI" é o predicado. No predicado, attribute é o eixo e CustomerID é o teste de nó (TRUE se CustomerID for um atributo do nó de contexto, pois <o atributo> é o tipo de nó principal do attribute eixo).

Usando a sintaxe abreviada, a consulta XPath também pode ser especificada como:

/Customer[@CustomerID="ALFKI"]  

Predicado de seleção: Exemplo 2

A seguinte expressão XPath (caminho de localização) seleciona no nó de contexto atual todos os netos do <Order> que têm o atributo SalesOrderID com o valor 1:

/child::Customer/child::Order[attribute::SalesOrderID="1"]  

Nesta expressão XPath, child e attribute são os nomes de eixo. Customer, Ordere SalesOrderID são os testes de nó. attribute::OrderID="1" é o predicado.

Usando a sintaxe abreviada, a consulta XPath também pode ser especificada como:

/Customer/Order[@SalesOrderID="1"]  

Predicado de seleção: Exemplo 3

A seguinte expressão XPath (caminho de local) seleciona no nó de contexto atual todos os filhos do< Cliente> que têm um ou mais <filhos ContactName>:

child::Customer[child::ContactName]  

Este exemplo pressupõe que o <ContactName> é um elemento filho do <elemento Customer> no documento XML, que é chamado de mapeamento centrado em elemento em um esquema XSD anotado.

Nesta expressão XPath, child é o nome do eixo. Customer é o teste de nó (TRUE se Customer for um <nó de elemento> , porque <o elemento> é o tipo de nó principal do child eixo). child::ContactName é o predicado. No predicado, child é o eixo e ContactName é o teste de nó (TRUE se ContactName for um <nó de elemento> ).

Essa expressão retorna apenas os <filhos do elemento Customer> do nó de contexto que têm <filhos do elemento ContactName> .

Usando a sintaxe abreviada, a consulta XPath também pode ser especificada como:

Customer[ContactName]  

Predicado de seleção: Exemplo 4

A expressão XPath a seguir seleciona <os filhos do elemento Customer> do nó de contexto que não têm <filhos do elemento ContactName> :

child::Customer[not(child::ContactName)]  

Este exemplo pressupõe que <ContactName> é um elemento filho do <elemento Customer> no documento XML e que o campo ContactName não é necessário no banco de dados.

Neste exemplo, child é o eixo. Customer é o teste de nó (TRUE se Customer for um <nó de elemento> ). not(child::ContactName) é o predicado. No predicado, child é o eixo e ContactName é o teste de nó (TRUE se ContactName for um <nó de elemento> ).

Usando a sintaxe abreviada, a consulta XPath também pode ser especificada como:

Customer[not(ContactName)]  

Predicado de seleção: Exemplo 5

A expressão XPath a seguir seleciona no nó de contexto atual todos os filhos do< Cliente> que têm o atributo CustomerID:

child::Customer[attribute::CustomerID]  

Neste exemplo, child é o eixo e Customer é um teste de nó (TRUE se Customer for um <nó de elemento> ). attribute::CustomerID é o predicado. No predicado, attribute é o eixo e CustomerID é o predicado (TRUE se CustomerID for um <nó de atributo> ).

Usando a sintaxe abreviada, a consulta XPath também pode ser especificada como:

Customer[@CustomerID]  

Predicado de seleção: Exemplo 6

O Microsoft SQLXML 4.0 inclui suporte para consultas XPath que contêm um produto cruzado no predicado, conforme mostrado no exemplo a seguir:

Customer[Order/@OrderDate=Order/@ShipDate]  

Essa consulta seleciona todos os clientes com qualquer Order um para o qual o OrderDate igual a ShipDate qualquer Order.

Consulte Também

Introdução aos esquemas XSD anotados (SQLXML 4.0)
Formatação XML do lado do cliente (SQLXML 4.0)