Enreas
Registrarse
Advertisement

XML de trabajo[]

Éste es el documento XML con el que trabajaremos en este capítulo:

<?xml version="1.0" encoding="iso-8859-15"?>
<?xml-stylesheet type="text/xsl" href="brazil.xsl"?>
<pelicula>
  <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>
  <esloganes>
    <eslogan>
      Vuelos fantásticos.
      La pesadilla de la realidad.
      Ataques terroristas.
      Compras a media noche.
      Amor verdadero.
      Y fontanería creativa.
    </eslogan>
    <!-- Hacen falta más eslóganes. -->
  </esloganes>
</pelicula>

Posición absoluta[]

Basándonos en el documento XML anterior, es posible acceder al eslogan de la película así:

<?xml version="1.0"?>

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

<xsl:template match="/">

<xsl:value-of select="/pelicula/esloganes/eslogan"/>

</xsl:template>
</xsl:stylesheet>

Como especificamos la ruta completa de acceso al elemento que nos interesa, se trata de una ruta absolulta.

Posición relativa[]

Es posible especificar una ruta relativa en lugar de una absoluta:

<?xml version="1.0"?>

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

<xsl:template match="/pelicula">

<xsl:value-of select="esloganes/eslogan"/>

</xsl:template>
</xsl:stylesheet>

Nodo raíz[]

Si lo deseas, también puedes obtener el nodo raíz:

<?xml version="1.0"?>

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

<xsl:template match="/">

<xsl:value-of select="/"/>

</xsl:template>
</xsl:stylesheet>

Instrucciones de proceso[]

Además de extraer partes de un documento XML, también es posible obtener instrucciones de proceso, como se puede comprobar con el siguiente ejemplo:

<?xml version="1.0"?>

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

<xsl:template match="/">

<xsl:value-of select="processing-instruction()"/>

</xsl:template>
</xsl:stylesheet>

Atributos[]

El nivel de control sobre el documento XML que se puede lograr utilizando XPath llega incluso hasta los atributos del mismo:

<?xml version="1.0"?>

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

<xsl:template match="/">

<xsl:value-of select="/pelicula/direccion/director/@nombre"/>

</xsl:template>
</xsl:stylesheet>

Texto[]

¿Necesitas el texto asociado a un elemento de un documento XML? Mira este ejemplo:

<?xml version="1.0"?>

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

<xsl:template match="/">

<xsl:value-of select="/pelicula/esloganes/eslogan/text()"/>

</xsl:template>
</xsl:stylesheet>

Comentarios[]

También es posible tener acceso a los comentarios de un documento XML:

<?xml version="1.0"?>

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

<xsl:template match="/">

<xsl:value-of select="/pelicula/esloganes/comment()"/>

</xsl:template>
</xsl:stylesheet>

Funciones[]

Existen funciones que se pueden utilizar desde para obtener información muy interesante sobre los documentos XML. Por ejemplo, se puede saber cuántos elementos del mismo tipo están presentes. En este caso, cuántos intérpretes:

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

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

<xsl:template match="/">

<b>Intérpretes: </b>
<xsl:value-of select="count(/pelicula/reparto/interprete)"/>

</xsl:template>
</xsl:stylesheet>

Enlaces interesantes[]

Si deseas saber más sobre XPath, visite la página en la que se describe esta norma.

Advertisement