LDM II - Román Lafita

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 10

PRÁCTICA EVALUABLE 2ª

EVALUACIÓN
Lenguajes de Marcas y Sistemas de Gestión de la
Información

Román Lafita Gil


Desarrollo de Aplicaciones Multiplataforma I
Curso 2021/22
1
Contenido
Enunciado ......................................................................................................................... 3
Documento XML ............................................................................................................... 3
DTD Externo ...................................................................................................................... 6
Esquema XSD .................................................................................................................... 7

2
Enunciado

Una orquesta quiere digitalizar y ordenar su funcionamiento y, para ello, han encargado
la creación de una base de datos.

Cuando la orquesta recibe un encargo, a este se le asigna un número de identificación


(formado por seis dígitos), además de almacenar los datos de repertorio, lugar y fecha
del mismo. Según el repertorio que se toque, la plantilla varía. Esta plantilla, compuesta
por los músicos y un director, se almacenará dentro del encargo. De estos músicos se
interesa almacenar su número de identificación (compuesto por seis dígitos), nombre
completo, instrumento, sección en la orquesta, dirección y teléfono de contacto.

Por otro lado, hay que tener en cuenta el repertorio que se va a tocar en cada encargo,
ya que los músicos requerirán de unas partituras u otras (de las que se almacenará tanto
su identificación, con cuatro dígitos, como su edición). De las obras interesa guardar su
identificación (cuatro dígitos y una letra), el nombre de la misma, su autor y el año en el
que se compuso.

Documento XML

Para empezar, vamos con el elemento principal de xml, en este caso, orquesta. Dentro
de este, como reza el enunciado del ejercicio, tenemos los diferentes encargos que la
misma irá recibiendo. A cada encargo se le asigna un número de identificación, el cual
he decidido interpretar como un atributo. Dentro de encargo hay tres atributos:
repertorio, plantilla, lugar y fecha.

Por un lado, repertorio está formado por elementos obra, que recogerán las piezas a
tocar en el concierto. Cada obra tiene un número de identificación, que, al igual que en
el encargo, he interpretado como un atributo. La obra se compone de los elementos
nombre_obra, autor, año, partituras (donde se recogen las distintas ediciones, como el
elemento edición, y la identificación de estas en forma de atributo, en este caso codigo).

Por otro lado, encontramos el elemento plantilla. Esta plantilla está formada, a su vez,
por los elementos musico, cuya identificación y puesto dentro de la orquesta se
3
almacena en el atributo id y puesto. Dentro de musico, a su vez, encontramos los
elementos nombre, dirección y teléfono. Aunque la plantilla dependa del repertorio, he
dejado estos elementos separados, ya que no me ha parecido demasiado orgánico. La
plantilla que fija la obra se refiere a una configuración específica para la orquesta,
mientras que la plantilla del encargo, como elemento, se refiere a los músicos en que
tocarán en ese encargo en concreto.

Para último, encontramos los elementos lugar (el cual contiene el atributo localidad) y
fecha en la que se llevará a cabo el encargo.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>


<orquesta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Orquesta.xsd">
<encargo idEncargo="102301">
<repertorio>
<obra idObra="7132E">
<nombre_obra>Symphony No. 1</nombre_obra>
<autor>Gustav Mahler</autor>
<año>1888</año>
<partituras>
<edicion codigo="0232">Bärenreiter, 1997</edicion>
<edicion codigo="1221">Boileau, 2004</edicion>
<edicion codigo="5644">Henle, 2012</edicion>
</partituras>
</obra>
<obra idObra="3242A">
<nombre_obra>Concierto en Sol Mayor</nombre_obra>
<autor>W. A. Mozart</autor>
<año>1775</año>
<partituras>
<edicion codigo="8463">Henle, 1984</edicion>
<edicion codigo="9823">Schott, 1992</edicion>
<edicion codigo="4934">Bärenreiter, 2015</edicion>
</partituras>
</obra>

4
</repertorio>
<plantilla>
<musico idMusico="117723" puesto="director">
<nombre>Juan Fernández Lozano</nombre>
<direccion>C/ Alta, nº 15</direccion>
<telefono>652533478</telefono>
</musico>
<musico idMusico="127634" puesto="violoncello">
<nombre>María Bermúdez Ciprian</nombre>
<direccion>C/ Baja, nº 8</direccion>
<telefono>676684455</telefono>
</musico>
<musico idMusico="347623" puesto="trombon1">
<nombre>Luis Cantero Sampériz</nombre>
<direccion>C/ del Medio, nº 34</direccion>
<telefono>66278787</telefono>
</musico>
</plantilla>
<fecha>2022-03-17</fecha>
<lugar localidad="Logroño">Auditorio de Logroño</lugar>
</encargo>
<encargo idEncargo="423568">
<repertorio>
<obra idObra="7766A">
<nombre_obra>Symphony No. 3</nombre_obra>
<autor>Johannes Brahms</autor>
<año>1883</año>
<partituras>
<edicion codigo="1123">Schott, 1999</edicion>
<edicion codigo="8945">Henle, 2006</edicion>
<edicion codigo="3487">Boileau, 2</edicion>
</partituras>
</obra>
<obra idObra="4555F">
<nombre_obra>Pavana</nombre_obra>
<autor>Maurice Ravel</autor>

5
<año>1899</año>
<partituras>
<edicion codigo="7756">Henle, 1990</edicion>
<edicion codigo="1873">Schott, 1970</edicion>
<edicion codigo="9834">Bärenreiter, 2010</edicion>
</partituras>
</obra>
</repertorio>
<plantilla>
<musico idMusico="117723" puesto="concertino">
<nombre>Paloma Cuevas Sánchez</nombre>
<direccion>C/ Mayor, nº 16</direccion>
<telefono>655785647</telefono>
</musico>
<musico idMusico="127634" puesto="violoncello">
<nombre>María Bermúdez Ciprian</nombre>
<direccion>C/ Baja, nº 8</direccion>
<telefono>676684455</telefono>
</musico>
<musico idMusico="347623" puesto="trombon1">
<nombre>Luis Cantero Sampériz</nombre>
<direccion>C/ del Medio, nº 34</direccion>
<telefono>66278787</telefono>
</musico>
</plantilla>
<fecha>2022-02-30</fecha>
<lugar localidad="Madrid">Auditorio Nacional</lugar>
</encargo>
</orquesta>

DTD Externo

<!ELEMENT orquesta (encargo*)>

<!ELEMENT encargo (repertorio+, plantilla, lugar, fecha)>

<!ELEMENT repertorio (obra+)>

6
<!ELEMENT obra (nombre_obra, autor, año, partituras)>

<!ELEMENT nombre_obra (#PCDATA)>

<!ELEMENT autor (#PCDATA)>

<!ELEMENT año (#PCDATA)>

<!ELEMENT partituras (edicion+)>

<!ELEMENT edicion (#PCDATA)>

<!ELEMENT plantilla (musico+)>

<!ELEMENT musico (nombre, direccion, telefono)>

<!ELEMENT nombre (#PCDATA)>

<!ELEMENT direccion (#PCDATA)>

<!ELEMENT telefono (#PCDATA)>

<!ELEMENT lugar (#PCDATA)>

<!ELEMENT fecha (#PCDATA)>

<!ATTLIST encargo id CDATA #REQUIRED>

<!ATTLIST obra id CDATA #REQUIRED>

<!ATTLIST musico id CDATA #REQUIRED>

<!ATTLIST musico puesto CDATA #REQUIRED>

<!ATTLIST edicion codigo CDATA #REQUIRED>

<!ATTLIST lugar localidad CDATA #REQUIRED>

Esquema XSD

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="orquesta" type="orquestaType"></xs:element>
<xs:complexType name="orquestaType">
<xs:sequence>
<xs:element name="encargo" type="encargoType"
minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="encargoType">
<xs:sequence>
<xs:element name="repertorio" type="repertorioType"/>

7
<xs:element name="plantilla" type="plantillaType"/>
<xs:element name="fecha" type="xs:date"/>
<xs:element name="lugar" type="lugarType"/>
</xs:sequence>
<xs:attribute name="idEncargo" type="xs:positiveInteger"
use="required"/>
</xs:complexType>
<xs:simpleType name="idEncargo">
<xs:restriction base="xs:positiveInteger">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="repertorioType">
<xs:sequence>
<xs:element name="obra" type="obraType" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="obraType">
<xs:sequence>
<xs:element name="nombre_obra" type="xs:string"/>
<xs:element name="autor" type="xs:string"/>
<xs:element name="año" type="xs:string"/>
<xs:element name="partituras" type="partiturasType"/>
</xs:sequence>
<xs:attribute name="idObra" type="idObraType" use="required"/>
</xs:complexType>
<xs:simpleType name="idObraType">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{4}[A-Z]"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="partiturasType">
<xs:sequence>
<xs:element name="edicion" type="edicionType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="codigoType">

8
<xs:restriction base="xs:positiveInteger">
<xs:pattern value="[0-9]{4}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="edicionType">
<xs:attribute name="codigo" type="codigoType" use="required"/>
</xs:complexType>
<xs:complexType name="plantillaType">
<xs:sequence>
<xs:element name="musico" type="musicoType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="musicoType">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="direccion" type="xs:string"/>
<xs:element name="telefono" type="xs:string"/>
</xs:sequence>
<xs:attribute name="idMusico" type="xs:positiveInteger"
use="required"/>
<xs:attribute name="puesto" type="xs:string" use="required"/>
</xs:complexType>
<xs:simpleType name="idMusico">
<xs:restriction base="xs:positiveInteger">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="lugarType">
<xs:simpleContent>
<xs:extension base="xs:string" >
<xs:attribute name="localidad" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:schema>

También podría gustarte