100% encontró este documento útil (2 votos)
244 vistas8 páginas

Comesana Cabeza Jose Luis LMSGID06 Tarea

El documento describe un esquema XSD para validar un documento XML que representa una base de datos relacional de un instituto con información de alumnos, asignaturas y notas. Se incluyen también consultas XQuery sobre los datos XML.

Cargado por

olivermarch
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (2 votos)
244 vistas8 páginas

Comesana Cabeza Jose Luis LMSGID06 Tarea

El documento describe un esquema XSD para validar un documento XML que representa una base de datos relacional de un instituto con información de alumnos, asignaturas y notas. Se incluyen también consultas XQuery sobre los datos XML.

Cargado por

olivermarch
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 8

José Luis Comesaña Cabeza Tarea tema 6 LMSGID

Generar un esquema XSD que sirva para describir en XML dicha base de datos relacional.
Asociar el documento XML correspondiente a dicha base de datos.

Documento clase.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<clase xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
xsd:noNamespaceSchemaLocation="clase.xsd">
<alumnos>
<alumno cod="n12344345">
<apenom>Alcalde García, Luis</apenom>
<direc>Las Manos, 24</direc>
<pobla>Lamadrid</pobla>
<telef>942756645</telef>
</alumno>
<alumno cod="n43483437">
<apenom>González Pérez, Olga</apenom>
<direc>Miraflor 28 - 3A</direc>
<pobla>Torres</pobla>
<telef>942564355</telef>
</alumno>
<alumno cod="n88234942">
<apenom>Fernández Díaz, María</apenom>
<direc>Luisa Fernanda 53</direc>
<pobla>Miera</pobla>
<telef>942346945</telef>
</alumno>
</alumnos>
<asignaturas>
<asignatura cod="a1" nombre="FH"/>
<asignatura cod="a2" nombre="FOL"/>
<asignatura cod="a3" nombre="ISO"/>
<asignatura cod="a4" nombre="LMSGI"/>
<asignatura cod="a5" nombre="PAR"/>
<asignatura cod="a6" nombre="GBD"/>
</asignaturas>
<notas>
<nota alum="n12344345" asig="a1" calificacion="4"/>
<nota alum="n43483437" asig="a1" calificacion="5"/>
<nota alum="n88234942" asig="a1" calificacion="8"/>
<nota alum="n12344345" asig="a2" calificacion="10"/>
<nota alum="n43483437" asig="a2" calificacion="7"/>
<nota alum="n88234942" asig="a2" calificacion="6"/>
<nota alum="n12344345" asig="a3" calificacion="3"/>
<nota alum="n88234942" asig="a3" calificacion="6"/>
<nota alum="n12344345" asig="a4" calificacion="8"/>
<nota alum="n43483437" asig="a4" calificacion="4"/>
<nota alum="n12344345" asig="a5" calificacion="6"/>
<nota alum="n12344345" asig="a6" calificacion="9"/>
</notas>
</clase>

Documento clase.xsd
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation xml:lang="Es-es">
Base de datos de un instituto (Tarea 6 LMSGI)
<fecha>2012-03-25</fecha>

-1-
José Luis Comesaña Cabeza Tarea tema 6 LMSGID

<autor>José Luis Comesaña</autor>


