Guía Breve de Tecnologías XML

¿Qué son las Tecnologías XML?

XML es un Lenguaje de Etiquetado Extensible muy simple, pero estricto que juega un papel fundamental en el intercambio de una gran variedad de datos. Es un lenguaje muy similar a HTML pero su función principal es describir datos y no mostrarlos como es el caso de HTML. XML es un formato que permite la lectura de datos a través de diferentes aplicaciones.

Las tecnologías XML son un conjunto de módulos que ofrecen servicios útiles a las demandas más frecuentes por parte de los usuarios. XML sirve para estructurar, almacenar e intercambiar información.

¿Para qué sirven?

Entre las tecnologías XML disponibles se pueden destacar:

XSL : Lenguaje Extensible de Hojas de Estilo, cuyo objetivo principal es mostrar cómo debería estar estructurado el contenido, cómo debería ser diseñado el contenido de origen y cómo debería ser paginado en un medio de presentación como puede ser una ventana de un navegador Web o un dispositivo móvil, o un conjunto de páginas de un catálogo, informe o libro.

XPath : Lenguaje de Rutas XML, es un lenguaje para acceder a partes de un documento XML.

XLink : Lenguaje de Enlace XML, es un lenguaje que permite insertar elementos en documentos XML para crear enlaces entre recursos XML.

XPointer : Lenguaje de Direccionamiento XML, es un lenguaje que permite el acceso a la estructura interna de un documento XML, esto es, a sus elementos, atributos y contenido.

XQL : Lenguaje de Consulta XML, es un lenguaje que facilita la extracción de datos desde documentos XML. Ofrece la posibilidad de realizar consultas flexibles para extraer datos de documentos XML en la Web.

¿Cómo funcionan?

XSL funciona como un lenguaje avanzado para crear hojas de estilos. Es capaz de transformar, ordenar y filtrar datos XML, y darles formato basándolo en sus valores. XPath identifica partes de un documento XML concreto, como pueden ser sus atributos, elementos, etc. XLink por su lado, describe un camino estándar para añadir hiperenlaces en un archivo XML. Es decir, es un mecanismo de vinculación a otros documentos XML. Funciona de forma similar a un enlace en una página Web, es decir, funciona como lo haría <a href="">, sólo que a href es un enlace unidireccional. Sin embargo, XLink permite crear vínculos bidireccionales, lo que implica la posibilidad de moverse en dos direcciones. Esto facilita la obtención de información remota como recursos en lugar de simplemente como páginas Web. XPointer funciona como una sintaxis que apunta a ciertas partes de un documento XML, es como una extensión de XPath. Se utiliza para llegar a ciertas partes de un documento XML. Primero, XLink permite establece el enlace con el recurso XML y luego es XPointer el que va a un punto específico del documento. Su funcionamiento es muy similar al de los identificadores de fragmentos en un documento HTML ya que se añade al final de una URI y después lo que hace es encontrar el lugar especificado en el documento XML. Al ser XPointer una extensión de XPath, XPointer tiene todas las ventajas de XPath y además permite establecer un rango en un documento XML, es decir, con XPointer es posible establecer un punto final y un punto de inicio, lo que incluye todos los elementos XML dentro de esos dos puntos. Finalmente, XQL, lenguaje de consultas, se basa en operadores de búsqueda de un modelo de datos para documentos XML que puede realizar consultas en infinidad de tipos de documentos como son documentos estructurados, colecciones de documentos, bases de datos, estructuras DOM, catálogos, etc.

Ejemplos

Ejemplo de documento XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<libro>
  <titulo></titulo>
  <capitulo>
    <titulo></titulo>
    <seccion>
      <titulo></titulo>
    </seccion>
  </capitulo>
</libro>

Ejemplo de transformación XSL:

<!-- Transforma el documento XML anterior en un documento XHTML -->
<xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml"
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="libro capitulo titulo"/>
<xsl:output
   method="xml"
   indent="yes"
   encoding="iso-8859-1"
   doctype-public="-//W3C//DTD XHTML 1.1//EN" 
   doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>

<!-- Utiliza el título del libro como título del documento XHTML -->
<xsl:template match="libro">
 <html>
   <head>
     <title>
       <xsl:value-of select="titulo"/>
     </title>
   </head>
   <body>
     <xsl:apply-templates/>
   </body>
 </html>
</xsl:template>

<!-- Y también como título de nivel H1 -->
<xsl:template match="libro/titulo">
  <h1>
    <xsl:apply-templates/>
  </h1>
</xsl:template>

<!-- Los títulos de los capítulos aparecerán como H2 -->
<xsl:template match="capitulo/titulo">
  <h2>
    <xsl:apply-templates/>
  </h2>
</xsl:template>

<!-- Los títulos de las secciones aparecerán como H3 -->
<xsl:template match="seccion/titulo">
  <h3>
    <xsl:apply-templates/>
  </h3>
</xsl:template>
</xsl:stylesheet>

Ejemplo de código XPath:

<!-- Toma todos los elementos titulo dentro del elemento capítulo
     y los elementos autor dentro del elemento capitulo -->
/doc/capitulo/titulo | /doc/capitulo/autor

Ejemplo de código XLink:

<my:crossReference
  xlink:href="libro.xml"
  xlink:role="http://www.example.com/linkprops/listalibros"
  xlink:title="Lista de libros">
Lista actual de libros
</my:crossReference>

Ejemplo de código XPointer:

documento.xml#xpointer(
    /libro/capitulo[@public])xpointer(/libro/capitulo[@num="1"])

Ejemplo de código de XQuery:

<!-- Libros escritos por Vargas Llosa después de 1991 -->
<bib>
 {
  for $b in doc("http://libro.example.com/bib.xml")/bib/libro
  where $b/autor = "Vargas Llosa" and $b/@anio > 1991
  return
    <libro anio="{ $b/@anio }">
     { $b/titulo }
    </libro>
 }
</bib>

Más información sobre Tecnologías XML

XML en 10 puntos. Disponibles versiones del documento en español, català y galego.
Presentación de los conceptos básicos del Lenguaje de Etiquetado Extensible.
Página Principal de XML
Toda la información sobre el Lenguaje de Etiquetado Extensible.
XML 1.0 (Tercera edición)
Recomendación del W3C. Extensible Markup Language.
Familia XSL
Toda la información sobre la familia de Lenguajes de Estilo Extensibles.
XPath 2.0
Recomendación del W3C. XML Path Language.
XLink 1.0
Recomendación del W3C. XML Linking Language.
XPointer
Borrador de Trabajo del W3C. XML Pointer Language.
Página principal de XQuery
Toda la información sobre XML Query.