Laboratorio de Bases de Datos II
Transcripción
Laboratorio de Bases de Datos II
Laboratorio de Bases de Datos II Ayudante: Daniel Inostroza Rodríguez [email protected] Xpath Ejercicio 1 Xpath Ejercicio 1 Xpath Ejercicio 1 • Consultas anidadas: ¿Cómo obtener datos en base a una restricción dada por otros datos? • Ej: Obtener los títulos de los libros publicados el mismo año que la novela "La vida está en otra parte" Xpath Ejercicio 1 1. Obtener primero el año en que se publicó la novela "La vida está en otra parte": Xpath Ejercicio 1 1. Obtener primero el año en que se publicó la novela "La vida está en otra parte": 2. Obtener después los títulos de los libros publicados en 1973: Xpath Ejercicio 1 1. Obtener primero el año en que se publicó la novela "La vida está en otra parte": 2. Obtener después los títulos de los libros publicados en 1973: Xpath Ejercicio 1 1. Obtener primero el año en que se publicó la novela "La vida está en otra parte": 2. Obtener después los títulos de los libros publicados en 1973: Xpath Ejercicio 1 3. Finalmente unir expresiones Xpath Ejercicio 1 • Otra forma de resolver la misma consulta Xpath Ejercicio 1 • Otra forma de resolver la misma consulta Xpath Ejercicio 2 • Obtener los títulos de los libros del mismo autor que la novela "Pantaleón y las visitadoras“. Xpath Ejercicio 2 1. Obtener primero el autor de la novela "Pantaleón y las visitadoras": Xpath Ejercicio 2 1. Obtener primero el autor de la novela "Pantaleón y las visitadoras": 2. Obtener después los títulos de los libros escritos por Mario Vargas Llosa: Xpath Ejercicio 2 1. Obtener primero el autor de la novela "Pantaleón y las visitadoras": 2. Obtener después los títulos de los libros escritos por Mario Vargas Llosa: Xpath Ejercicio 2 1. Obtener primero el autor de la novela "Pantaleón y las visitadoras": 2. Obtener después los títulos de los libros escritos por Mario Vargas Llosa: Xpath Ejercicio 2 3. Finalmente unir resultados XSD XSD • El elemento schema es el elemento raíz del documento en el que se define el esquema: XSD • Pueden declararse 2 tipos: – Complejos: Pueden contener sub-elementos y atributos – Simples: No contienen sub-elementos ni atributos • Pueden aparecer dentro de elementos o en valores de atributos XSD Ejemplo 1 XSD Ejemplo 2 • Tipos anónimos vs. con nombre XSD Ejemplo 3 • Tipos complejos: alternativas choice – Es un o exclusivo XSD Ejemplo 4 • Tipos complejos: contenido mixto (texto con elementos) mixed XSD Ejemplo 5 • Secuencias no ordenadas all XSD Ejemplo 6 • Agrupaciones group XSD Ejemplo 7 • Atributos XSD Ejemplo 8 • Inclusiones de elementos de otros esquemas include XSD Ejercicio 1 <alumno dni="9399390"> <nombre>Juan</nombre> <apellidos>García García</apellidos> <nacim>1985</nacim> </alumno> XSD Ejercicio 1 <alumno dni="9399390"> <nombre>Juan</nombre> <apellidos>García García</apellidos> <nacim>1985</nacim> </alumno> <xs:element name=“alumno”> <xs:complexType> <xs:sequence> <xs:element name=“nombre" type="xs:string"/> <xs:element name=“apellidos" type="xs:string"/> <xs:element name=“nacim" type="xs:gYear”minOccurs="0" maxOccurs="1"/> </xs:sequence> <xs:attribute name=“dni" type=“xs:integer"/> </xs:complexType> </xs:element> XSD Ejercicio 2 • Dado el siguiente XML, encontrar un posible archivo XSD: • <?xml version="1.0" encoding="UTF-8"?> <alumno dni="111" xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xsi:noNamespaceSchemaLocation="alumno.xsd"> <nombre>Juan Garcia</nombre> <direccion> <calle>Avenida de la Fuente</calle> <numero>6</numero> <ciudad>Zafra</ciudad> <provincia>Badajoz</provincia> </direccion> <telefono>924555555</telefono> </alumno> <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="tipodireccion"> <xs:sequence> <xs:element name="calle" type="xs:string"/> <xs:element name="numero" type="xs:string"/> <xs:element name="ciudad" type="xs:string"/> <xs:element name="provincia" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="alumno"> <xs:complexType> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="direccion" type="tipodireccion"/> <xs:element name="telefono" type="xs:string"/> </xs:sequence> <xs:attribute name="dni" type="xs:integer"/> </xs:complexType> </xs:element> </xs:schema> XSD Ejercicio 3 • Ejemplo con más de un alumno. Encontrar un posible XSD. • <?xml version="1.0" encoding="UTF-8"?> <alumnos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="alumnos.xsd"> <alumno dni="111"> <nombre>Juan Garcia</nombre> <direccion> <calle>Avenida de la Fuente</calle> <numero>6</numero> <ciudad>Zafra</ciudad> <provincia>Badajoz</provincia> </direccion> <telefono>924555555</telefono> </alumno> <alumno dni="222"> <nombre>Jose Sanchez</nombre> <direccion> <calle>Calle Ancha</calle> <numero>3</numero> <ciudad>Zafra</ciudad> <provincia>Badajoz</provincia> </direccion> <telefono>924550000</telefono> </alumno> </alumnos> <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:complexType name="tipodireccion"> <xs:sequence> <xs:element name="calle" type="xs:string"/> <xs:element name="numero" type="xs:string"/> <xs:element name="ciudad" type="xs:string"/> <xs:element name="provincia" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="alumno"> <xs:complexType> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="direccion" type="tipodireccion"/> <xs:element name="telefono" type="xs:string"/> </xs:sequence> <xs:attribute name="dni" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name="alumnos"> <xs:complexType> <xs:sequence> <xs:element ref="alumno" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> XSD Ejercicio 4 • Escribir un XSD para el siguiente documento XML, e incluir los cambios necesarios en el mismo para referenciar al esquema creado. Se debe cumplir también lo siguiente: – Los elementos “vehículo”, “nombre” y “modificacion” deben aparecer mínimo una vez, y el máximo no está limitado. El resto de los elementos deben aparecer 1 vez. – Todos los elementos que aparecen en el documento instancia son obligatorios y deben aparecer siempre en el mismo orden. • <?xml version="1.0" encoding="ISO-8859-1"?> <vehiculos> <vehiculo> <nombre>Count Zero</nombre> <modelo>Series I,80"</modelo> <fabricacion> <inicio> <dia>21</dia> <mes>July</mes> <anyo>1949</anyo> </inicio> <fin> <dia>9</dia> <mes>August</mes> <anyo>1949</anyo> </fin> </fabricacion> <modificaciones> <modificacion>Change Engine</modificacion> <modificacion>Change pedals</modificacion> <modificacion>Change gearbox</modificacion> <modificacion>Fit Rollcage</modificacion> </modificaciones> </vehiculo> </vehiculos> <?xml version = "1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"> <xsd:element name = "vehiculos"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "vehiculo" maxOccurs = "unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "vehiculo"> <xsd:complexType> <xsd:sequence> <xsd:element name = "nombre" type = "xsd:string" maxOccurs = "unbounded"/> <xsd:element name = "modelo" type = "xsd:string"/> <xsd:element name = "fabricacion"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "inicio"/> <xsd:element ref = "fin"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "modificaciones"> <xsd:complexType> <xsd:sequence> <xsd:element name = "modificacion" type = "xsd:string" maxOccurs = "unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "inicio"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "dia"/> <xsd:element ref = "mes"/> <xsd:element ref = "anyo"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "fin"> <xsd:complexType> <xsd:sequence> <xsd:element ref = "dia"/> <xsd:element ref = "mes"/> <xsd:element ref = "anyo"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name = "dia" type = "xsd:string"/> <xsd:element name = "mes" type = "xsd:string"/> <xsd:element name = "anyo" type = "xsd:string"/> </xsd:schema> Bonus: Ejercicios Certamen 1 Bonus: Ejercicios Certamen 2 Bonus: Ejercicios Certamen 3 Bonus: Ejercicios Certamen 4 Bonus: Ejercicios Certamen 4 Bonus: Ejercicios Certamen 5 Bonus: Ejercicios Certamen Bonus: Ejercicios Certamen 6 Bonus: Ejercicios Certamen 7 Bonus: Ejercicios Certamen 8 Bonus: Ejercicios Certamen 9