</xsd:documentation>
</xsd:annotation>
<xsd:element name="clase" type="claseDatos"/>
<xsd:complexType name="claseDatos">
<xsd:sequence>
<xsd:element name="alumnos" type="alumnosDatos" minOccurs="1"
maxOccurs="1"/>
<xsd:element name="asignaturas" type="asignaturasDatos"
minOccurs="1" maxOccurs="1"/>
<xsd:element name="notas" type="notasDatos" minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="alumnosDatos">
<xsd:sequence>
<xsd:element name="alumno" type="alumnoDato" minOccurs="1"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="alumnoDato">
<xsd:sequence>
<xsd:element name="apenom" type="xsd:string"/>
<xsd:element name="direc" type="xsd:string"/>
<xsd:element name="pobla" type="xsd:string"/>
<xsd:element name="telef" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:decimal">
<xsd:minExclusive value="600000000"/>
<xsd:maxExclusive value="999999999"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="cod" type="codAlumnos" use="required"/>
</xsd:complexType>
<xsd:simpleType name="codAlumnos">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-z]([0-9]){8}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="asignaturasDatos">
<xsd:sequence>
<xsd:element name="asignatura" minOccurs="1"
maxOccurs="unbounded" type="asignaturaDato"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="asignaturaDato">
<xsd:attribute name="cod" type="codAsignatura" use="required"/>
<xsd:attribute name="nombre" type="nombreAsignatura"
use="required"/>
</xsd:complexType>
<xsd:simpleType name="codAsignatura">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-z][0-9]"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="nombreAsignatura">
<xsd:restriction base="xsd:string">
<xsd:pattern value="([A-Z])+"/>
</xsd:restriction>

-2-
José Luis Comesaña Cabeza Tarea tema 6 LMSGID

</xsd:simpleType>
<xsd:complexType name="notasDatos">
<xsd:sequence>
<xsd:element name="nota" minOccurs="1" maxOccurs="unbounded"
type="notaDato"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="notaDato">

<xsd:attribute name="alum" type="codAlumnos" use="required"/>


<xsd:attribute name="asig" type="codAsignatura" use="required"/>
<xsd:attribute name="calificacion" type="calAsignatura"
use="required"/>

</xsd:complexType>
<xsd:simpleType name="calAsignatura">
<xsd:restriction base="xsd:decimal">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="10"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>

Una vez realizado estos documentos realizar las siguientes consultas XQuery sobre
los datos:

1. Obtener el nombre de todos los alumnos matriculados en algún módulo.


for $a in doc("clase.xml")//alumnos/alumno
where $a/@cod union $a/../../notas/nota/@alum
return
<alumno>{ data($a/apenom) }</alumno>

2. Obtener las calificaciones del alumno de código "n43483437" en cada módulo.


for $a in doc("clase.xml")//notas/nota
for $b in doc("clase.xml")//asignaturas/asignatura
where $a/@alum = "n43483437" and $b/@cod = $a/@asig
return
<alumno>{ data($b/@nombre),"---",data($a/@calificacion) }</alumno>

3. Obtener el nombre y el teléfono de cada alumno ordenado por apellidos de forma


descendiente.
for $a in doc("clase.xml")//alumnos/alumno
let $b := index-of($a/apenom,',')
order by $a/apenom descending
return
<alumno>{ data(substring-after($a/apenom,',')),"---",data($a/telef)
}</alumno>

4. ¿Cuántos módulos hay?


let $a := doc("clase.xml")//asignaturas/asignatura
return
<alumno>{ "Existen: ",data(count($a)),"módulos distintos" }</alumno>

5. Obtener los nombres de los alumnos matriculados en LMSGI y sus notas, ordenado por
notas.
for $a in doc("clase.xml")//asignaturas/asignatura,

-3-
José Luis Comesaña Cabeza Tarea tema 6 LMSGID

$b in $a/../../notas/nota,
$c in $a/../../alumnos/alumno
where $a/@nombre="LMSGI" and $b/@asig = $a/@cod and $c/@cod = $b/@alum
order by $b/@calificacion
return
<alumno>{ "Nombre: ", data($c/apenom), " Calificacion: ",
data($b/@calificacion) }</alumno>

6. Obtener los nombres y las calificaciones de los matriculados en FH que han aprobado.
for $a in doc("clase.xml")//asignaturas/asignatura,
$b in $a/../../notas/nota,
$c in $a/../../alumnos/alumno
where $a/@nombre="FH" and $b/@asig = $a/@cod and $c/@cod = $b/@alum
and $b/@calificacion >=5
order by $b/@calificacion
return
<alumno>{ "Nombre: ", data($c/apenom), " Calificacion: ",
data($b/@calificacion) }</alumno>

