Ejercicios prácticos de XSLT

Rafa Morales 11 Marzo 2015
7min
0
XsLT

Bloque 1 de ejercicios XSLT

<?xml version="1.0" encoding="UTF-8"?>
<ies nombre="IES Francisco de los Rios" web="http://www.iesfranciscodelosrios.es" >
  <ciclos>
    <ciclo id="ASIR">
      <nombre>Administración de Sistemas Informáticos en Red</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2009" />
    </ciclo>
    <ciclo id="DAW">
      <nombre>Desarrollo de Aplicaciones Web</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo>
      <nombre>Desarrollo de Aplicaciones Multiplataforma</nombre>
      <grado>Superior</grado>
      <decretoTitulo año="2010" />
    </ciclo>
    <ciclo id="SMR">
      <nombre>Sistemas Microinformáticos y Redes</nombre>
      <grado>Medio</grado>
      <decretoTitulo año="2008" />
    </ciclo>
  </ciclos>
</ies>

Dado el anterior documento XML, realiza las siguientes transformaciones XSLT de dos maneras distintas, primero utilizando una plantilla (template) para cada elemento y atributo que se necesite transformar, y segundo utilizando sólo la plantilla raíz y bucles (for-each) para cada elemento que se necesite transformar.

  • Mostrar los nombres de los ciclos sin etiquetas.
  • Mostrar en párrafos cada uno de los nombres de los ciclos.
  • Mostrar en una lista sin numerar los nombres de los ciclos y entre paréntesis su grado.
  • Mostrar en una lista numerada los nombres de los ciclos ordenados alfabéticamente de manera descendente y entre paréntesis su grado.
  • Mostrar en una etiqueta H1 el nombre del instituto y luego en una tabla con su fila encabezado las siguientes columnas, nombre del ciclo y año. Si el año es mayor al 2009 la letra será de color verde, si es igual al 2009 de color azul y si es menor al 2009 de color rojo.

 

Bloque 2 de ejercicios XSLT

<?xml version="1.0" encoding="UTF-8"?>
<bib url="http://www.uco.es/servicios/biblioteca/"> 
  <libro año="1994">
    <titulo>TCP/IP Illustrated</titulo> 
    <autor> 
      <apellido>Stevens</apellido> 
      <nombre>W.</nombre> 
    </autor> 
    <editorial>Addison-Wesley</editorial> 
    <precio>65.95</precio> 
  </libro> 
  <libro año="1992"> 
    <titulo>Advan Programming for Unix environment</titulo> 
    <autor>
      <apellido>Stevens</apellido> 
      <nombre>W.</nombre> 
    </autor> 
    <editorial>Addison-Wesley</editorial> 
    <precio>65.95</precio> 
  </libro> 
  <libro año="2000"> 
    <titulo>Data on the Web</titulo> 
    <autor> 
      <apellido>Abiteboul</apellido> 
      <nombre>Serge</nombre> 
    </autor> 
    <autor> 
      <apellido>Buneman</apellido> 
      <nombre>Peter</nombre> 
    </autor> 
    <autor> 
      <apellido>Suciu</apellido> 
      <nombre>Dan</nombre> 
    </autor> 
    <editorial>Morgan Kaufmann editorials</editorial> 
    <precio>39.95</precio> 
  </libro> 
  <libro año="1999"> 
    <titulo>Economics of Technology for Digital TV</titulo> 
    <editor> 
      <apellido>Gerbarg</apellido> 
      <nombre>Darcy</nombre> 
      <afiliacion>CITI</afiliacion> 
    </editor> 
    <editorial>Kluwer Academic editorials</editorial> 
    <precio>129.95</precio> 
  </libro> 
</bib>

