Un vistazo a XML

Por Edson Calle

1. Introducción
2. Objetivos
3. Ventajas
4. Lenguajes de marcas
5. HTML vs. XML
6. Elementos importantes
  6.1. DTD/Esquema
  6.2. CSS/XSL
  6.3. Xlink/ XPointer
  6.4. Parser/DOM
7. Herramientas para crear y ver documentos xml
  7.1.Herramientas gratuitas
  7.2 Analizadores sintácticos de XML
  7.3. Analizadores de XML/XSLT
  7.4. Bibliotecas para procesar XML
  7.5. Otros visualizadores/navegadores que admiten XML
8. Ejemplo XML: libros
  a) Documento XML libros.xml:
  b) DTD
  c) Código XSL
9. Referencias
 

1. INTRODUCCION

Sus iniciales provienen de Extensible Markup Language significa lenguaje de marcas generalizado o lenguaje de marcas ampliable..

Es un lenguaje usado para estructurar información en un documento o en general en cualquier archivo que contenga texto, como por ejemplo archivos de configuración de un programa o una tabla de datos.

XML no es más que un conjunto de reglas para definir etiquetas (tags) semánticas que organizan un documento en diferentes partes.

XML es un metalenguaje que define la sintaxis utilizada para definir otros lenguajes de etiquetas estructurados.

Ha surgido como uno de los formatos de información más aceptado hoy en día, inclusive en ocasiones es designado: "El ASCII de Internet", debido a la flexibilidad y uniformidad con que puede ser intercambiada Información, todo partiendo de un solo documento maestro con la confiabilidad que el formato sea ampliamente aceptado.

