Tipo de dados xml – Parte 2
Conheça os métodos do tipo xml que permitem consultar ou modificar dados xml.
Tipo de dados xml – Parte 2
por Jerônimo Jardel Vogt
No artigo anterior, falamos sobre o tipo de dados xml, que permite o armazenamento de documentos XML em tabela, variável ou parâmetro, as suas vantagens e uso da sintaxe. Nessa segunda parte veremos os métodos do tipo xml que permitem consultar ou modificar dados xml. Também veremos a sintaxe e uso do XQuery, que é a linguagem de consulta que possibilita a construção de consultas complexas sobre dados xml.
O que é XQuery?
XQuery é usado para executar consultas sobre dados XML. A sintaxe XQuery inclui e estende o XPath 2.0, permitindo a execução de consultas complexas sobre fontes de dados XML. O tipo de dados xml no SQL Server, tem métodos que permitem a recuperação ou alteração de dados armazenados nesse tipo através da especificação de uma expressão XQuery. O XQuery suportado no SQL Server 2005 é baseado na especificação 1.0 da linguagem XQuery disponibilizada pelo W3C.
Uma consulta XQuery consiste em duas partes principais: uma seção opcional chamada de prolog, onde namespaces podem ser declarados e schemas podem ser importados, e a seção body, em que expressões XQuery são usadas para especificar os dados a serem retornados. Uma expressão XQuery pode ser um simples path que descreve os nós XML a serem retornados ou uma expressão complexa que gera um resultado XML.
Uma expressão XQuery path é baseada na linguagem XPath e descreve a localização de determinado nó em um documento XML. Esse path pode ser absoluto, quando descreve a localização do nó seguindo o caminho completo a partir do root, ou relativo, quando descreve a localização de um nó relativo a um nó identificado previamente. A seguir, alguns exemplos de expressões XQuery:
|
Expressão XQuery Path |
Descrição |
|
/InvoiceList/Invoice |
Todos os elementos Invoice imediatamente abaixo do elemento root InvoiceList. |
|
(/InvoiceList/Invoice) [2] |
O segundo elemento Invoice abaixo do elemento root InvoiceList. |
|
(InvoiceList/Invoice/@InvoiceNo) [1] |
O atributo InvoiceNO do primeiro elemento Invoice do elemento root InvoiceList. |
|
(InvoiceList/Invoice/Customer/text())[1] |
O texto do primeiro elemento Customer em um elemento Invoice abaixo do elemento root InvoiceList. |
|
/InvoiceList/Invoice[@InvoiceNo=1000] |
Todos os elementos Invoice de um elemento InvoiceList que têm um atributo InvoiceNo com valor de 1000. |
A especificação da linguagem XQuery inclui os comandos for, let, order by, where e return, comumente conhecidos como comandos FLOWR (flower). E o SQL Server 2005 suporta os comandos for, where e return, que estão descritos na tabela abaixo.
|
Comando |
Descrição |
|
for |
Usado para percorrer um grupo de nós num mesmo nível em um documento XML. |
|
where |
Usado para aplicar critérios de filtro na interação com o nó. O XQuery tem funções como count que podem ser usados nos comandos where. |
|
return |
Usado para especificar o XML retornado pela interação. |
O exemplo abaixo mostra uma expressão XQuery que inclui as palavras-chaves for, where e return. Essa expressão retorna todo elemento Invoice que tem mais de um elemento Item no seu elemento filho Items.
for $i in /InvoiceList/Invoice
where count($i/Items/Item) > 1
return $i
Para mais informação sobre o uso do XQuery, procure por “XQuery Basics” no SQL Server Books Online.
Os métodos query, value e exist
O tipo de dados xml do SQL Server 2005 suporta quatro métodos que podem ser usados para consultar ou modificar dados XML. Esses métodos são chamados usando a sintaxe data_type.method_name. Entender o propósito de cada um desses métodos ajudará na construção de aplicações que processam XML de forma nativa no banco de dados.
O método query é usado para extrair um fragmento XML de um tipo xml, e o XML retornado pelo método query é determinado por uma expressão XQuery passada como parâmetro. O exemplo abaixo mostra como usar o método query.
Nesse exemplo declaramos uma variável do tipo xml com um fragmento XML. A expressão XQuery usada no método query percorre a lista de elementos Employee retornando o atributo id de cada elemento. O resultado retornado pela consulta é mostrado abaixo.
O método value é usado para retornar um simples valor de um documento XML. Para usar o método value, é necessário especificar uma expressão XQuery que identifica o nó no XML a ser consultado e o tipo de dados Transact-SQL do valor a ser retornado. O exemplo abaixo mostra como usar o método value.
SELECT @EMPLOYEES.value('
(/Department/Employees/Employee/@StartDate)[1]', 'Datetime')
Usando o mesmo fragmento XML, essa consulta retorna o valor do atributo StartDate do primeiro elemento Employee, ou seja, 1997-12-12 00:00:00.000.
O método exist é usado para determinar quando determinado nó existe em um documento XML. O método exist retorna 1 se uma ou mais instâncias de um nó específico existe no documento e 0 se o nó não existe. O exemplo abaixo mostra como usar o método exist.
SELECT @EMPLOYEES.exist('
/Department/Employees/Employee[@id=267]')
Nesse caso, o retorno será “1”, pois existe um elemento Employee cujo atributo id é 267.
No próximo artigo, veremos o método modify e suas extensões insert, replace e delete que permitem alterar dados XML em um tipo xml, e também o método nodes, que permite gerar uma visão relacional a partir de dados XML. Um grande abraço e até lá.
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo