LDM II - Román Lafita
LDM II - Román Lafita
LDM II - Román Lafita
EVALUACIÓN
Lenguajes de Marcas y Sistemas de Gestión de la
Información
2
Enunciado
Una orquesta quiere digitalizar y ordenar su funcionamiento y, para ello, han encargado
la creación de una base de datos.
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.
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
6
<!ELEMENT obra (nombre_obra, autor, año, partituras)>
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>