Dado el fichero:
clase2.xml
<?xml version="1.0" encoding="UTF-8"?>
<fp>
<ciclos_informatica>
<ciclo id="ASIR">
<nombre>Administracion de Sistemas Informaticos en Red</nombre>
<legislacion>
<real_decreto>Real Decreto 1629/2009, de 30 de
octubre</real_decreto>
<orden>ORDEN de 19 de julio de 2010</orden>
</legislacion>
<grado>Superior</grado>
<anyo>2009</anyo>
<titulacion>Técnico Superior en Administración de Sistemas
Informáticos en Red</titulacion>
<modulos>
<modulo>
<nombre>Implantación de sistemas operativos</nombre>
<horas>224</horas>
</modulo>
<modulo>
<nombre>Planificación y administración de redes</nombre>
<horas>192</horas>
</modulo>
<modulo>
<nombre>Fundamentos de hardware</nombre>
<horas>96</horas>
</modulo>
<modulo>
<nombre>Gestión de bases de datos</nombre>
<horas>160</horas>
</modulo>
<modulo>
<nombre>Lenguajes de marcas y sistemas de gestión de
información</nombre>
<horas>96</horas>
</modulo>
<modulo>
<nombre>Formación y orientación laboral</nombre>

-4-
José Luis Comesaña Cabeza Tarea tema 6 LMSGID

<horas>96</horas>
</modulo>
</modulos>
</ciclo>
<ciclo id="DAM">
<nombre>Desarrollo de Aplicaciones Multiplataforma</nombre>
<legislacion>
<real_decreto>Real Decreto 450/2010, de 16 de abril</real_decreto>
<orden>ORDEN de 16 de junio de 2011</orden>
</legislacion>
<grado>Superior</grado>
<anyo>2010</anyo>
<titulacion>Técnico Superior en Desarrollo de Aplicaciones
Multiplataforma</titulacion>
<modulos>
<modulo>
<nombre>Sistemas informáticos</nombre>
<horas>160</horas>
</modulo>
<modulo>
<nombre>Bases de datos</nombre>
<horas>160</horas>
</modulo>
<modulo>
<nombre>Programación</nombre>
<horas>256</horas>
</modulo>
<modulo>
<nombre>Lenguajes de marcas y sistemas de gestión de
información</nombre>
<horas>96</horas>
</modulo>
<modulo>
<nombre>Entornos de desarrollo</nombre>
<horas>96</horas>
</modulo>
<modulo>
<nombre>Formación y orientación Laboral</nombre>
<horas></horas>
</modulo>
</modulos>
</ciclo>
<ciclo id="DAW">
<nombre>Desarrollo de Aplicaciones Web</nombre>
<legislacion>
<real_decreto>Real Decreto 686/2010, de 20 de mayo</real_decreto>
<orden>ORDEN de 16 de junio de 2011</orden>
</legislacion>
<grado>Superior</grado>
<anyo>2010</anyo>
<titulacion>Técnico Superior en Desarrollo de Aplicaciones
Web</titulacion>
<modulos>
<modulo>
<nombre>Sistemas informáticos</nombre>
<horas>160</horas>
</modulo>
<modulo>
<nombre>Bases de datos</nombre>
<horas>160</horas>
</modulo>

-5-
José Luis Comesaña Cabeza Tarea tema 6 LMSGID

<modulo>
<nombre>Programación</nombre>
<horas>256</horas>
</modulo>
<modulo>
<nombre>Lenguajes de marcas y sistemas de gestión de
información</nombre>
<horas>96</horas>
</modulo>
<modulo>
<nombre>Entornos de desarrollo</nombre>
<horas>96</horas>
</modulo>
<modulo>
<nombre>Formación y orientación Laboral</nombre>
<horas></horas>
</modulo>
</modulos>
</ciclo>
<ciclo id="SMR">
<nombre>Sistemas Microinformaticos y Redes</nombre>
<legislacion>
<real_decreto>REAL DECRETO 1691/2007, de 14 de
diciembre</real_decreto>
<orden>ORDEN de 7 de julio de 2009</orden>
</legislacion>
<grado>Medio</grado>
<anyo>2007</anyo>
<titulacion>Técnico en Sistemas Microinformáticos y
Redes</titulacion>
<modulos>
<modulo>
<nombre>Montaje y mantenimiento de equipos</nombre>
<horas>224</horas>
</modulo>
<modulo>
<nombre>Redes locales</nombre>
<horas>224</horas>
</modulo>
<modulo>
<nombre>Aplicaciones ofimáticas</nombre>
<horas>224</horas>
</modulo>
<modulo>
<nombre>Sistemas operativos monopuesto</nombre>
<horas>128</horas>
</modulo>
<modulo>
<nombre>Formación y Orientación Laboral</nombre>
<horas>96</horas>
</modulo>
</modulos>
</ciclo>
</ciclos_informatica>
</fp>

