Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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-fieldsanotação ou as chaves darelationshipanotaçã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
stringnumberebooleandos 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.