Dado el anterior documento XML, realiza las siguientes transformaciones XSLT de dos maneras distintas, primero utilizando una plantilla (template) para cada elemento y atributo que se necesite transformar, y segundo utilizando sólo la plantilla raíz y bucles (for-each) para cada elemento que se necesite transformar.

  • Mostrar una lista enumerada con todos los autores ordenados por apellidos.
  • Mostrar una lista enumerada con todos los títulos de libros cuyo precio sea menor de 100.
  • Mostrar una tabla con las siguientes columnas:
  1. Precio del libro, ordenando los resultados por este campo (Nota: se ordenan como si fueran cadenas y no números).
  2. Título del libro. Se mostrará el fondo de la celda en color rojo si el precio es mayor de 100.
  3. Año de publicación. Se mostrará el texto en cursiva.
  • Mostrar una tabla con una primera fila de encabezado y con las siguientes columnas:
  1. Título del libro, en color rojo si el precio es mayor de 100, añadiéndole el texto "(Caro)" a continuación, ordenando los resultados por este campo.
  2. Autores del libro mostrando primero el nombre y luego el apellido. Si hay más de un autor se muestran todos en la misma celda. Si no hay autor se deja en blanco. Separar palabras con espacio en blanco.
  3. Editores del libro mostrando el nombre, el apellido y la afiliación. Si hay más de un editor se muestran todos en la misma celda. Si no hay editor se deja en blanco. Separar palabras con espacio en blanco.

 

Bloque 3 de ejercicios XSLT

<catalogo>
  <artistas>
    <artista id="uno">
      <nombre>Carlos Jean</nombre>
      <nacionalidad>España</nacionalidad>
    </artista>
    <artista id="dos">
      <nombre>Miguel Rios</nombre>
      <nacionalidad>España</nacionalidad>
    </artista>
    <artista id="tres">
      <nombre>La Mala</nombre>
      <nacionalidad>España</nacionalidad>
    </artista>
    <artista id="cuatro">
      <nombre>Etta James</nombre>
      <nacionalidad>USA</nacionalidad>
    </artista>
  </artistas>
  <discograficas>
    <discografica id="uno">
      <nombre>Motown</nombre>
      <nacionalidad>USA</nacionalidad>
    </discografica>
    <discografica id="dos">
      <nombre>Subterfuge</nombre>
      <nacionalidad>España</nacionalidad>
    </discografica>
    <discografica id="tres">
      <nombre>Sony</nombre>
      <nacionalidad>USA</nacionalidad>
    </discografica>
  </discograficas>
  <cds>
    <cd autor="uno" disc="dos">
      <titulo>Bad Jean</titulo>
      <precio>15</precio>
      <año>2000</año>
    </cd>
    <cd autor="dos" disc="tres">
      <titulo>Rock and Rios</titulo>
      <precio>12</precio>
      <año>1982</año>
    </cd>
    <cd autor="tres" disc="tres">
      <titulo>Malamarismo</titulo>
      <precio>10.90</precio>
      <año>2008</año>
    </cd>
    <cd autor="cuatro" disc="uno">
      <titulo>At last</titulo>
      <precio>13</precio>
      <año>1979</año>
    </cd>
    <cd autor="cuatro" disc="uno">
      <titulo>Chess soul sisters</titulo>
      <precio>16</precio>
      <año>1980</año>
    </cd>
    <cd autor="dos" disc="dos">
      <titulo>Michael Rios</titulo>
      <precio>10</precio>
      <año>1973</año>
    </cd>
    <cd autor="uno" disc="dos">
      <titulo>Party Stereo</titulo>
      <precio>13</precio>
      <año>2009</año>
    </cd>
    <cd autor="tres" disc="tres">
      <titulo>Dirty Bailarina</titulo>
      <precio>13</precio>
      <año>1979</año>
    </cd>
  </cds>
</catalogo>

Dado el anterior documento XML, realiza las siguientes transformaciones XSLT de dos maneras distintas, primero utilizando una plantilla (template) para cada elemento y atributo que se necesite transformar, y segundo utilizando sólo la plantilla raíz y bucles (for-each) para cada elemento que se necesite transformar.

  • Mostrar una lista con los autores españoles.
  • Mostrar una tabla con el nombre del disco en verde si el año es posterior al 2000, y en rojo si el año es anterior al 2000.

 

Soluciones a algunos de los ejercicios.