Escolar Documentos
Profissional Documentos
Cultura Documentos
XML
EXtensible Markup Language Linguagem de marcao para descrio de dados. O usurio define suas prprias tags de acordo com a semntica desejada. Pode ser validado segundo a forma com uma DTD ou um XML Schema.
Exemplo
<?xml version="1.0" encoding="ISO-8859-1"?> <alunos>
<aluno ra="1">
<nome>Dbora</nome> <cidadeOrigem>Fortaleza</cidadeOrigem> <curso>Cincia da Computao</curso> <condicao status=rico />
</aluno>
</alunos>
Regras
Toda tag aberta deve ser fechada Uma tag pode ser vazia <tag/> Cada tag pode conter subtags, formando uma estrutura em rvore Cada tag pode conter atributos Todo documento XML deve ter uma tag raiz
comments xml
contactinfo xml
IMPORT FROM C:\arqDescricao.del" OF DEL XML FROM C:\temp" INSERT INTO tabelaEx
XPath
Linguagem para navegar em documentos XML. Contm funes pr-definidas para manipulao dos dados. H 7 tipos de ns: elemento, atributo, texto, namespace, instruo de processamento, comentrio e n root.
XPath
Caminhos completos para especificar elementos ou atributos @ usado para especificar um atributo text() usado para especificar o texto dentro de um elemento n
Resultado 101 901 902 <name>Peter Pan</name> <name>John Doe</name> Peter Pan John Doe
<dept bldg=101> <employee id=901> <name>John Doe</name> <phone>408 555 1212</phone> <office>344</office> </employee> <employee id=902> <name>Peter Pan</name> <phone>408 555 9918</phone> <office>216</office> </employee> </dept>
XPath
XPath /dept/employee/*/text()
Resultado John Doe 408 555 1212 344 Peter Pan 408 555 9918 216 901 902 Peter Pan John Doe <phone>408 555 1212</phone> <phone>408 555 9918</phone>
<dept bldg=101> <employee id=901> <name>John Doe</name> <phone>408 555 1212</phone> <office>344</office> </employee> <employee id=902> <name>Peter Pan</name> <phone>408 555 9918</phone> <office>216</office> </employee> </dept>
/dept/*/@id //name/text()
/dept//phone
XPath
<dept bldg=101> <employee id=901> <name>John Doe</name> <phone>408 555 1212</phone> <office>344</office> </employee> <employee id=902> <name>Peter Pan</name> <phone>408 555 9918</phone> <office>216</office> </employee> </dept>
XPath
<dept bldg=101> <employee id=901> <name>John Doe</name> <phone>408 555 1212</phone> <office>344</office> </employee> <employee id=902> <name>Peter Pan</name> <phone>408 555 9918</phone> <office>216</office> </employee> </dept> Resultado <name>Peter Pan</name> <office>344</office> <office>344</office> 101 101
XPath /dept/employee/name[../@id="902"] /dept/employee/office[. > "300"] /dept/employee[office > "300"]/office /dept/employee[name="John Doe"]/../@bldg /dept/employee/name[. = "John Doe"]/../../@bldg
SQL/XML
SQL com extenso XML. Permite consultar ns especficos de documentos XML armazenados em campos de uma tabela, ao invs de recuperar apenas o documento inteiro. Utiliza sintaxe do XPath. Funes bsicas
SQL/XML
xmlexists: as linhas retornadas contm um documento XML com o valor especificado. Retorna verdadeiro ou falso.
select name from clients
where xmlexists($c/Client/Address[zip = 95116] passing clients.contact as c)
Seleciona o campo nome da tabela clients de todas as linhas que tem um documento XML no campo contact com n pai Client, n filho Address e n neto zip com valor 95116
SQL/XML
xmlquery: retorna elementos do documento XML
select xmlquery($c/Client/email passing contact as c) from clients where status = Gold
Seleciona os ns email filhos do n Client do documento XML no campo contact da tabela clients sendo o campo status igual a Gold.
Para selecionar o texto do n email, utilizar text()
SQL/XML
xmltable: retorna uma tabela relacional a partir de documentos XML.
select t.comment#, i.itemname, t.customerID, Message
from items i, xmltable($c/Comments/Comment passing i.comments as c columns Comment# integer path CommentID, CustomerID integer path CustomerID, Message varchar(100) path Message) as t
Converte os ns Comment do documento XML no campo comments da tabela items numa tabela de nome t com colunas Comment# (para o n CommentID), CustomerID (para o n CustomerID) e Message (para o n Message)
XQuery
Linguagem para consultar documentos XML. Utiliza sintaxe do XPath. Retorna sequncias de dados XML. Expresso iniciada com xquery
XQuery
For: itera por uma sequncia Let: atribui uma varivel a uma sequncia Where: estabelece condio Order: reordena itens Return: monta o resultado da xquery
SQL/XML
Utilizando o FLWOR com SQL/XML
Select name, xmlquery(for $e in $c/Client/email[1] return $e Passing contact as c) From clients Where status = Gold
Retorna o nome e o resultado da xmlquery. xmlquery checa o campo contact de cada linha da tabela clients cujo campo status seja igual a Gold e, para cada um deles, retorna o primeiro n email.
XQuery
XQuery para recuperar os contatos do cliente (campo contact XML)
Xquery db2-fn:xmlcolumn(CLIENTS.CONTACT) (argumento precisa ser maisculo!) db2-fn:xmlcolumn: funo com parmetro que identifica a tabela e o campo XML Equivalente Select contact from clients
XQuery - Exemplos
xquery For $y in db2-fn:xmlcolumn(CLIENTS.CONTACT)/Client/fax Return $y
XQuery - Exemplos
xquery for $y in db2-fn:xmlcolumn(CLIENTS.CONTACT)/Client/Address order by $y/zip return $y xquery db2-fn:xmlcolumn(CLIENTS.CONTACT)/Client/Address[zip=95116]
Bibliografia