COMPARTE ESTE ARTÍCULO

En esta entrada recopilamos una serie de actividades completas para practicar a fondo XML, DTD, XPath y XSLT. Están pensadas para ciclos formativos de informática y se pueden trabajar tanto en el aula como en casa, de forma individual o en parejas.

La idea es que el alumnado se acostumbre a:

  • Diseñar y validar documentos XML con DTD externo.
  • Formular consultas XPath algo más elaboradas.
  • Construir transformaciones XSLT que generen salidas legibles (HTML o XML).

1. Fichero de músicos y obras clásicas

1.1. Documento XML base

Se propone un documento musicos.xml con la siguiente estructura general:

<?xml version="1.0" encoding="UTF-8"?>
<musica>
    <musico id="Beethoven" pais="Alemania">
        Ludwig van Beethoven
        <nacido>1770</nacido>
        <fallecido>1827</fallecido>
    </musico>

    <musico id="Verdi" pais="Italia">
        Giuseppe Verdi
        <nacido>1813</nacido>
        <fallecido>1901</fallecido>
    </musico>

    <!-- Más músicos -->

    <obra autor="Vivaldi" genero="concierto">Las cuatro estaciones</obra>
    <obra autor="Bach" genero="oratorio">Pasión según San Mateo</obra>
    <obra autor="Mozart" genero="ópera">La flauta mágica</obra>
    <obra autor="Mozart" genero="concierto">Concierto para piano nº 27</obra>
    <obra autor="Beethoven" genero="sinfonía">Novena sinfonía</obra>
    <obra autor="Verdi" genero="ópera">La Traviata</obra>
    <obra autor="Beethoven" genero="concierto">Concierto para piano nº 5</obra>
</musica>

Se puede ampliar con más autores, países y obras.

1.2. Diseño de DTD externo

Actividad sugerida: crear un DTD externo (musicos.dtd) que garantice, entre otras cosas:

  • El elemento raíz será siempre <musica>.
  • Dentro de <musica> deben aparecer, en este orden, uno o más elementos <musico> y a continuación uno o más elementos <obra>.
  • Cada <musico> contendrá:
    • Un identificador obligatorio y único (id).
    • Un atributo pais obligatorio.
    • Opcionalmente, un atributo codigo para el país.
    • Contenido mixto con el nombre del músico y los elementos hijos <nacido> y <fallecido> (la fecha de nacimiento es obligatoria; la de fallecimiento puede ser opcional o permitir que esté vacía si sigue vivo).
  • Las obras tendrán:
    • Atributo autor obligatorio, que coincidirá con algún id de los músicos.
    • Atributo genero opcional, cuyos valores válidos serán: oratorio, ópera, sinfonía o concierto. Si no se indica, se asumirá que es concierto.
    • El contenido de <obra> será el título de la pieza.

Ejemplo de esqueleto de DTD:

<!ELEMENT musica (musico+, obra+)>

