Share via


Especificando um caminho para o local (SQLXML 4.0)

São especificadas consultas XPath no formato de uma expressão. Há vários tipos de expressões. Um caminho de local é uma expressão que seleciona um conjunto de nós relativos ao nó de contexto. O resultado de avaliar um caminho de local é um conjunto de nós.

Tipos de caminhos de local

Um caminho de local pode ter um destes formatos:

  • Caminho de local absoluto

    Um caminho de local absoluto inicia no nó raiz do documento. Ele é formado por barra (/) opcionalmente seguida por um caminho de local relativo. A barra (/) seleciona o nó raiz do documento.

  • Caminho de local relativo

    Um caminho de local relativo inicia no nó de contexto no documento. Um caminho de local consiste em uma seqüência de uma ou mais etapas de local separada por uma barra (/). Cada etapa seleciona um conjunto de nós relativo ao nó de contexto. A seqüência inicial de etapas seleciona um conjunto de nós relativo a um nó de contexto. Cada nó nesse conjunto é usado como um nó de contexto para a etapa seguinte. São unidos os conjuntos de nós identificados por esta etapa. Por exemplo, child::Order/child::OrderDetail seleciona os filhos do elemento <OrderDetail> dos filhos do elemento <Order> do nó de contexto.

    ObservaçãoObservação

    Na implementação de XPath do SQLXML 4.0, todas as consultas XPath começam no contexto raiz, mesmo que o XPath não seja explicitamente absoluto. Por exemplo, uma consulta XPath que comece com "Customer" é tratada como "/Customer". Na consulta XPath Customer[Order], Customer começa no contexto raiz, mas Order começa no contexto Customer. Para obter mais informações, consulte Introdução para usar consultas XPath (SQLXML 4.0).

Etapas de local

Um caminho de local (absoluto ou relativo) é composto por etapas de local que contêm três partes:

  • Eixo

    O eixo especifica a relação de árvore entre os nós selecionados pela etapa de local e o nó de contexto. Os eixos parent, child, attribute e self são aceitos. Se um eixo child for especificado no caminho de local, todos os nós selecionados pela consulta serão os filhos do nó de contexto. Se um eixo parent for especificado, o nó selecionado será o nó pai do nó de contexto. Se um eixo attribute for especificado, os nós selecionados serão os atributos do nó de contexto.

  • Teste de nó

    Um teste de nó especifica o tipo de nó selecionado pela etapa de local. Todos os eixos (child, parent, attribute e self) têm um tipo de nó principal. Para o eixo attribute, o tipo de nó principal é <attribute>. Para os eixos parent, child e self, o tipo de nó principal é <element>.

    Por exemplo, se o caminho de local especificar child::Customer, os filhos do elemento <Customer> do nó de contexto serão selecionados. Como o eixo child tem <element> como seu tipo de nó principal, o teste de nó, Customer, será TRUE se Customer for um nó <element>.

  • Predicados da seleção (zero ou mais)

    Um predicado filtra um conjunto de nós em relação a um eixo. A especificação de predicados de seleção em uma expressão XPath é semelhante à especificação de uma cláusula WHERE em uma instrução SELECT. O predicado é especificado entre colchetes. A aplicação do teste especificado nos predicados de seleção filtra os nós retornados pelo teste de nó. 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.

    A sintaxe de uma etapa de local é o nome do eixo e o teste de nó separados por dois-pontos duplos (::), seguidos por zero ou mais expressões entre colchetes. Por exemplo, a expressão XPath (caminho de local) child::Customer[@CustomerID='ALFKI'] seleciona todos os filhos do elemento <Customer> do nó de contexto. Em seguida, o teste no predicado é aplicado ao conjunto de nós, que retorna apenas os nós do elemento <Customer> com valor de atributo 'ALFKI' para o atributo CustomerID correspondente.

Nesta seção