Enreas
Registrarse
Advertisement

Una sencilla transformación[]

En el capítulo de introducción del libro se muestra una sencilla transformación de un documento XML en uno HTML utilizando XSL. El documento XML, llamado brazil.xml, es el siguiente:

<?xml version="1.0" encoding="iso-8859-15"?>
<?xml-stylesheet type="text/xsl" href="brazil.xsl"?>
<pelicula titulo="Brazil" estreno="1985" minutos="142">
  <direccion>
    <director nombre="Terry" apellidos="Gilliam"/>
  </direccion>
  <produccion>
    <productor nombre="Patrick" apellidos="Cassavetti"/>
    <productor nombre="Arnon" apellidos="Milchan"/>
  </produccion>
  <guion>
    <guionista nombre="Terry" apellidos="Gilliam"/>
    <guionista nombre="Tom" apellidos="Stoppard"/>
    <guionista nombre="Charles" apellidos="McKeown"/>
  </guion>
  <reparto>
    <interprete nombre="Jonathan" apellidos="Pryce"
      papel="protagonista"/>
    <interprete nombre="Robert" apellidos="De Niro"
      papel="protagonista"/>
    <interprete nombre="Kim" apellidos="Greist"
      papel="protagonista"/>
    <interprete nombre="Michael" apellidos="Palin"
      papel="secundario"/>
    <interprete nombre="Ian" apellidos="Holm"
      papel="secundario"/>
    <interprete nombre="Bob" apellidos="Hoskins"
      papel="secundario"/>
  </reparto>
</pelicula>

La transformación se logra gracias al brazil.xsl, cuyo código es el siguiente:

<?xml version="1.0" encoding="iso-8859-15"?>

<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0">

<xsl:preserve-space elements="*"/>

<xsl:template match="/">
<html>

<head>
  <title>
    <xsl:value-of select="/pelicula/@titulo"/>
  </title>
</head>

<body>
  <b><xsl:value-of select="/pelicula/@titulo"/></b><br/>
  <u>Director</u>:<xsl:text> </xsl:text>
  <xsl:value-of
    select="/pelicula/direccion/director/@nombre"/>
  <xsl:text> </xsl:text>
  <xsl:value-of
    select="/pelicula/direccion/director/@apellidos"/>
  <br/>
  <u>Intérpretes</u>:<br/>
  <xsl:for-each select="/pelicula/reparto/interprete">
    <xsl:if test="@papel = 'protagonista'">
      <xsl:value-of select="@nombre"/>
      <xsl:text> </xsl:text>
      <xsl:value-of select="@apellidos"/><br/>
    </xsl:if>
  </xsl:for-each>
</body>

</html>
</xsl:template>
</xsl:stylesheet>
Advertisement