Realizar los siguientes ejercicios:


1. Consulta que devuelve los nombres de los ciclos que tienen como identificador “DAM”.
for $a in doc("clase2.xml")//fp/ciclos_informatica/ciclo
where $a/@id = "DAM"

-6-
José Luis Comesaña Cabeza Tarea tema 6 LMSGID

return
<modulo>{ $a/modulos/modulo/nombre }</modulo>

2. Consulta que devuelve las titulaciones de los ciclos que hayan sido publicadas a partir
del año 2010 incluido, ordenados alfabéticamente por titulación.
for $a in doc("clase2.xml")//fp/ciclos_informatica/ciclo
where $a/anyo >= 2010
order by $a/titulacion
return
<modulo>{data($a/nombre)}{ $a/modulos/modulo/nombre }</modulo>

3. Obtener el nombre de los módulos de todos los ciclos que tienen una duración de 96
horas.
for $a in doc("clase2.xml")//fp/ciclos_informatica/ciclo
order by $a
return
<ciclo>
<titulo>{data($a/nombre)}</titulo>
{for $b in $a/modulos/modulo
where number($b/horas) = 96
order by $b/nombre
return
<modulo>{data($b/nombre)}</modulo>}
</ciclo>

4. Obtener las órdenes que regulan los ciclos de informática en Andalucía junto con el
nombre de ciclo formativo.
for $a in doc("clase2.xml")//fp/ciclos_informatica/ciclo
order by $a
return
<ciclo>
<titulo>{data($a/nombre)}</titulo>
{for $b in $a/legislacion/orden
return
<orden>{data($b)}</orden>}
</ciclo>

5. Consulta que obtiene para cada uno de los módulos el nombre y las horas.
for $a in doc("clase2.xml")//fp/ciclos_informatica/ciclo
order by $a
return
<ciclo>
<titulo>{data($a/nombre)}</titulo>
{for $b in $a/modulos/modulo
order by $b/nombre
return
<modulo>{data($b/nombre)," - ",data($b/horas),"horas"}</modulo>}
</ciclo>

6. Devolver el nombre y las horas de los módulos ordenados desde el nombre del modulo
más corto hasta el nombre del módulo más largo.
for $a in
doc("clase2.xml")//fp/ciclos_informatica/ciclo/modulos/modulo
order by string-length($a/nombre)
return
<modulo>{data($a/nombre)," - ",data($a/horas),"horas"}</modulo>

-7-
José Luis Comesaña Cabeza Tarea tema 6 LMSGID

7. Devolver una lista de titulaciones como atributo de una etiqueta ciclos.


for $a in doc("clase2.xml")//fp/ciclos_informatica/ciclo/titulacion
return
<ciclos tit="{data($a)}"></ciclos>

8. Devolver la suma de horas de los módulos del ciclo SMR excepto el modulo de
“Formación y Orientación Laboral”
for $a in doc("clase2.xml")//fp/ciclos_informatica/ciclo[@id="SMR"]
return
let $b := $a/modulos/modulo[nombre != "Formación y Orientación
Laboral"]
return
<hora>{sum($b/horas)}</hora>

Anotaciones:
En algunos ejercicios he puesto más de lo solicitado únicamente por temas de presentación y
práctica, no por necesidad para el correcto funcionamiento de dicho ejercicio.

-8-

También podría gustarte