Examen 10 de junio de 2014

Resuelva los siguientes ejercicios guardando las respuestas en una carpeta cuyo nombre contenga su nombre y apellidos.

Ejercicio 1. Documentos bien formados

El siguiente documento no está bien formado porque contiene errores. Corrija los errores (si para corregir algún error hay que inventarse una etiqueta o atributo, utilice un nombre que tenga relación con la información contenida en el documento).

<?xml version="1.0" encoding="UTF-8"?>
<diccionarios>
<idiomas>
<idioma "id"=es>español
<idioma "id"=fr>francés
<idioma "id"=en>inglés
<palabra es id:perro />perro
<palabra en id:perro />dog
<palabra fr id:perro />chien
<\palabras>
autor: Acme & Co.
</diccionario>

Ejercicio 2. DTD

Reescriba el documento siguiente (sin modificar la DTD y conservando toda la información) de manera que sea un documento válido:

Notas:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cine [
  <!ELEMENT cine (paises, idiomas, personas, peliculas)>
  <!ELEMENT paises (pais+)>
  <!ELEMENT pais (#PCDATA)>
  <!ATTLIST pais
            cc ID #REQUIRED>
<!ELEMENT idiomas (idioma+)>
<!ELEMENT idioma (#PCDATA)>
<!ATTLIST idioma
          lc ID #REQUIRED>
  <!ELEMENT personas (persona+)>
  <!ELEMENT persona (#PCDATA)>
  <!ATTLIST persona
            fecha_nacimiento CDATA #REQUIRED
            pais_nacimiento IDREF #REQUIRED>
  <!ELEMENT peliculas (pelicula+)>
  <!ELEMENT pelicula (estreno, titulo+, autores)>
  <!ELEMENT estreno (#PCDATA)>
  <!ELEMENT titulo (#PCDATA)>
  <!ATTLIST titulo
            idioma IDREF #REQUIRED>
  <!ELEMENT autores (#PCDATA)>
  <!ATTLIST autores
          compositor CDATA #IMPLIED
          director CDATA #REQUIRED>
]>
<cine>
  <directores>
    <director nombre="Christopher Nolan" fecha_nacimiento="1970" pais_nacimiento="UK" />
    <director nombre="Martin Scorsese" fecha_nacimiento="1942" pais_nacimiento="EEUU" />
    <director nombre="Drew Goddard" fecha_nacimiento="1975" pais_nacimiento="EEUU" />
  </directores>
  <compositores>
    <compositor nombre="Hans Zimmer" fecha_nacimiento="1957" pais_nacimiento="Alemania" />
    <compositor nombre="David Julyan" fecha_nacimiento="1967" pais_nacimiento="UK" />
  </compositores>
  <peliculas>
    <pelicula titulo="Uno de los nuestros">
      <estreno>1990</estreno>
      <titulo>Goodfellas</titulo>
      <director>Martin Scorsese</director>
    </pelicula>
    <pelicula titulo="Thelma y Louise">
      <estreno>1991</estreno>
      <titulo>Thelma y Louise</titulo>
      <director>Ridley Scott</director>
      <compositor>Hans Zimmer</compositor>
    </pelicula>
    <pelicula titulo="El truco final">
      <estreno>2006</estreno>
      <titulo>The Prestige</titulo>
      <director>Christopher Nolan</director>
      <compositor>David Julyan</compositor>
    </pelicula>
    <pelicula titulo="Origen">
      <estreno>2010</estreno>
      <titulo>Inception</titulo>
      <director>Christopher Nolan</director>
      <compositor>Hans Zimmer</compositor>
    </pelicula>
   <pelicula titulo="La cabaña en el bosque">
      <estreno>2011</estreno>
      <titulo>The Cabin in the Woods</titulo>
      <director>Drew Goddard</director>
      <compositor>David Julyan</compositor>
    </pelicula>
  </peliculas>
</cine>

Ejercicio 3. XPath

Dado el siguiente documento XML, escriba las expresiones XPath que devuelvan exactamente la respuesta indicadas en los cuadros. Escriba todas las expresiones XPath en un único fichero de texto, numerando las respuestas.

<?xml version="1.0" encoding="UTF-8"?>
<florencia>
  <museos>
    <museo nombre="Uffizi">
      <arquitecto>Vasari</arquitecto>
      <construccion>16</construccion>
    </museo>
    <museo nombre="Bargello">
      <arquitecto>NA</arquitecto>
      <construccion>13</construccion>
    </museo>
    <museo nombre="Accademia">
      <arquitecto>NA</arquitecto>
      <construccion>18</construccion>
    </museo>
  </museos>
  <artistas>
    <artista nombre="Miguel Angel">
      <nombre>Miguel Ángel Buonarroti</nombre>
      <nacimiento>1475</nacimiento>
      <muerte>1564</muerte>
      <pintor />
      <escultor />
      <arquitecto />
    </artista>
    <artista nombre="Vasari">
      <nombre>Giorgio Vasari</nombre>
      <nacimiento>1511</nacimiento>
      <muerte>1574</muerte>
      <pintor />
      <arquitecto />
    </artista>
    <artista nombre="Ghiberti">
      <nombre>Lorenzo Ghiberti </nombre>
      <nacimiento>1378</nacimiento>
      <muerte>1455</muerte>
      <orfebre />
      <escultor />
    </artista>
    <artista nombre="Donatello">
      <nombre>Donato di Niccolò di Betto Bardi</nombre>
      <nacimiento>1386</nacimiento>
      <muerte>1466</muerte>
      <escultor />
    </artista>
  </artistas>
  <obras>
    <obra autor="Miguel Angel" museo="Bargello">Baco</obra>
    <obra autor="Miguel Angel" museo="Accademia">David</obra>
    <obra autor="Donatello" museo="Bargello">David</obra>
    <obra autor="Ghiberti" museo="Bargello">Sacrificio de Isaac</obra>
    <obra autor="Miguel Angel" museo="Uffizi">Tondo Doni</obra>
    <obra autor="Vasari" museo="Uffizi">Uffizi</obra>
  </obras>
</florencia>
  1. Nombres de escultores:
     nombre="Miguel Angel"
     nombre="Ghiberti"
     nombre="Donatello"
    
  2. Nombre completo de Donatello:
    <nombre>Donato di Niccolò di Betto Bardi</nombre>
  3. Museos con esculturas llamadas "David":
     museo="Accademia"
     museo="Bargello"
    
  4. Años que vivió Vasari:
    63
  5. Obras en museos construidos en el siglo XIII:
    Baco
    David
    Sacrificio de Isaac
  6. Siglo de construcción de museos con obras de orfebres:
    <construccion>13</construccion>

Ejercicio 4. XSLT

Dado el mismo documento XML del ejercicio 3, escriba y enlace las hojas de estilo XSLT que devuelvan la respuesta deseada (una para cada caso).

Para cada apartado, prepare dos ficheros (fichero xml y fichero xsl enlazado).

  1. Mostrar la información en forma de tabla:

    XSLT

    <?xml version="1.0" encoding="UTF-8"?>
    <html>
      <h1>Museos de Florencia</h1>
      <table border="1">
        <tr>
          <th>Museo</th>
          <th>Siglo construcción</th>
          <th>Arquitecto</th>
        </tr>
        <tr>
          <td align="center">Uffizi</td>
          <td align="center">16</td>
          <td align="center">Vasari</td>
        </tr>
        <tr>
          <td align="center">Bargello</td>
          <td align="center">13</td>
          <td align="center">NA</td>
        </tr>
        <tr>
          <td align="center">Accademia</td>
          <td align="center">18</td>
          <td align="center">NA</td>
        </tr>
      </table>
    </html>
    
  2. Mostrar la información en forma de párrafos:

    XSLT

    <?xml version="1.0" encoding="UTF-8"?>
    <html>
      <h1>Florencia, capital del arte</h1>
    
      <h2>Artistas florentinos</h2>
        <p>Miguel Ángel Buonarroti ( pintor, escultor, arquitecto, ) nació en 1475 y murió en 1564.</p>
        <p>Giorgio Vasari ( pintor, arquitecto, ) nació en 1511 y murió en 1574.</p>
        <p>Lorenzo Ghiberti ( orfebre, escultor, ) nació en 1378 y murió en 1455.</p>
        <p>Donato di Niccolò di Betto Bardi ( escultor, ) nació en 1386 y murió en 1466.</p>
    
      <h2>Obras</h2>
        <p>"Baco", de Miguel Angel, se encuentra en Bargello</p>
        <p>"David", de Miguel Angel, se encuentra en Accademia</p>
        <p>"David", de Donatello, se encuentra en Bargello</p>
        <p>"Sacrificio de Isaac", de Ghiberti, se encuentra en Bargello</p>
        <p>"Tondo Doni", de Miguel Angel, se encuentra en Uffizi</p>
        <p>"Uffizi", de Vasari, se encuentra en Uffizi</p>
    
    </html>