Compartilhar via


Introdução ao uso de consultas XPath (SQLXML 4.0)

Uma consulta XPath (Linguagem de Caminho XML) pode ser especificada como parte de uma URL ou dentro de um modelo. O esquema de mapeamento determina a estrutura desse fragmento resultante e os valores são recuperados do banco de dados. Esse processo é conceitualmente semelhante à criação de exibições usando a instrução CREATE VIEW e gravando consultas SQL neles.

Observação

Para entender as consultas XPath no SQLXML 4.0, você deve estar familiarizado com exibições XML e conceitos relacionados, como modelos e esquema de mapeamento. Para obter mais informações, consulte Introdução aos esquemas XSD anotados (SQLXML 4.0) e ao padrão XPath definido pelo W3C (World Wide Web Consortium).

Um documento XML consiste em nós como um nó de elemento, nó de atributo, nó de texto e assim por diante. 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, <o Cliente> é um nó de elemento, cid é um nó de atributo e "Importante" é um nó de texto.

XPath é uma linguagem de navegação de grafo usada para selecionar um conjunto de nós de um documento XML. Cada operador XPath seleciona um conjunto de nós com base em um conjunto de nós selecionado por um operador XPath anterior. Por exemplo, dado um conjunto de nós do< Cliente>, o XPath pode selecionar todos os <nós de> pedido com o valor do atributo de data"14/7/1999". O conjunto de nós resultante contém todos os pedidos com a data do pedido 14/07/1999.

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

Veja a seguir as principais diferenças entre a implementação do W3C XPath e a implementação do SQLXML 4.0.

  • Consultas raiz

    O SQLXML 4.0 não dá suporte à consulta raiz (/). Cada consulta XPath deve começar em um ElementType> de nível< superior no esquema.

  • Relatando erros

    A especificação do XPath W3C não define nenhuma condição de erro. As consultas XPath que não conseguem selecionar os nós retornam um conjunto de nós vazio. No SQLXML 4.0, uma consulta pode retornar muitos tipos de mensagens de erro.

  • Ordem do documento

    No SQLXML 4.0, a ordem do documento nem sempre é determinada. Portanto, predicados numéricos e eixos que usam a ordem do documento (como following) não são implementados.

    A falta de ordem do documento também significa que o valor da cadeia de caracteres de um nó só pode ser avaliado quando esse nó é mapeado para uma única coluna em uma única linha. Um elemento com elementos filho ou um nó IDREFS ou NMTOKENS não pode ser convertido em cadeia de caracteres.

    Observação

    Em alguns casos, a key-fields anotação ou as chaves da relationship anotação podem resultar em uma ordem de documento determinística. No entanto, esse não é o uso primário dessas anotações Para obter mais informações, consulte Identificar colunas de chave usando sql:key-fields (SQLXML 4.0) e especificando relações usando sql:relationship (SQLXML 4.0).

  • Tipos de dados

    O SQLXML 4.0 tem limitações na implementação do XPath stringnumbere boolean dos tipos de dados. Para obter mais informações, consulte XPath Data Types (SQLXML 4.0).

  • Consultas entre produtos

    O SQLXML 4.0 não dá suporte a consultas XPath entre produtos, como Customers[Order/@OrderDate=Order/@ShipDate]. Essa consulta seleciona todos os Clientes com qualquer ordem para a qual o OrderDate é igual ao ShipDate de qualquer ordem.

    No entanto, o SQLXML 4.0 dá suporte a consultas como Customer[Order[@OrderDate=@ShippedDate]], que seleciona Clientes com qualquer ordem para a qual o OrderDate é igual a seu ShipDate.

  • Tratamento de erros e segurança

    Dependendo do esquema e da expressão de consulta XPath que são usadas, Transact-SQL erros podem ser expostos aos usuários em determinadas condições.

As tabelas nas seções a seguir fornecem detalhes sobre como a implementação de consultas XPath no SQLXML 4.0 difere da especificação W3C nessas áreas.

Funcionalidade com suporte

A tabela a seguir mostra os recursos da linguagem XPath que são implementados no SQLXML 4.0.

Característica Elemento Link para consultas de exemplo
Eixos attribute, childe parentself eixos Especificando eixos em consultas XPath (SQLXML 4.0)
Predicados com valor booliano, incluindo predicados sucessivos e aninhados Especificando operadores aritméticos em consultas XPath (SQLXML 4.0)
Todos os operadores relacionais =, !=, <, <=, >, >= Especificando operadores relacionais em consultas XPath (SQLXML 4.0)
Operadores aritméticos +, -, *, div Especificando operadores aritméticos em consultas XPath (SQLXML 4.0)
Funções de conversão explícitas number(), , string()Boolean() Especificando funções de conversão explícitas em consultas XPath (SQLXML 4.0)
Operadores booleanos E, OU Especificando operadores boolianos em consultas XPath (SQLXML 4.0)
Funções boolianas true(), , false()not() Especificando funções boolianas em consultas XPath (SQLXML 4.0)
Variáveis XPath Especificando variáveis XPath em consultas XPath (SQLXML 4.0)

Funcionalidade sem suporte

A tabela a seguir mostra os recursos da linguagem XPath que não são implementados no SQLXML 4.0.

Característica Elemento
Eixos ancestor, ancestor-or-self, descendant, descendant-or-self (//), , following, following-sibling, namespace, , precedingpreceding-sibling
Predicados com valor numérico
Operadores aritméticos Mod
Funções de nó ancestor, ancestor-or-self, descendant, descendant-or-self (//), , following, following-sibling, namespace, , precedingpreceding-sibling
Funções de cadeia de caracteres string(), concat(), starts-with(), contains(), substring-before(), , substring-after(), substring(), , string-length(), normalize(), translate()
Funções boolianas lang()
Funções numéricas sum(), floor(), , ceiling()round()
Operador union |

Ao especificar consultas XPath em um modelo, observe o seguinte comportamento:

  • O XPath pode conter caracteres como < ou > que têm significados especiais em XML (e o modelo é um documento XML). Você deve escapar desses caracteres usando a codificação XML ou especificar o XPath na URL.

Consulte Também

Usando consultas XPath no SQLXML 4.0