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

Documentos relacionados