Expressões de caminho (XQuery)

As expressões de caminho XQuery localizam nós, como elemento, atributo e nós de texto, em um documento. O resultado de uma expressão de caminho sempre ocorre na ordem do documento sem duplicar nós na seqüência de resultado. Ao especificar um caminho, você pode usar uma sintaxe abreviada ou não. As informações a seguir têm o foco na sintaxe não abreviada. A sintaxe abreviada é descrita posteriormente neste tópico.

ObservaçãoObservação

Como as consultas de exemplo neste tópico são especificadas em relação às colunas de tipo xml, CatalogDescription e Instructions, na tabela ProductModel, você deve se familiarizar com o conteúdo e a estrutura dos documentos XML armazenados nessas colunas. Para obter mais informações, consulte Representação de tipo de dados xml no banco de dados do AdventureWorks2008R2.

Uma expressão de caminho pode ser relativa ou absoluta. É apresentada a seguir uma descrição de ambas:

  • Uma expressão de caminho relativa é composta por uma ou mais etapas separadas por uma ou duas barras (/ ou / /). Por exemplo, child::Features é uma expressão de caminho relativa, onde Child refere-se somente a nós filho do nó de contexto. Esse é o nó que está sendo processado atualmente. A expressão recupera os filhos do nó do elemento <Features> do nó de contexto.

  • Uma expressão de caminho absoluta inicia com uma ou duas barras (/ ou / /), seguidas por um caminho relativo opcional. Por exemplo, a barra inicial na expressão, /child::ProductDescription, indica que é uma expressão de caminho absoluta. Como uma barra no início de uma expressão retorna o nó raiz do documento do nó de contexto, a expressão retorna todos os filhos do nó do elemento <ProductDescription> da raiz do documento.

    Se um caminho absoluto iniciar com uma única barra, ele poderá ou não ser seguido por um caminho relativo. Se você especificar só uma barra, a expressão retornará o nó raiz do nó de contexto. Para um tipo de dados XML, esse é seu nó do documento.

Uma expressão de caminho característica é composta por etapas. Por exemplo, a expressão de caminho absoluta, /child::ProductDescription/child::Summary, contém duas etapas separadas por uma barra.

  • A primeira etapa recupera os filhos do nó do elemento <ProductDescription> da raiz do documento.

  • A segunda etapa recupera os filhos do nó do elemento <Summary> para cada nó do elemento <ProductDescription> recuperado, que, por sua vez, se torna o nó de contexto.

Uma etapa em uma expressão de caminho pode ser uma etapa de eixo ou uma etapa geral.

Etapa de eixo

Uma etapa de eixo em uma expressão de caminho tem as seguintes partes.

  • eixo
    Define a direção de movimento. Uma etapa de eixo em uma expressão de caminho que inicia no nó de contexto e navega para esses nós que são atingíveis na direção especificada pelo eixo.

  • teste de nó
    Especifica o tipo de nó ou nomes de nó a serem selecionados.

  • Zero ou mais predicados opcionais
    Filtra os nós selecionando alguns e descartando outros.

Os exemplos a seguir usam uma etapa deeixo nas expressões de caminho:

  • A expressão de caminho absoluta, /child::ProductDescription, contém só uma etapa. Especifica um eixo (child) e um teste de nó (ProductDescription).

  • A expressão de caminho relativa, child::ProductDescription/child::Features, contém duas etapas separadas por uma barra. Ambas as etapas especificam um eixo filho. ProductDescription e Features são testes de nó.

  • A expressão de caminho relativa, child::root/child::Location[attribute::LocationID=10],, contém duas etapas separadas por uma barra. A primeira etapa especifica um eixo (child) e um teste de nó (root). A segunda etapa especifica todos os três componentes de uma etapa de eixo: um eixo (filho), um teste de nó (Location) e um predicado ([attribute::LocationID=10]).

Para obter mais informações sobre os componentes de uma etapa de eixo, consulte Especificando eixo em uma etapa de expressão de caminho, Especificando node test em uma etapa de expressão de caminho e Especificando predicados em uma etapa de expressão de caminho.

Etapa geral

Uma etapa geral é apenas uma expressão que deve ser avaliada em uma seqüência de nós.

A implementação XQuery no SQL Server oferece suporte a uma etapa geral, como a primeira etapa em uma expressão de caminho. São apresentados a seguir exemplos de expressões de caminho que usam etapas gerais.

(/a, /b)/c
id(/a/b)

Para obter mais informações sobre a função id, consulte Função id (XQuery).

Nesta seção