0% acharam este documento útil (0 voto)
4 visualizações5 páginas

Consultas XQuery para Manipulação de XML

O documento contém uma série de consultas XQuery para manipulação de dados em um documento XML, incluindo a extração de títulos de livros, filtragem por preço, contagem de livros, e apresentação de dados em formato HTML. As consultas abordam operações como ordenação, soma, e filtragem com base em condições específicas. Além disso, também inclui exemplos de como trabalhar com dados de fornecedores e partes em um contexto de projetos.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
4 visualizações5 páginas

Consultas XQuery para Manipulação de XML

O documento contém uma série de consultas XQuery para manipulação de dados em um documento XML, incluindo a extração de títulos de livros, filtragem por preço, contagem de livros, e apresentação de dados em formato HTML. As consultas abordam operações como ordenação, soma, e filtragem com base em condições específicas. Além disso, também inclui exemplos de como trabalhar com dados de fornecedores e partes em um contexto de projetos.

Traduzido por

ScribdTranslations
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Boletim de Exercícios

XQuery Nº1

Dado o seguinte documento XML, realize as seguintes consultas com XQuery (são eliminados
as tildes para evitar problemas de compatibilidade de caracteres):

1. Mostrar los títulos de los libros con la etiqueta "titulo".

para $livro em //título/text()


return <titulo>{$libro}</titulo>

2. Mostrar os livros cujo preço seja menor ou igual a 30. Primeiro incluindo a condição
na cláusula "onde" e depois no caminho do XPath.

para $libro em //livro


onde $libro/preço <= 30
retornar $libro

for $libro in //book[price<=30]


retornar <libro>{$libro}</libro>

3. Mostrar sólo el título de los libros cuyo precio sea menor o igual a 30.

para $livro em //livro


onde $libro/preço <= 30
retornar $livro/título

4. Mostrar apenas o título sem atributos dos livros cujo preço seja menor ou igual a 30.

para $libro em //livro


onde $libro/preço <= 30
retornar $libro/título/texto()
5. Mostrar el título y el autor de los libros del año 2005, y etiquetar cada uno de ellos con
lib2005

para $libro em //livro[ano=2005]


return <lib2005>{$libro/title,$libro/author}</lib2005>

6. Mostrar los años de publicación, primero con "for" y luego con "let" para comprobar la
diferencia entre ellos. Etiquetar la salida con "publicacion".

por $anyo em //ano


retornar <publicacao>{$anyo/text()}</publicacao>

let $anyo := //year


retornar <publicacao>{$anyo/text()}</publicacao>

7. Mostrar os livros ordenados primeiro por "categoria" e depois por "título" em uma só
consulta.

para $libro em //livro


ordenar por $livro/@categoria, $livro/título
retornar $libro

8. Mostrar cuántos libros hay, y etiquetarlo con "total".

deixe $libros := contar(//livro)


return <total>{$libros}</total>

9. Mostrar los títulos de los libros y al final una etiqueta con el número total de libros.

for $titulo in //book/title


return <titulos>{$titulo/text()}</titulos>, <num>{count(//book)}</num>

10. Mostrar o preço mínimo e máximo dos livros.

deixe $maximo := max(//book/price)


deixe $minimo := min(//livro/preço)
return <res>{$maximo,$minimo}</res>

11. Mostrar el título del libro, su precio y su precio con el IVA incluido, cada uno con su
propria etiqueta. Ordene-os por preço com IVA.

para $libro em //livro


ordenar por $libro/preço*1.21
retornar
<book>{$libro/title,$libro/price,<precioIVA>{$libro/price*1.21}</precioIVA>}</book>
12. Mostrar la suma total de los precios de los libros con la etiqueta "total".

let $total := sum(//book/price)


return <total>{$total}</total>

13. Mostrar cada um dos preços dos livros, e no final uma nova etiqueta com a
soma dos preços.

for $precio in //book/price


return <precio>{$precio/text()}</precio>, <total>{sum(//book/price)}</total>

14. Mostrar o título e o número de autores que cada título possui em etiquetas
diferentes.

for $libro in //book


retornar <libro>{$libro/título,<nAutores>{contar($libro/autor)}</nAutores>}</libro>

15. Mostrar na mesma etiqueta o título e entre parênteses o número de autores que
tem esse título.
para $libro em //livro
return <livro>{$livro/titulo/text()||"("||contar($livro/autores)||")"}</livro>

16. Mostrar los libros escritos en años que terminen en "3".

para $libro em //book[substring(year,string-length(year))="3"]


return $libro

17. Mostrar los libros cuya categoría empiece por "C".

para $libro em //livro


onde começa com($libro/@categoria,"C")
return $libro

18. Mostrar los libros que tengan una "X" mayúscula o minúscula en el título.

for $libro in //book


onde contém($libro/título,"X") ou contém($libro/título,"x")
retornar $libro

19. Mostrar el título y el número de caracteres que tiene cada título, cada uno con su
própria etiqueta.

for $titulo in //book/title


<title>{$titulo/text() || " " || string-length($titulo)}</title>

20. Mostrar todos los años en los que se ha publicado un libro eliminando los repetidos.
Etiquete-os com "ano".
let $anyo := //book/year
retornar <año>{valores-distintos($anyo)}</año>

21. Mostrar todos os autores eliminando os que se repetem e ordenados pelo número
de caracteres que tem cada autor.

let $autor := //book/author


para $autor em $autor
order by $autor
<año>{valores-distintos($autor)}</año>

22. Mostrar os títulos em uma tabela HTML.


<tabela>

<thead>

Livros

</thead>

<tr>

<th>Título</th>

<th>Autor</th>

<th>Año</th>

<th>Preço</th>

</tr>

<tbody>

para $libro em //livro

retornar

<tr>

<td>{$livro/titulo/text()}</td>

<td>{$libro/autor/text()}</td>

<td>{$libro/ano/text()}</td>

<td>{$libro/price/text()}</td>

</tr>

</tbody>

</table>
2 EXERCÍCIO
Extraer la ciudad de los proveedores (no debe aparecer la etiqueta) que tengan un
estado maior de 15
for $ciudad in //proveedor[estado>15]/ciudad
retornar $ciudad/texto()

Averiguar quantas partes existem, ou seja, o total de linhas da "tabela" partes.

deixe $numpartes := contar(//parte)

retornar $numpartes

Obter o nome dos projetos cuja cidade seja Paris e que recebam uma quantidade de
partes > 350.

let $proyectos :=//proyecto[ciudad="Paris"]/@numproyecto


let $suministrapartes :=//suministra[numproyecto=$proyectos and
quantidade>350]/numprojeto

return//projeto[@numprojeto=$suministrapartes]/nomeprojeto

Obter os nomes do projeto e os nomes das peças que estão na mesma cidade.

Obtener parejas de partes que tengan el mismo color (indicando el nombre de ambas
partes e a cor que compartilham).

Criar uma consulta XQuery que averigúe a média de partes fornecidas cujo cor seja
Vermelho

let $media := avg(//suministra[numparte=//parte[color="Rojo"]/@numparte]/cantidad)


retornar $media

Averiguar la media de cantidades por proveedor usando los datos de la tabla suministra.

Verificar o nome dos projetos (sem repetições) que recebam uma


quantidade na tabela fornece maior que 650.

//projeto[@numprojeto=distinct-values(//fornece[cantidad>650]/numprojeto)]/nom
breprojeto

Você também pode gostar