Es un estándar abierto y libre del consorcio W3C (http://www.w3.org)  propuesto en 1996, y la primera especificación apareció en 1998. Desde entonces su uso ha tenido un crecimiento acelerado.

Un documento XML puede ser estructurado en forma jerárquica. Debido a que XML fue desarrollado a partir de SGML (lenguaje generalizado de marcas) eliminando un gran número de funcionalidades que lo hacían extremadamente complejo, XML aun mantiene una similitud con SGML.

XML también utiliza TAGS como SGML/HTML, sin embargo, a diferencia de HTML que ya posee DTD's específicos, en XML es posible describir información general como productos, descripciones, nombres, etc, denominados vocabularios.

2. OBJETIVOS


3. VENTAJAS
 


4. LENGUAJES DE MARCAS

Los lenguajes de marcas son sistemas complejos de descripción de documentos que se pueden controlar desde cualquier editor ASCII. Las marcas más utilizadas suelen describirse por textos descriptivos encerrados entre signos de "menor" (<) y "mayor" (>), siendo lo más usual que existan una marca de principio y otra de final.
 

5. HTML vs. XML

El lenguaje HTML es originariamente un subconjunto del más completo SGML, especializado en la descripción de documentos en pantalla a través de marcas (tags, etiquetas).

En teoría, HTML es un subconjunto de XML especializado en presentación de documentos para la Web, mientras que XML es un subconjunto de SGML especializado en gestión de información para la Web.

En la práctica, HTML está un poco dentro de XML (que a su vez es parte de SGML) y otro poco fuera de SGML.

Para reconducir esto, el grupo W3C ha dictado reglas expresas para distinguir el HTML que sigue a al pie de la letra las normas de XML, denominándolo XHTML (eXtendible HyperText Markup Language), que no es más que una reformulación de HTML 4 dentro de las normas de XML.

Podemos comparar el lenguaje XML con el lenguaje HTML. A continuación tenemos un fragmento de código HTML:

<h1>
    Comedor
</h1>
<ul>
    <li>
        <b>Mesa redonda de madera de arce</b>.
        El fabricante es <i>Muebles Albacete</i> y su precio 40000.
    </li>
    <li>
        <b>Dos sillas de madera de arce</b>, de excelente
        calidad, con un coj&iacute;n azul cada una.
    </li>
    <li>
        <b>3 sillas de madera de roble</b>.
    </li>
</ul>


Y ahora un fragmento de código XML equivalente:

<comedor>
  <mesa tipo="redonda" madera="arce">
    <fabricante>Muebles Albacete</fabricante>
      <precio>40000</precio>
  </mesa>
  <silla madera="arce">
    <cantidad>2</cantidad>
    <calidad>excelente</calidad>
    <cojin incluido="sí">
      <color>azul</color>
    </cojin>
  </silla>
  <silla madera="roble">
    <cantidad>3</cantidad>
    <calidad>normal</calidad>
  </silla>
</comedor>


Fundamentalmente HTML está orientado a la presentación de datos, en cambio, XML está orientado a los datos en sí mismos.

HTML es un lenguaje de presentación. Define un conjunto de etiquetas y atributos válidos, una utilización válida de estos elementos y un significado visual para cada elemento del lenguaje. Mientras que, XML es un metalenguaje (un lenguaje para definir otros lenguajes). XML no define las etiquetas ni cómo se utilizan, sólo define unas pocas reglas sintácticas para crear documentos.

La principal ventaja de XML es que cualquier programa informático trabajará mejor con datos en XML.

XML no sustituye a HTML pues sirven para cosas distintas: HTML para presentar información en páginas web y XML para representar e intercambiar datos, independientemente de su presentación. XML y HTML son complementarios.
 

6. ELEMENTOS IMPORTANTES

6.1. DTD

Un DTD es una definición exacta de la gramática de un documento, con la misión de que se genere el código adecuado sin errores. El archivo HTML creado con el editor, al cargarse en un navegador, es vuelto a analizar por su DTD interno para descubrir las etiquetas correctas y las equivocadas, siempre de acuerdo a sus normas internas.

La particularidad más importante del XML es que no existen DTDs predefinidas, ya que es el propio diseñador el que las crea  según el contenido del documento, característica que proporciona una gran facilidad de control de cualquier documento.

En la especificación de XML se describe la forma de definir DTDs particularizadas para documentos XML, que pueden ser internas (cuando van incluidas junto al código XML) o externas (si se encuentran en un archivo propio).

6.2. CSS/XSL

Para describir cómo se deben presentar los documentos XML podemos optar por  las mismas descripciones CSS (Cascading Style Sheets, hojas de estilo en cascada) que se utilizan con HTML o las descripciones que se basan en XSL (Extensible Stylesheet Language, lenguaje de hojas de estilo extensible).

CSS es una descripción del formato en el que se desea que aparezcan las entidades definidas en un documento. Utilizar CSS con XML es similar al uso con HTML, con la excepción de que las etiquetas son diferentes.

CSS es eficaz para describir formatos y presentaciones, pero no sirve para decidir qué tipos de datos deben ser mostrados y cuáles no deben salir en la pantalla.

XSL no solo permite especificar cómo queremos presentar los datos de un documento XML, sino que también sirve para filtrar los datos de acuerdo a ciertas condiciones.

Además de permitir la descripción de la presentación física, también posibilita la ejecución de bucles, sentencias del tipo IF...THEN, selecciones por comparación, operaciones lógicas, ordenaciones de datos, utilización de plantillas, y otras cuestiones similares.

6.3. Xlink/ XPointer

XLink (anteriormente conocido como XLL, Extensible Linking Language) define la forma en la que los documentos XML deben conectarse entre sí.

XPointer describe cómo se puede apuntar a un lugar específico de un determinado documento XML.

Las especificaciones de los hipervínculos para XML permiten adherirse a cualquier etiqueta, hacer referencia a un lugar concreto de un documento determinado a través de su nombre o localización, ser descritos en documentos externos, ser procesados de formas distintas, ser multifuncionales (permitir varios saltos), etc.

Al contrario de lo que ocurre con HTML, en XML existen dos tipos básicos de hipervínculos: simples y extendidos.

6.4. Parser/DOM

Después de recoger la información de todos los documentos que definen la información XML, se genera internamente una estructura que organiza a los elementos que describen las etiquetas en forma de árbol jerárquico, lo que facilita el control de dichos elementos.


7. HERRAMIENTAS PARA CREAR Y VER DOCUMENTOS XML

En realidad, con un editor de textos ASCII (ej. Bloc de notas) y con un visualizador que incluya un parser adaptado a XML (ej. Microsoft Internet Explorer), ya se pueden crear y ver documentos XML.

Sin embargo, existen muchas nuevas herramientas que facilitan un poco la labor del diseñador, algunas de ellas gratuitas:

  •  “Microsoft XML Notepad”, sencillo editor XML, no tiene validación pero resulta muy práctico, aprovecha los motores internos del Explorer para trabajar.
  •  “XSL Tester” permite editar transformaciones XSL (no sólo es gratis, también es Open Source).
  • “IE XML/XSL VIEWER TOOLS”  ayudan a trabajar con XML en Internet Explorer

  • Entre los analizadores sintácticos de XML podemos mencionar:

  • nsgmls
  • rxp
  • xerces
  • otros

  • Entre los analizadores de XML/XSLT, que además de analizar XML, pueden también aplicar las transformaciones XSLT de una página de estilo, tenemos:

  • Sablotron (sabcmd) (http://www.gingerall.cz/ga/Sablot-0-52.html)
  • Libxslt (xsltproc; proyecto GNOME) (http://www.xmlsoft.org/)
  • Xalan (xalan en Java y C++; proyecto Apache) (http://xml.apache.org/)
  • Cocoon (servlet del proyecto Apache) (http://xml.apache.org/)

  • Entre las bibliotecas para procesar XML podemos mencionar:

  • DOM (Document Object Model) Lee el documento completo, permitiendo navegar su estructura jerárquica. Adecuado para aplicaciones de "cliente" , tales como editores de XML.
  • SAX (Standard API for XML) Procesa el documento secuencialmente, ejecutando determinados procedimientos cuando aparezca alguna etiqueta. Adecuado para aplicaciones de "servidor" , tales como transformación de XML usando páginas de estilo XSLT.

  • Existen otros varios visualizadores/navegadores que admiten XML, como Amaya, HotMetal o HyBrick, aunque casi cada día están saliendo nuevos productos como analizadores, visualizadores, motores, editores, DTDs, etc.
     
     

    EJEMPLO XML

    a) Documento XML libros.xml:
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no" ?>
    <?XML-STYLESHEET type="text/xsl" href="libros.xsl" ?>
    <!DOCTYPE LIBROS SYSTEM "libros.dtd">
    <LIBROS>
       <LIBRO>
          <TITULO>AutoSketch</TITULO>
          <AUTOR>Ramón Montero</AUTOR>
          <PRECIO>2.500</PRECIO>
       </LIBRO>
       <LIBRO>
          <TITULO>Windows 98</TITULO>
          <AUTOR>Jaime de Yraolagoitia</AUTOR>
          <PRECIO>3.250</PRECIO>
       </LIBRO>
       <LIBRO>
          <TITULO>Web Graphics</TITULO>
          <AUTOR>Ron Wodaski</AUTOR>
          <PRECIO>8.975</PRECIO>
       </LIBRO>
    </LIBROS>
    b) DTD libros.dtd:
    <!ELEMENT LIBROS (LIBRO)+>
    <!ELEMENT LIBRO (TITULO,AUTOR,PRECIO)>
    <!ELEMENT TITULO (#PCDATA)>
    <!ELEMENT AUTOR (#PCDATA)>
    <!ELEMENT PRECIO (#PCDATA)>
    En el DTD se definen los elementos (!ELEMENT) que integran el documento XML. En la primera línea se indica que el elemento principal es LIBROS, del que dependen uno o más (+) elementos LIBRO. La segunda línea sirve para especificar que el elemento LIBRO contiene tres elementos (TITULO,AUTOR,PRECIO) que se deben marcar en dicho orden. Las restantes líneas aclaran que los elementos TITULO, AUTOR y PRECIO contienen valores de cadenas de texto.

    Este sencillo DTD se guarda como libros.dtd (también se puede integrar dentro del código del propio documento XML) y es llamado desde el documento XML con la siguiente línea:

    <!DOCTYPE LIBROS SYSTEM "libros.dtd">

    c) Código XSL libros.xsl
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/">
    <HTML>
    <BODY>
    <xsl:for-each select="/LIBROS/LIBRO">
    Título:
    <FONT SIZE="2" COLOR="red" FACE="Verdana">
    <xsl:value-of select="TITULO"/><BR/>
    </FONT>
    Autor:
    <FONT SIZE="2" COLOR="blue" FACE="Verdana">
    <xsl:value-of select="AUTOR"/><BR/>
    </FONT>
    Precio:
    <FONT SIZE="2" COLOR="green" FACE="Verdana">
    <xsl:value-of select="PRECIO"/> pesetas<BR/>
    </FONT>
    </xsl:for-each>
    </BODY>
    </HTML>
    </xsl:template>
    </xsl:stylesheet>
    Otros ejemplos


    REFERENCIAS

    Curso XML - Introducción
    http://kal-el.ugr.es/~maribel/xml/introduccion/index.shtml#1

    Tutoriales XML
    http://www.it.uc3m.es/~xml/tutoriales.html

    Introducción  a XML
    http://www.vblibros.com/XML_Otros/Introducci%F3n%20a%20XML.htm

    XML, el lenguaje universal
    http://www.ramon.org/xml/articulos/intro_xml-html.htm

    XML: estándar para la estructuración e intercambio de documentos
    http://laespiral.org/documentacion/articulos/zaragoza02/index.html

    Ejemplos de archivos XML
    http://www.salnet.com.ar/inv_xml/ejercicios%20xml.htm

    Extensible Markup Language (XML) 1.0 (Second Edition)
    http://www.w3.org/TR/2000/REC-xml-20001006

    Apuntes XML
    http://www.programacion.com/cursos/apuntesxml/

    XML Schema y DTDs
    http://www.programacion.com/cursos/schemaydtd/
     



     
    Comentarios, sugerencias