Enreas
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"?>
<pelicula titulo="Brazil" estreno="1985" minutos="132">
	<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>

Y esta transformación se logra añadiendo esta línea al documento XML, para indicarle qué transformación XSL debe realizar:

<?xml version="1.0" encoding="iso-8859-15"?>
<?xml-stylesheet type="text/xsl" href="brazil.xsl"?>
<pelicula titulo="Brazil" estreno="1985" minutos="132">
...

Interfaces de usuario con XUL[]

El código fuente necesario para crear el cuadro de diálogo visto en el capítulo de introducción es el siguiente:

<?xml version="1.0" encoding="iso-8859-15"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window
	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
	title="Nueva película">

	<script src="11-filmoteca.js"/>

	<vbox>

		<hbox>

		<groupbox>
			<caption label="Personal"/>
			<label value="Título:"/>
			<textbox id="titulo"/>
			<label value="Director:"/>
			<textbox id="director"/>
			<label value="Productor:"/>
			<textbox id="productor"/>
			<label value="Guionista:"/>
			<textbox id="guionista"/>
			<label value="Protagonista:"/>
			<textbox id="protagonista"/>
		</groupbox>

		<vbox>
			<label value="Género:"/>
			<checkbox id="genero_drama"
			checked="true" label="Drama"/>
			<checkbox id="genero_comedia"
			label="Comedia"/>
			<checkbox id="genero_aventuras"
			label="Aventuras"/>
			<checkbox id="genero_romance"
			label="Romance"/>
			<checkbox id="genero_cifi"
			label="Ciencia ficción"/>
		</vbox>

		<vbox>
			<label value="Calificación:"/>
			<radiogroup>
			<radio id="calificacion_0" value="0"
				label="Lo peor"/>
			<radio id="calificacion_1" value="1"
				label="Mala"/>
			<radio id="calificacion_3" value="2"
				label="Regular"/>
			<radio id="calificacion_4" value="3"
				selected="true"
				label="Buena"/>
			<radio id="calificacion_5" value="4"
				label="Imprescindible"/>
			<radio id="calificacion_5" value="5"
				label="Obra maestra"/>
			</radiogroup>
		</vbox>

		</hbox>

		<hbox align="right">

		<button
			id="aceptar"
			label="Aceptar"
			default="false"
			onclick="boton_aceptar()"/>

		<button
			id="cancelar"
			label="Cancelar"
			default="true"/>

		</hbox>

</vbox>

</window>

Enlaces[]

Advertisement