Exemplos de ficheiros XML e respectivos DTD

Exemplos de XQuery

Podem experimentar os exemplos que se seguem fazendo download de Kernow. Ao correr o programa escolham a opção 'Sandboxes only' e depois 'XQuery Sandbox'.

-- Nome dos actores

let $info := doc("filmes-ID.xml")
for $a in $info//Actor
return $a/Nome

-- Nome dos actores que moram em Hollywood

let $info := doc("filmes-ID.xml")
for $a in $info//Actor
where $a/Morada/Cidade = "Hollywood"
return $a/Nome

-- Nome de filmes feitos depois de 1980

let $info := doc("filmes-ID.xml")
for $f in $info//Filme
where $f/Ano > 1980
return $f/Nome


-- Numero de actores

let $seq := (
   let $info := doc("filmes-ID.xml")
   for $a in $info//Actor
   return $a/Nome
)
return count($seq)

-- dentro de tags, substituir variaveis pelo respectivo valor

let $seq := (
   let $info := doc("filmes-ID.xml")
   for $a in $info//Actor
   return $a/Nome
)
return {$seq}


-- Nome dos filmes em que participou o Harrison Ford

let $info := doc("filmes-ID.xml")
let $actores := $info//Actor
let $filmesID_hf := (
  for $a in $actores
  where $a/Nome = "Harrison Ford"
  return $a/data(@participaEm)
)
let $filmes := $info//Filme
for $f in $filmes
where contains($filmesID_hf, $f/@filmeID)
return $f/Nome

-- Joins: retornar pares de actores com a mesma morada

let $info := doc("filmes-ID.xml")
let $actores := $info//Actor
for $a1 in $actores, $a2 in $actores
where $a1/Morada/Rua = $a2/Morada/Rua
  and $a1/Morada/Cidade = $a2/Morada/Cidade
  and $a1/Nome lt $a2/Nome
return {$a1/Nome}{$a2/Nome}