Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Banco 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.