Beruflich Dokumente
Kultur Dokumente
>
<bib>
<libro anyo="1994">
<titulo>TCP/IP Illustrated</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="1992">
<titulo>Advanced Programming for Unix environment</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="2000">
<titulo>Data on the Web</titulo>
<autor>
<apellido>Abiteboul</apellido>
<nombre>Serge</nombre>
</autor>
<autor>
<apellido>Buneman</apellido>
<nombre>Peter</nombre>
</autor>
<autor>
<apellido>Suciu</apellido>
<nombre>Dan</nombre>
</autor>
<editorial>Morgan Kaufmann editorials</editorial>
<precio>39.95</precio>
</libro>
<libro anyo="1999">
<titulo> Economics of Technology for Digital TV</titulo>
<editor>
<apellido>Gerbarg</apellido>
<nombre>Darcy</nombre>
<afiliacion>CITI</afiliacion>
</editor>
<editorial>Kluwer Academic editorials</editorial>
<precio>129.95</precio>
</libro>
</bib>
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/titulo
return data($x)
return data($x/titulo)
<titulo>TCP/IP Illustrated</titulo>
Primera solución
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
order by $x/@anyo
Segunda solución
<html>
<head/>
<body>
<ul>
{
for $x in doc ("c:\users\usuario\desktop\xquery1.xml")/bib/libro
order by $x/@anyo
return
<li>
{data($x/titulo)} .Año{data($x/@anyo)}
</li>
</ul>
</body>
</html>
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
where $x/precio=65.95
return $x
<libro anyo="1994">
<titulo>TCP/IP Illustrated</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="1992">
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
where $x/@anyo<2000
return $x
<libro anyo="1994">
<titulo>TCP/IP Illustrated</titulo>
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="1992">
<autor>
<apellido>Stevens</apellido>
<nombre>W.</nombre>
</autor>
<editorial>Addison-Wesley</editorial>
<precio>65.95</precio>
</libro>
<libro anyo="1999">
<editor>
<apellido>Gerbarg</apellido>
<nombre>Darcy</nombre>
<afiliacion>CITI</afiliacion>
</editor>
<precio>129.95</precio>
</libro>
5. Listar año y título de los libros publicados por Addison-Wesley después del año 1992.
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
<libro anyo="1994">
<titulo>TCP/IP Illustrated</titulo>
</libro>
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
<libro anyo="2000">
</libro>
Otra forma:
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
let $y := $x//autor
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
where empty($x/autor)
<libro anyo="1999">
</libro>
8. Mostrar los apellidos de los autores que aparecen en el documento, sin repeticiones,
ordenados alfabéticamente.
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/autor
order by $x/apellido
return $x/apellido
<apellido>Abiteboul</apellido>
<apellido>Buneman</apellido>
<apellido>Stevens</apellido>
<apellido>Stevens</apellido>
<apellido>Suciu</apellido>
9. Por cada libro, listar agrupado en un elemento <result> su título y autores
return
<result>
data($result)
</result>
10. Por cada libro, obtener su título y el número de autores, agrupados en un elemento <libro>
return
<libro>
data($libro)
</libro>
11. Generar un documento html con un encabezado que diga “Listado de libros” seguido de una
tabla de 3 columnas, en la que se muestre el título, editorial y precio de cada libro. La tabla
deberá tener bordes y la primera fila tendrá un formato especial con los nombres de las
columnas. Las columnas de título y editorial irán alineadas a la izquierda, y el precio a la
derecha.
<html>
<body>
<center>
<tr>
<th>Titulo</th>
<th>Editorial</th>
<th>Precio</th>
</tr>
for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro
order by $x
return
<tr>
<td>{data($x/titulo)}</td>
<td>{data($x/editorial)}</td>
<td>{data($x/precio)}</td>
</tr>
</table>
</center>
</body>
</html>
librosAlmacen.xml
<?xml version="1.0" encoding="UTF-8"?>
<almacen>
<comprados>
<codigo>1</codigo>
<codigo>2</codigo>
</comprados>
<pendientes>
<codigo>3</codigo>
<codigo>4</codigo>
</pendientes>
</almacen>
libros.xml
<?xml version="1.0" encoding="UTF-8"?>
<libreria>
<libro categoria="COOKING" codigo='1'>
<titulo leng="en">Everyday Italian</titulo>
<autor>Giada De Laurentiis</autor>
<anyo>2005</anyo>
<precio>30.00</precio>
</libro>
<libro categoria="CHILDREN" codigo='2'>
<titulo leng="en">Harry Potter</titulo>
<autor>J K. Rowling</autor>
<anyo>2005</anyo>
<precio>29.99</precio>
</libro>
<libro categoria="WEB" codigo='3'>
<titulo leng="en">XQuery Kick Start</titulo>
<autor>James McGovern</autor>
<autor>Per Bothner</autor>
<autor>Kurt Cagle</autor>
<autor>James Linn</autor>
<autor>Vaidyanathan Nagarajan</autor>
<anyo>2003</anyo>
<precio>49.99</precio>
</libro>
<libro categoria="WEB" codigo='4'>
<titulo leng="en">Learning XML</titulo>
<autor>Erik T. Ray</autor>
<anyo>2003</anyo>
<precio>39.95</precio>
</libro>
</libreria>
1. Realizar una tabla html con el título "Situación de los libros" y en la que se
muestren las columnas: código de libro, título, año y situación (comprado o
pendiente).
<html>
<body>
<table>
<tr>
</tr>
for $a in doc("libros.xml")//libro
return<tr>
<td>{$a/@codigo}</td>
<td>{$a/titulo}</td>
<td>{$a/anyo}</td>
<td>
return if ($com_pen/codigo=$a/@codigo)
then Comprado
else Pendiente
</td>
</tr>
</table>
</body>
</html>
<html>
<body>
for $a in doc("libros.xml")//libro
order by $a/titulo
</body>
</html>
3. Realizar una tabla html con el título "Listado de libros de categorías" y que tenga
las columnas: categoría y nro.de títulos.
<html>
<body>
<table>
<tr>
<th>Categoria</th>
<th>Nº Libros</th>
</tr>
for $a in distinct-values(doc("libros.xml")//libro/@categoria)
return
<tr>
<td>{$a}</td>
<td>
{
return count($num)
</td>
</tr>
</table>
</body>
</html>
4. Realizar una tabla html con el título "Listado de libros" y que tenga las columnas:
código, categoría, título, autor, año y precio. En la columna autor deberá figurar
"varios" si hay más de un autor.
<html>
<body>
<table>
<tr>
<th>Titulo</th>
<th>Editorial</th>
<th>Precio</th>
</tr>
{
for $a in doc("Libros.xml")//libro
return
<tr>
<td>{$a /titulo}</td>
<td>{$a /editorial}</td>
<td>{$a /precio}</td>
</tr>
}
</table>
</body>
</html>
5. Realizar una tabla html con el título "listado de libros pendientes anteriores a
2004" con las columnas: codigo, categoria, titulo y precio.
<html>
<body>
<center>
<th>Codigo</th>
<th>Categoria</th>
<th>Titulo</th>
<th>Precio</th>
</tr>
for $x in doc("c:\users\usuario\desktop\xquery2.xml")/libreria/libro
return
<tr>
<td>{data($x/@codigo)}</td>
<td>{data($x/@categoria)}</td>
<td>{data($x/titulo)}</td>
<td>{data($x/precio)}</td>
</tr>
</table>
</center>
</body>
</html>