<!ELEMENT musico (#PCDATA, nacido, fallecido?)>
<!ATTLIST musico
          id ID #REQUIRED
          pais CDATA #REQUIRED
          codigo CDATA #IMPLIED>

<!ELEMENT nacido (#PCDATA)>
<!ELEMENT fallecido (#PCDATA)>

<!ELEMENT obra (#PCDATA)>
<!ATTLIST obra
          autor IDREF #REQUIRED
          genero (oratorio | ópera | sinfonía | concierto) "concierto">

Se puede pedir al alumnado que valide el XML con herramientas como xmllint o cualquier editor que soporte validación DTD.

1.3. Consultas XPath sugeridas

Con el mismo XML de músicos y obras, se pueden plantear consultas XPath como las siguientes:

  1. Obtener cuántas obras hay con el título “La Traviata”.
  2. Averiguar el año de fallecimiento del autor de la última obra que aparece en el documento.
  3. Listar el nombre (contenido textual) de las obras cuyos autores sean de Alemania.
  4. Mostrar las fechas de nacimiento de los músicos que tengan alguna obra de género concierto en la que se use el piano (se puede suponer que el título contiene la palabra “piano”).

Ejemplos de expresiones XPath orientativas:

//obra[text()="La Traviata"]

//obra[last()]/@autor

//musico[@pais="Alemania"]

//musico[ @id = //obra[contains(., "piano") and @genero="concierto"]/@autor ]/nacido

El objetivo es que el alumnado razone cómo combinar condiciones, filtros por atributos y funciones como last() o contains().

1.4. Transformación XSLT (biografías breves)

Se propone un documento XSLT que genere un listado sencillo de biografías de los músicos. La salida podría ser HTML o un XML intermedio, por ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<biografias>
    <p>Antonio Vivaldi nació en Italia en 1678 y murió en 1741.</p>
    <p>Johann Sebastian Bach nació en Alemania en 1685 y murió en 1750.</p>
    <p>Wolfgang Amadeus Mozart nació en Austria en 1756 y murió en 1791.</p>
    <p>Ludwig van Beethoven nació en Alemania en 1770 y murió en 1827.</p>
    <p>Giuseppe Verdi nació en Italia en 1813 y murió en 1901.</p>
</biografias>

Pautas para el alumnado:

  • Crear una plantilla raíz que recorra todos los <musico>.
  • Usar los valores de @pais, <nacido> y <fallecido> para construir las frases.
  • Controlar el formato del texto con xsl:text y xsl:value-of.

2. Tienda de discos en XML

2.1. Escenario propuesto

Se plantea un segundo documento XML, por ejemplo tiendadiscos.xml, con esta idea general:

  • La tienda contiene artistas, discográficas y cds.
  • Estos elementos pueden aparecer en cualquier orden dentro del elemento raíz.
  • Tiene que existir al menos un artista y al menos una discográfica.

Esquema orientativo:


Maria Del Carmen Hernandez Herrera profile picture
Maria Del Carmen Hernandez Herrera
Google star 1Google star 2Google star 3Google star 4Google star 5
Contacte con Alejandro por recomendación de una compañera de trabajo a la cuál ayudó mucho en la preparación de unos exámenes muy complicados . La física y química para mi hija en este curso estaba siendo muy complicada, tanto es así ,que suspendió la primera evaluación y ella no había suspendido nunca, desde que acude a sus clases hay un antes y un después ...... Alejandro con su manera de explicar ha conseguido que las entienda , que pueda desarrollar los problemas que tenga confianza en sí misma....tanto es así que ha aprobado todos los exámenes....Paula está súper contenta y yo más!!!! Siempre que tengo alguna duda o que necesito modificar un horario responden super pronto y buscan solución motivo por el cuál recomiendo al 100% está academia. Muchas gracias por su ayuda.
Arianna Del Campo Martín profile picture
Arianna Del Campo Martín
Google star 1Google star 2Google star 3Google star 4Google star 5
Yo soy estudiante universitaria, muy finalista y que llegó a la academia con prácticamente cero base… Finalmente aprobé mi examen! Aquí de una manera diferente a lo que convencionalmente se espera de los profes, me enseñaron, muy cercanamente lo que me proporcionó confianza para no callarme las dudas y preguntar todo el tiempo. Me sorprendió que el profe que me dio clases en particular era como una enciclopedia andante, sin necesidad de mirar los libros me decía fórmulas de memoria que son difíciles de entender hasta con ellas delante. Recomiendo 100%
Ariana García Esquivel profile picture
Ariana García Esquivel
Google star 1Google star 2Google star 3Google star 4Google star 5
No he dudado ni por un segundo que haber asistido a las clases con Alejandro es lo mejor que me ha pasado… No solamente te apoya académicamente, sino que apoya al alumno a pesar de sus dificultades, y a mí me ha estado ayudando muchísimo y en mis peores momentos. Mil gracias por tus consejos, por siempre darme ánimos, por ser tan simpático que alegras las clases aburridas y por ser un profe tan bueno, son de estas personas que nunca olvidas.❤️👏🏻 También he de decir que Raúl, el otro profesor que se encuentra en la academia…es una persona que se preocupa por el alumno a que haga las cosas bien, con tranquilidad, está siempre pendiente a ti, tiene mucha paciencia, dedica a dar sus clases lo más dinámico posible, tiene mucha amabilidad con las personas, en definitiva… tengo a los dos mejores profesores del mundo, se os quiere mucho💓✨.
Another Weasley. profile picture
Another Weasley.
Google star 1Google star 2Google star 3Google star 4Google star 5
He tenido muchos profes, y muchos particulares, pero como Alejandro ninguno, de verdad, me hace pensar que de verdad no soy tan mala en lo mío 🥺 me apoya muchísimo y me ayuda en todo lo que pueda con mi carrera, es un profesor 10 y una persona sobretodo 10000 Gracias Ale por preocuparte por tus alumnos, por intentar que estén motivados, que las clases sean entretenidas, y lo bien y fácil que explicas ! Para mi, LOS MEJORES 💖 -alba
yarel febles profile picture
yarel febles
Google star 1Google star 2Google star 3Google star 4Google star 5
He entrado a la carrera de enfermería gracias a Alejandro, sin duda estoy súper contento con mi paso por aquí :)
Ana Carina Benta profile picture
Ana Carina Benta
Google star 1Google star 2Google star 3Google star 4Google star 5
Gracias por el ambiente familiar Gracias por la paciencia Gracias por la enseñanza Gracias por el apoyo Gracias por la Motivación!! Simplesmente Gracias!! Recomendable 1000%
Yanet Palacio valdes profile picture
Yanet Palacio valdes
Google star 1Google star 2Google star 3Google star 4Google star 5
Desde hace un tiempo mi hijo asiste a la academia, pensabamos no sacaba la eso y hoy con orgullo se gradúa de 4to de la eso,muy agradecida por los profesores,sobre todo su profe Alejando persona entrañable,justo, para el todo nuestro agradecimiento..⭐⭐⭐👌👌
Mabett Duque profile picture
Mabett Duque
Google star 1Google star 2Google star 3Google star 4Google star 5
¡De lo bueno lo mejor, y de lo mejor lo superior!

¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.


¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos. 

 

 







NUESTRAS ÚLTIMAS PUBLICACIONES


Este modelo se puede modificar para adaptarlo al nivel del grupo.

2.2. Definición de DTD

Actividad sugerida: construir un DTD externo que cumpla los siguientes requisitos:

  • Debe existir al menos un <artista> y al menos una <discografica>.
  • id de artistas y discográficas es obligatorio y único.
  • Nombre y nacionalidad de artistas y discográficas son obligatorios.
  • Los <disco> tendrán:
    • titulo obligatorio.
    • precio y año obligatorios.
    • Un elemento <autor> cuyo valor haga referencia a un artista.
    • Una <discografica> cuyo valor haga referencia a una discográfica.
  • El precio podría tener un atributo opcional moneda con valores (euro, dólar, libra).

Con esta actividad se refuerzan los tipos de contenido, los atributos, el uso de ID/IDREF y la obligatoriedad u opcionalidad.

2.3. Consultas XPath sobre la tienda de discos

Algunas consultas posibles:

  1. Nombres de los artistas que tengan algún CD posterior al año 2001.
  2. Nombre de la discográfica que edita el CD titulado “Malamarsimo”.
  3. Títulos de los CDs que no tengan autor de nacionalidad española.
  4. Nombres de las discográficas con las que ha publicado algún CD el autor “Miguel Ríos”.

Ejemplos orientativos de XPath (a adaptar al XML definitivo):

//artista[@id = //disco[@año > 2001]/autor]/@nombre

//discograficas/discografica[@id = //disco[@titulo="Malamarsimo"]/discografica]/@nombre

//disco[not(autor = //artista[@nacionalidad="España"]/@id)]/@titulo

//discograficas/discografica[@id = //disco[autor = //artista[@nombre="Miguel Ríos"]/@id]/discografica]/@nombre

El objetivo es fomentar el pensamiento relacional entre distintas ramas del árbol XML.

2.4. Transformación XSLT (catálogo de discos)

Propuesta de transformación XSLT para generar un catálogo de discos a partir del XML:

Salida esperada (en XML sencillo):

<?xml version="1.0" encoding="UTF-8"?>
<catalogo>
    <disco>
        <titulo>Bad Jean</titulo>
        <precio>15</precio>
        <año>2000</año>
        <autor>Carlos Jean</autor>
        <discografica>Sello Dos</discografica>
    </disco>
    <!-- resto de discos -->
</catalogo>

Aspectos clave para el alumnado:

  • Recorrer cada <disco> y recuperar el nombre del artista y de la discográfica mediante XPath desde XSLT.
  • Practicar el uso de variables (<xsl:variable>) para almacenar temporalmente el identificador del autor o de la discográfica.
  • Decidir si la salida será XML (como en el ejemplo) o directamente HTML para mostrar el catálogo en una tabla.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Categories:

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
Calendario de publicaciones
octubre 2026
L M X J V S D
 1234
567891011
12131415161718
19202122232425
262728293031  
COMPARTENOS
Estadísticas del sitio
  • 173.502 visitas
HTML Snippets Powered By : XYZScripts.com
Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert

Contenido Protegido

error: CONTENIDO PROTEGIDO