Enreas
Advertisement

XLink[]

Volvamos a los ejemplos sencillos:

<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="brazil.css"?>
<pelicula>
	<titulo>Brazil</titulo>
	<director>Terry Gilliam</director>
</pelicula>

Como ya se ha visto, es posible cambiar el aspecto del documento anterior usando CSS:

pelicula
{
	color: #0000ff;
	text-decoration: underline;
	cursor: pointer;
}
 
director
{
	display: none;
}

El título de la película aparecerá con el familiar aspecto que tienen los enlaces, pero no funcionará como uno de ellos. La situación cambia si reemplazamos el documento XML anterior por el siguiente:

<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="brazil.css"?>
<pelicula
	xmlns:xlink="http://www.w3.org/1999/xlink"
	xlink:type="simple"
	xlink:href="http://imdb.com/title/tt0088846/"
	xlink:onClick="location.href='http://imdb.com/title/tt0088846/'">
	<titulo>Brazil</titulo><director>Terry Gilliam</director>
</pelicula>

Enlaces extendidos[]

Es posible establecer relaciones bastante más complejas que un enlace entre elementos de un documento XML. El siguiente es un ejemplo de relaciones extendidas:

<?xml version="1.0"?>
<pelicula>
	<titulo>Brazil</titulo>
	<director>Terry Gilliam</director>
	<relaciones xmlns:xlink="http://www.w3.org/1999/XLink"
		xlink:type="extended">
		<director xlink:role="director"
			xlink:href="gilliam_terry.xml"
			xlink:title="Terry Gilliam"/>
		<pelicula xlink:role="pelicula"
			xlink:href="brazil.xml"
			xlink:title="Brazil"/>
		<pelicula xlink:role="pelicula"
			xlink:href="doce_monos.xml"
			xlink:title="Doce monos"/>
		<pelicula xlink:role="inspiracion"
			xlink:href="1984.xml"
			xlink:title="1984"/>
		<pelicula xlink:role="inspiracion"
			xlink:href="la_jetee.xml"
			xlink:title="La jetée"/>
		<relacion xlink:type="arc"
			xlink:from="director"
			xlink:to="pelicula"
			xlink:show="replace"
			actuate="onRequest"/>
		<relacion xlink:type="arc"
			xlink:from="pelicula"
			xlink:to="inspiracion"
			xlink:show="replace"
			actuate="onRequest"/>
	</relaciones>
</pelicula>

XPointer[]

XPointer aumenta las posibilidades de XLink, permitiendo enlazar con elementos que se encuentran dentro de los documentos. Por ejemplo, supongamos que disponemos de un documento XML que describe puntuaciones:

<?xml version="1.0"?>
<frases>
	<cero>Lo peor</cero>
	<uno>Mala</uno>
	<dos>Regular</dos>
	<tres>Buena</tres>
	<cuatro>Imprescindible</cuatro>
	<cinco>Obra maestra</cinco>
</frases>

Ahora, modifiquemos el documento XML que contiene detalles de una película:

<?xml version="1.0"?>
<pelicula>
	<titulo>Brazil</titulo>
	<director>Terry Gilliam</director>
	<puntuacion>4</puntuacion>
</pelicula>

A esta película se le ha dado una puntuación de 4 sobre 5. Es posible enlazar con la descripción de esa nota así:

<?xml version="1.0"?>
<pelicula>
	<titulo>Brazil</titulo>
	<director>Terry Gilliam</director>
	<puntuacion
		xmlns:xlink="http://www.w3.org/1999/xlink"
		xlink:type="simple"
		xlink:href="frases.xml#xpointer(/frases/cuatro)">
	4</puntuacion>
</pelicula>

Podríamos cambiar el contenido del documento XML que contiene las frases por este otro:

<?xml version="1.0"?>
<frases>
	<cero>Hueso</cero>
	<uno>Descompresión</uno>
	<dos>Ingravidez</dos>
	<tres>Vals</tres>
	<cuatro>HAL</cuatro>
	<cinco>Monolito</cinco>
</frases>

Enlaces interesantes[]

Puede que encuentres interesantes los siguientes enlaces relacionados con el tema de este capítulo:

  • libxml2, una biblioteca de funciones que aprovecha estas tecnologías.
  • La mejor información sobre enlaces y XML.
Advertisement