Partilhar via


Introdução ao Uso de Consultas XPath (SQLXML 4.0)

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

Uma consulta XML Path Language (XPath) pode ser especificada como parte de uma URL ou dentro de um modelo. O esquema de mapeamento determina a estrutura deste fragmento resultante, e os valores são recuperados da base de dados. Este processo é conceptualmente semelhante à criação de vistas usando a instrução CREATE VIEW e à escrita de consultas SQL sobre elas.

Observação

Para compreender consultas XPath no SQLXML 4.0, deve estar familiarizado com as visualizações XML e conceitos relacionados, como modelos e esquemas de mapeamento. Para mais informações, consulte Introdução aos Esquemas XSD Anotados (SQLXML 4.0) e o padrão XPath definido pelo World Wide Web Consortium (W3C).

Um documento XML consiste em nós como um nó elemento, nó de atributo, nó de texto, e assim sucessivamente. Por exemplo, considere este documento XML:

<root>  
  <Customer cid= "C1" name="Janine" city="Issaquah">  
      <Order oid="O1" date="1/20/1996" amount="3.5" />  
      <Order oid="O2" date="4/30/1997" amount="13.4">Customer was  
          very satisfied</Order>  
   </Customer>  
   <Customer cid="C2" name="Ursula" city="Oelde" >  
      <Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red">  
          <Urgency>Important</Urgency>  
      </Order>  
      <Order oid="O4" date="1/20/1996" amount="10000"/>  
   </Customer>  
</root>  

Neste documento, <Cliente> é um nó elemento, cid é um nó de atributo e "Importante" é um nó de texto.

XPath é uma linguagem de navegação de grafos usada para selecionar um conjunto de nós a partir de um documento XML. Cada operador XPath seleciona um conjunto de nós com base num conjunto de nós selecionado por um operador XPath anterior. Por exemplo, dado um conjunto de <nós Cliente>, o XPath pode selecionar todos <os nós de Encomenda> com o valor do atributo datade "14/07/1999". O conjunto de nós resultante contém todas as encomendas com data de encomenda de 14/07/1999.

A linguagem XPath é definida pelo World Wide Web Consortium (W3C) como uma linguagem de navegação padrão. O SQLXML 4.0 implementa um subconjunto da especificação XPath do W3C, que está localizado em http://www.w3.org/TR/1999/PR-xpath-19991008.html.

Seguem-se as principais diferenças entre a implementação XPath do W3C e a implementação do SQLXML 4.0.

  • Consultas raiz

    O SQLXML 4.0 não suporta a consulta raiz (/). Cada consulta XPath deve começar num ElementType> de topo< no esquema.

  • Erros de reporte

    A especificação XPath do W3C não define condições de erro. As consultas XPath que não selecionam nenhum nó retornam um conjunto de nós vazio. No SQLXML 4.0, uma consulta pode devolver muitos tipos de mensagens de erro.

  • Ordem dos documentos

    No SQLXML 4.0, a ordem dos documentos nem sempre é determinada. Portanto, os predicados numéricos e eixos que utilizam a ordem dos documentos (como o seguinte) não são implementados.

    A falta de ordem dos documentos também significa que o valor da cadeia de um nó só pode ser avaliado quando esse nó corresponde a uma única coluna numa única linha. Um elemento com elementos filhos ou um nó IDREFS ou NMTOKENS não pode ser convertido em string.

    Observação

    Em alguns casos, a anotação de campos de chave ou as chaves da anotação de relação podem resultar numa ordem determinística do documento. No entanto, este não é o uso principal destas anotações. Para mais informações, veja Identificação de Colunas Chave Usando sql:key-fields (SQLXML 4.0) e Especificação de Relações Usando sql:relationship (SQLXML 4.0).

  • Tipos de dados

    O SQLXML 4.0 tem limitações na implementação da cadeia XPath, dos tipos de dados número e booleanos . Para mais informações, consulte XPath Data Types (SQLXML 4.0).

  • Consultas entre produtos

    O SQLXML 4.0 não suporta consultas XPath cross-product, como Customers[Order/@OrderDate=Order/@ShipDate]. Esta consulta seleciona todos os Clientes com qualquer Encomenda cuja Data da Encomenda seja igual à Data de Envio de qualquer Encomenda.

    No entanto, o SQLXML 4.0 suporta consultas como Customer[Order[@OrderDate=@ShippedDate]], que seleciona Clientes com qualquer Encomenda cuja Data da Encomenda seja igual à sua Data de Envio.

  • Gestão de erros e segurança

    Dependendo do esquema e da expressão de consulta XPath utilizados, Transact-SQL erros podem ser expostos aos utilizadores sob certas condições.

As tabelas nas secções seguintes fornecem detalhes sobre como a implementação das consultas XPath no SQLXML 4.0 difere da especificação do W3C nestas áreas.

Funcionalidades Suportadas

A tabela seguinte mostra as funcionalidades da linguagem XPath implementadas no SQLXML 4.0.

Característica Item Link para consultas de exemplo
Eixos atributo, filho, progenitor e eixos próprios Especificação de Eixos em Consultas XPath (SQLXML 4.0)
Predicados de valores booleanos, incluindo predicados sucessivos e aninhados Especificação de Operadores Aritméticos em Consultas XPath (SQLXML 4.0)
Todos os operadores relacionais =, !=, <, <=, >, >= Especificação de Operadores Relacionais em Consultas XPath (SQLXML 4.0)
Operadores aritméticos +, -, *, div Especificação de Operadores Aritméticos em Consultas XPath (SQLXML 4.0)
Funções de conversão explícitas número(), string(), booleano() Especificação de Funções de Conversão Explícitas em Consultas XPath (SQLXML 4.0)
Operadores booleanas E, OU Especificação de Operadores Booleanos em Consultas XPath (SQLXML 4.0)
Funções booleanas true(), false(), not() Especificação de Funções Booleanas em Consultas XPath (SQLXML 4.0)
Variáveis XPath Especificação de Variáveis XPath em Consultas XPath (SQLXML 4.0)

Funcionalidade Não Suportada

A tabela seguinte mostra as funcionalidades da linguagem XPath que não estão implementadas no SQLXML 4.0.

Característica Item
Eixos antepassado, antepassado-ou-eu, descendente, descendente-ou-eu (//), seguinte, irmão seguinte, espaço de nomes, anterior, irmão anterior
Predicados de valores numéricos
Operadores aritméticos Modificação
Funções do nó antepassado, antepassado-ou-eu, descendente, descendente-ou-eu (//), seguinte, irmão seguinte, espaço de nomes, anterior, irmão anterior
Funções de cadeia de caracteres string(), concat(), começa-com(), contém(), substring-before(), substring-after(), substring(), string-length(),normalize(), translate()
Funções booleanas lang()
Funções numéricas suma(), chão(), teto(), redondo()
Operador sindical |

Quando especificar consultas XPath num modelo, note o seguinte comportamento:

  • XPath pode conter caracteres como < ou & que têm significados especiais em XML (e o template é um documento XML). Tem de escapar destes caracteres usando codificação XML &-encoding, ou especificar o XPath na URL.

Ver também

Utilização de consultas XPath em SQLXML 4.0