Compartilhar via


Especificando um teste de nó no caminho de localização (SQLXML 4.0)

Um teste de nó especifica o tipo de nó selecionado pela etapa de localização. Cada eixo (child, parent, attributeou self) tem um tipo de nó principal. Para o attribute eixo, o tipo de nó principal é <o atributo>. Para os parenteixos , childe self , o tipo de nó principal é <o elemento>.

Observação

Não há suporte para o teste de nó curinga * (por exemplo, child::*) .

Teste de nó: Exemplo 1

O caminho child::Customer de localização seleciona <os filhos do elemento Cliente> do nó de contexto.

Neste exemplo, child é o eixo e Customer é o teste de nó. O tipo de nó principal do eixo é <o elemento>child. Portanto, o teste de nó será TRUE se o <nó Cliente> for um <nó de elemento> . Se o nó de contexto não <tiver filhos do Cliente> , um conjunto vazio de nós será retornado.

Teste de nó: Exemplo 2

O caminho attribute::CustomerID de localização seleciona o atributo CustomerID do nó de contexto.

No exemplo, attribute é o eixo e CustomerID é o teste de nó. O tipo de nó principal do attribute eixo é <o atributo>. Portanto, o teste de nó será TRUE se CustomerID for um <nó de atributo> . Se o nó de contexto não tiver CustomerID, um conjunto vazio de nós será retornado.

Observação

Nesta implementação do XPath, se uma etapa de local se referir a um <elemento> ou um <tipo de atributo> que não é declarado no esquema, um erro será gerado. Isso é diferente da implementação do XPath no MSXML, que retorna um conjunto de nós vazio.

Sintaxe abreviada para os eixos

Há suporte para a seguinte sintaxe abreviada para o caminho de localização:

  • attribute:: pode ser abreviado para @.

    O caminho Customer[@CustomerID="ALFKI"] de localização é o mesmo que child::Customer[attribute::CustomerID="ALFKI"].

  • child:: pode ser omitido de uma etapa de local.

    Assim, child é o eixo padrão. O caminho Customer/Order de localização é o mesmo que child::Customer/child::Order.

  • self::node() pode ser abreviado para um período (.) e parent::node() pode ser abreviado para dois períodos (..).