Escolar Documentos
Profissional Documentos
Cultura Documentos
Linguagens de Consulta
Rebeca Schroeder
http://www.inf.ufsc.br/~rebecks/estagio/bd3
Linguagens de Consulta XML
• Objetivo: Recuperar dados armazenados
em documentos XML
– Assim como a SQL para dados relacionais
• Linguagens de Consulta XML:
– XML-QL
– XQL
– XPath (recomendação W3C desde 1999)
– XQuery (em breve será recomendada pela
W3C)
XPath
• O que é?
- Linguagem para navegação pela estrutura de
elementos e atributos em um documento XML
<notaFiscal>
<itensFiscais>
<produto sequencia="S1">
<codigo>1324</codigo>
<quantidade>10</quantidade>
</produto>
<servico>
<descricao>Instalações</descricao>
<produto>
<codigo>589</codigo>
</produto>
</servico>
</itensFiscais>
</notaFiscal>
Expressões de Caminho
• Caminho Absoluto:
– A expressão parte do root
– A partir do root, localiza elementos na sua estrutura
hierárquica
/ indica o root do documento
/notaFiscal/itensFiscais/produto/codigo
• Caminho Relativo:
– A expressão parte de um nó corrente
– A partir do nó corrente, localiza elementos na sua estrutura
hierárquica
<itensFiscais>
<produto>
<codigo>1</codigo>
</produto>
<servico>
<codigo>13</codigo>
</servico>
</itensFiscais>
itensFiscais/*/codigo
Expressões de Caminho
• Selecionar ocorrências de um nó em
qualquer nível hierárquico abaixo de
um nó corrente
itensFiscais//código
Expressão Resultado
ancestor::codigo Todos os elementos “codigo”
ancestrais do elemento corrente
descendant::produto Todos os elementos “produto”
descendentes do elemento corrente
Expressões de Caminhos
• Selecionar diversos caminhos ao
mesmo tempo
– Expressões são unidas pelo símbolo |
/notaFiscal/itensFiscais|//produto
Predicados
• Selecionar nós específicos ou nós que
contenham determinado valor
– Predicados são definidos entre []
Expressão Resultado
/notaFiscal/itensFiscais/produto[1] O primeiro elemento produto
//produto[quantidade>10] Produtos que possuem
quantidade superior a 10
//produto[quantidade > 10]/codigo Códigos dos produto com
quantidade maior que 10
//produto[quantidade] Os produtos que tenham o
elemento quantidade como filho
Funções
Expressão Resultado
//produto[not(quantidade)] Os produtos que não tenham o
elemento quantidade como filho
/notaFiscal/itensFiscais/produto[last()] O último elemento produto
produto/@sequencia
Seleciona o atributo sequencia do elemento produto
produto[@sequencia=“S1”]
Seleciona os produtos cujo atributo “sequencia”
possua valor=“S1”
XQuery
• Linguagem padrão para consultas a
dados XML
• É baseada em expressões da XPath
• Supera a XPath em aspectos como:
– Permite construir novas estruturas para
apresentar os resultados
– Permite junções de dados XML
Consultas XQuery
• Expressões FLWR (estrutura básica):