Partilhar via


Especificando predicados de seleção no caminho do local (SQLXML 4.0)

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

Um predicado filtra um conjunto de nós com respeito a um eixo (semelhantemente 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 conjunto de nós como o tamanho do 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.

XPath também permite a filtragem com base na posição. Uma expressão de predicado avaliada como um número seleciona esse nó ordinal. Por exemplo, o caminho do local Customer[3] retorna o terceiro cliente. Não há suporte para tais predicados numéricos. Há suporte somente para expressões de predicado que retornem um resultado Boolean.

Observação

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

Predicado de seleção: Exemplo 1

A expressão XPath a seguir (caminho de localização) seleciona no nó de contexto atual todos os filhos do <elemento Customer> que têm o atributo CustomerID com o valor 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 <element> é o tipo de nó principal para o 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, porque <atributo> é o tipo de nó principal do eixo de atributo ).

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

/Customer[@CustomerID="ALFKI"]  

Predicado de seleção: Exemplo 2

A expressão XPath a seguir (caminho de localização) seleciona no nó de contexto atual todos os <netos 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, Order e 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 expressão XPath a seguir (caminho de localização) seleciona no nó de contexto atual todos os <filhos Customer> 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 é conhecido como 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 <element> é o tipo de nó principal para child o 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 filhos de elemento Customer> do nó de contexto que não têm <filhos de elemento ContactName>:<

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

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

Neste exemplo, child é o eixo. Customer é o teste do 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 Customer> que têm o atributo CustomerID:<

child::Customer[attribute::CustomerID]  

Neste exemplo, child é o eixo e Customer é o 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]  

Esta consulta seleciona todos os clientes com qualquer Order para o qual OrderDate é igual a qualquer ShipDate de qualquer Order.

Confira também

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