Partilhar via


Especificação de Predicados de Seleção no Caminho de Localização (SQLXML 4.0)

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

Um predicado filtra um conjunto de nós em relação a um eixo (semelhante a uma cláusula WHERE numa instrução SELECT). O predicado é especificado entre parênteses. Para cada nó no conjunto de nós a ser filtrado, a expressão do predicado é avaliada com esse nó como nó de contexto, com o número de nós no conjunto de nós como tamanho de contexto. Se a expressão do predicado for avaliada como TRUE para esse nó, o nó é 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 a um número seleciona esse nó ordinal. Por exemplo, o caminho Customer[3] de localização devolve o terceiro cliente. Tais predicados numéricos não são suportados. Apenas expressões de predicados que retornam um resultado booleano são suportadas.

Observação

Para informações sobre as limitações desta implementação XPath do XPath e as diferenças entre esta e a especificação do W3C, veja Introdução ao Uso de Consultas XPath (SQLXML 4.0).

Predicado de Seleção: Exemplo 1

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

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

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

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

/Customer[@CustomerID="ALFKI"]  

Predicado de seleção: Exemplo 2

A seguinte expressão XPath (caminho de localização) seleciona do nó de contexto atual todos os <netos da Ordem> 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 dos eixos. Customer, Order, e SalesOrderID são os testes de nós. attribute::OrderID="1" é o predicado.

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

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

Predicado de Seleção: Exemplo 3

A seguinte expressão XPath (caminho de localização) seleciona do nó de contexto atual todos os filhos< Cliente> que tenham um ou mais <filhos Contactname>:

child::Customer[child::ContactName]  

Este exemplo assume que o <ContactName> é um elemento filho do <elemento Customer> no documento XML, o que é referido como mapeamento centrado no elemento num esquema XSD anotado.

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

Esta expressão devolve apenas os <filhos do elemento Cliente> do nó de contexto que têm <filhos do elemento ContactName> .

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

Customer[ContactName]  

Predicado de seleção: Exemplo 4

A seguinte expressão XPath seleciona <filhos de elementos Cliente> do nó de contexto que não têm <filhos de elementos ContactName> :

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

Este exemplo assume que <ContactName> é um elemento filho do <elemento Customer> no documento XML, e o campo ContactName não é obrigatório na base de dados.

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

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

Customer[not(ContactName)]  

Predicado de seleção: Exemplo 5

A expressão XPath seguinte seleciona do nó de contexto atual todos os <filhos do Cliente> que possuem o atributo CustomerID :

child::Customer[attribute::CustomerID]  

Neste exemplo, child é o eixo e Customer é o teste do nó (TRUE se Customer for um <nó 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 pode também 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, como mostrado no exemplo seguinte:

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

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

Ver também

Introdução aos Esquemas XSD Anotados (SQLXML 4.0)
Formatação XML do lado do cliente (SQLXML 4.0)