Partilhar via


Especificação de um Teste de Nó no Caminho de Localização (SQLXML 4.0)

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

Um teste de nó especifica o tipo de nó selecionado pelo passo de localização. Cada eixo (filho, pai, atributo ou self) tem um tipo de nó principal. Para o eixo do atributo , o tipo principal de nó é <atributo>. Para os eixos pai, filho e auto-eixo , o tipo principal de nó é <elemento>.

Observação

O teste do nó coringa * (por exemplo, child::*) não é suportado.

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 do nó. O tipo principal de nó para o eixo filho é <elemento>. Portanto, o teste do nó é VERDADEIRO se o <nó Cliente> for um <nó elemento> . Se o nó de contexto não <tiver filhos Cliente> , um conjunto vazio de nós é devolvido.

Teste do 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 do nó. O tipo principal de nó do eixo do atributo é <o> atributo. Portanto, o teste do nó é VERDADEIRO se o CustomerID for um <nó de atributo> . Se o nó de contexto não tiver CustomerID, é devolvido um conjunto vazio de nós.

Observação

Nesta implementação do XPath, se um passo de localização se referir a um <elemento> ou a um <tipo de> atributos que não está declarado no esquema, é gerado um erro. Isto é diferente da implementação do XPath no MSXML, que devolve um conjunto de nós vazio.

Sintaxe Abreviada para os Eixos

A seguinte sintaxe abreviada para o caminho de localização é suportada:

  • 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 um passo de localização.

    Assim, filho é 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 (..).