Partilhar via


Especificando um teste de nó no caminho do local (SQLXML 4.0)

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

Um teste de nó especifica o tipo de nó selecionado pela etapa de local. Cada eixo (filho, pai, atributo ou self) tem um tipo de nó principal. Para o eixo de atributo, o tipo de nó principal é <atributo>. Para os eixos pai, filho e self , o tipo de nó principal é <element>.

Observação

O teste de nó de curinga * (por exemplo, child::*) não tem suporte.

Teste de nó: Exemplo 1

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

Neste exemplo, child é o eixo e Customer é o teste de nó. O tipo de nó principal para o eixo filho é <element.> Portanto, o teste de nó será TRUE se o nó Customer> for um< nó de elemento>.< Se o nó de contexto não tiver filhos <Customer> , 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 eixo de atributo é <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 localização se referir a um <elemento> ou a um tipo de< atributo> que não está declarado no esquema, um erro será gerado. Isto é diferente da implementação de XPath em MSXML, que retorna um conjunto de nós vazio.

Sintaxe abreviada para os eixos

A sintaxe abreviada a seguir para o caminho de local tem suporte:

  • attribute:: pode ser abreviado para @.

    O caminho do local Customer[@CustomerID="ALFKI"] é o mesmo que child::Customer[attribute::CustomerID="ALFKI"].

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

    Assim, filho é o eixo padrão. O caminho do local Customer/Order é o mesmo que child::Customer/child::Order.

  • self::node() pode ser abreviado como um ponto (.) e parent::node() pode ser abreviado como dois pontos (..).