Sie sind auf Seite 1von 13

<?xml version="1.0" encoding="ISO-8859-1"?

>
<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>

1. Listar el título de todos los libros.

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/titulo

return data($x)

for $x in doc("c:\users\usuario\desktop\xquery1.xml ")/bib/libro

return data($x/titulo)

<titulo>TCP/IP Illustrated</titulo>

<titulo>Advanced Programming for Unix environment</titulo>

<titulo>Data on the Web</titulo>

<titulo>Economics of Technology for Digital TV</titulo>

2. Listar año y título de todos los libros, ordenados por el año.

Primera solución

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro

order by $x/@anyo

return <libro> {$x/@anyo} {$x/titulo }</libro>

Segunda solución

<html>

<head/>

<body>

<h1>Año y titulo de los libros </h1>

<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>

3. Listar los libros cuyo precio sea 65.95

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">

<titulo>Advanced Programming for Unix environment</titulo>

<autor>

<apellido>Stevens</apellido>
<nombre>W.</nombre>

</autor>

<editorial>Addison-Wesley</editorial>

<precio>65.95</precio>

</libro>

4. Listar los libros publicados antes del año 2000

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">

<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="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>

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

where $x/@anyo>1992 and $x/editorial=”Addison-Wesley”

return <libro> {$x/@anyo} {$x/titulo }</libro>

<libro anyo="1994">

<titulo>TCP/IP Illustrated</titulo>

</libro>

6. Listar año y título de los libros que tienen más de un autor.

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro

where $x/count (autor)>1

return <libro> {$x/@anyo} {$x/titulo }</libro>

<libro anyo="2000">

<titulo>Data on the Web</titulo>

</libro>
Otra forma:

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro

let $y := $x//autor

where count ($y)>1

return <libro> {$x/@anyo} {$x/titulo }</libro>

7. Listar año y título de los libros que no tienen autor.

for $x in doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro

where empty($x/autor)

return <libro> {$x/@anyo} {$x/titulo }</libro>

<libro anyo="1999">

<titulo>Economics of Technology for Digital TV</titulo>

</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

let $result := doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/titulo |/bib/libro/autor

return

<result>

data($result)

</result>

<result>TCP/IP Illustrated StevensW. Advanced Programming for Unix environment StevensW.


Data on the Web AbiteboulSerge Economics of Technology for Digital TV BunemanPeter
SuciuDan</result>

10. Por cada libro, obtener su título y el número de autores, agrupados en un elemento <libro>

let $libro := doc("c:\users\usuario\desktop\xquery1.xml")/bib/libro/titulo |/bib/libro[count


(autor)]

return

<libro>

data($libro)

</libro>

<libro>TCP/IP Illustrated TCP/IP IllustratedStevensW.Addison-Wesley65.95 Data on the


WebAbiteboulSergeBunemanPeterSuciuDanMorgan Kaufmann editorials39.95 Advanced
Programming for Unix environment Data on the Web Economics of Technology for Digital
TV</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>

<h1 align="center">Listado de libros</h1>

<center>

<table border ="1">

<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>

<th>Situación de los libros</th>

</tr>

for $a in doc("libros.xml")//libro

return<tr>

<td>{$a/@codigo}</td>

<td>{$a/titulo}</td>

<td>{$a/anyo}</td>

<td>

let $com_pen := doc("librosalmacen.xml")//almacen/comprados

return if ($com_pen/codigo=$a/@codigo)

then Comprado

else Pendiente

</td>

</tr>

</table>
</body>

</html>

2. Realizar un lista ordenada html de nombre de autores.

<html>

<body>

for $a in doc("libros.xml")//libro

order by $a/titulo

return <ul><li>{$a /titulo}</li></ul>

</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>

<h1>Listado de libros de categorías</h1>

<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>
{

let $num := doc("libros.xml")//libro[@categoria=$a]

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>

<h1 align="center">Listado de libros pendientes anteriores a 2004</h1>

<center>

<table border ="1">


<tr>

<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

where anyo < 2004

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>

Das könnte Ihnen auch gefallen