Introducción a XML


Contenidos

Página de Inicio

Introducción

En los últimos años, Internet ha venido aumentado su tamaño y capacidades, y se ha vuelto una herramienta cada vez más necesaria en nuestras vidas. Para poder aprovechar mejor estas capacidades, han surgido múltiples tecnologías, entre ellas XML. Este informe pretende entregar una visión general acerca de XML, con el fin de ser una introducción a este tema, el cual se presenta como una herramienta poderosa, con interesantes proyecciones a futuro.

Contenidos

¿Que es XML?

XML (Extensible Markup Language, Lenguaje Extensible de Marcas) es un subconjunto de SGML (Standard Generalized Markup Language). SGML fue desarrollado a principios de los 80. Es un estándar ISO desde 1986 y ampliamente usado para grandes proyectos de documentación. HTML (HyperText Markup Language) inició su desarrollo en 1990. El desarrollo de XML comenzó en 1996 y desde febrero de 1998 es una recomendación del W3C (World Wide Web Consortium).

Como SGML es un poco complejo, los diseñadores de XML tomaron las mejores ventajas y propiedades de SGML, guiados por su experiencia con HTML, y produjeron un lenguaje nuevo, con casi toda la potencia del SGML. Así se originó XML.

XML es un metalenguaje con el que se pueden definir otros lenguajes de etiquetas, para algún uso determinado. Lo que se hace con XML es definir la forma física y lógica en que se estructura la información dentro de un documento XML, no lo que se va a hacer con la información. Esto significa que con XML se separa el contenido de su presentación.

Los documentos XML tienen formato de texto, de manera que son interpretables por los humanos y por las máquinas.

Contenidos

¿Cómo esta estructurado XML?

Un documento XML tiene una estructura lógica y una estructura física. Físicamente, el documento está compuesto por unidades de almacenamiento llamadas entidades(entities), las que contienen tanto datos analizados(parsed) como sin analizar(unparsed). Una entidad puede hacer referencia a otra entidad, haciendo que esta se incluya en el documento. Cada documento comienza con una entidad documento, también llamada raíz. Lógicamente, el documento está compuesto de declaraciones, elementos, comentarios, referencias a caracteres e instrucciones de procesamiento, todos los cuales están indicados por una marca explícita. Las estructuras lógica y física deben encajar de manera adecuada.

Un documento bien formado es aquel documento que cumple con la especificación de XML 1.0, es decir que sea sintácticamente correcto. Un documento XML bien formado debe seguir algunas reglas básicas:

<?xml version="1.0"?> (declaración XML)

<?XML version="1.0" standalone="yes"?>

<etiqueta>algo</etiqueta> (etiquetas de inicio y de termino)

<etiquetavacia/> (etiqueta vacía)

<libro><pagina>XML<libro>12<pagina> (esto esta mal)

<nombre estado="casado" hijos="3">Juan</nombre>

<Nombre>
<nombre>
<!Entity>
<? Ejecuta>

<!-- comentario -->

Un ejemplo de un documento XML bien formado es el siguiente:

<?xml version="1.0" standalone="yes"?>
<library> <book call_no="PZ3.S8195Gr6"> <cover href="grapes.gif" alt="Grapes of Wrath"/>
<title>The Grapes of Wrath</title>
<author> <last_name>Steinbeck</last_name>
<first_name>John</first_name>
</author>
<publisher>Viking Press</publisher>
<pub_year>1939</pub_year>
</book>
</library>

Un documento bien formado, es además válido, si tiene DTD como el resto de las aplicaciones SGML. El DTD puede apuntar a un subconjunto externo que contenga declaraciones de marcas, contener directamente las declaraciones de marcas o ambos a la vez. Un documento XML válido comienza como cualquier otro archivo SGML, con una Declaración de Tipo de Documento, por ejemplo:

<?xml version="1.0"?>
<!DOCTYPE anuncio SYSTEM "http://www.foo.org/ad.dtd">
<anuncio>

<titulo>...<foto/>...</titulo>
<texto>...</texto>
</anuncio>

Dado que XML es un subconjunto de SGML, cualquier documento XML válido debe ser también un documento SGML válido.

Estructura Lógica

Cada documento XML contiene uno o más elementos, cuyos limites están delimitados por etiquetas de comienzo y de final o, en el caso de elementos vacíos, por una etiqueta de elemento vacío. Cada elemento tiene un tipo, identificado por un nombre, denominado identificador genérico, y puede tener un conjunto de especificaciones de atributos.

Cada especificación de atributo tiene un nombre y un valor. Estas especificaciones no restringen la semántica, el uso o (mas allá de la sintaxis) los nombres de los tipos de los elementos y los atributos, a excepción de los nombres que comienzan por xml, que se reservan para estandarizar etiquetas o atributos en versiones posteriores del estándar.

Sea un elemento C. Para cada elemento C en el documento, excepto para la raíz, existe un elemento P, de manera tal de que C esta contenido en P, pero no esta contenido en algún otro elemento de P. En este caso se dice que P es el padre de C y C es el hijo de P.

Estructura Física

Un documento XML puede consistir en una o mas unidades de almacenamiento, llamadas entidades. Todas estas unidades tienen contenido y todas ellas (excepto la entidad documento y el subconjunto externo del DTD) están identificadas por un nombre. Cada documento XML contiene una entidad, llamada entidad documento, que sirve como punto de partida para el procesador XML y que puede contener el documento completo.

Como hemos comentado, las entidades pueden ser analizadas o sin analizar (también llamadas procesadas o sin procesar). El contenido de una entidad analizada se conoce también como texto de reemplazo, y es parte integrante del documento. Las entidades no analizadas son recursos (tales como enlaces) cuyo contenido puede o no ser texto, o en caso de que sea texto que no sea XML.

Cada entidad no asociada tiene una notación asociada, identificada por un nombre. Aparte de obligar al procesador XML a haga accesible a la aplicación el nombre de esta notación y sus identificadores asociados, XML no proporciona ninguna otra restricción sobre el contenido de estas entidades. La forma de invocar ambos tipos de entidades es a través de su nombre, en el caso de las analizadas a través de su referencia a entidad y en el de las no analizadas a través de sus atributos de entidad.

Las entidades generales, son entidades analizadas que se usan en el interior del documento. Las entidades parametrizadas son entidades analizadas que se usan en el ámbito del DTD. Estos dos tipos de entidades usan distintos tipos de referencias y se reconocen en contextos distintos.

Los enlaces en XML.

Las habilidades de enlazado de los sistemas XML son mayores que las de HTML. Los enlaces tipo HREF existentes seguirán utilizándose, pero una nueva tecnología de enlazado basada en las lecciones aprendidas en el desarrollo de otros estándares que utilizan hipertexto, como TEI y HyTime, que permiten manejar enlaces bidireccionales y multi-caminos, así como enlaces a un fragmento de texto (en un mismo documentos) y no sólo a un único punto.

Un enlace XML puede ser un URL (enlaces tradicionales, conocidos como XLink), un Puntero Extendido (XPointer o Xptr), o ambos. Un URL en sí mismo se asume que tiene que ser un recurso (como en HTML). Si le sigue un XPointer, se asume que es un subrecurso de ese URL. Un XPointer en sí mismo se asume que se aplica al documento actual.

Un Xptr siempre está precedido de uno o más #, ?, ó |. Los símbolos # y ? significan lo mismo que en las aplicaciones HTML; el símbolo | significa que el subrecurso puede ser encontrado aplicando el Xptr al recurso, pero el método de hacer esto se deja a cargo de la aplicación.

La notación de Punteros Extendidos tiene más funcionalidad que el "fragmento de dirección" al final de algunos URLs, ya que permite, no solo referencias absolutas sino también referencias relativas dentro de un documento a partir de frases u objetos textuales, por ejemplo:

<ULINK URL="http://www.ucc.ie/faq.sgml#ID(faq-hypertext)CHILD(2,*)(4,*)">
Enlace al "cuarto objeto hijo" del "segundo objeto hijo" después del elemento cuyo ID sea faq-hypertext
</ULINK>

Contenidos

¿Cómo se usa XML?

Como trabajar con XML

Para trabajar con XML nos hace falta una serie de herramientas, que debemos que tener instaladas en nuestra máquina. La funcionalidad de estas herramientas, junto con algunos ejemplos se detallan a continuación.

Navegadores (Browsers)

El navegador o browser es el software que nos permite ver las páginas HTML y ahora también XML. Algunos de estos son el Internet Explorer 5.0, Netscape 4.01 y Mozilla. Hay que tener en cuenta que las versiones anteriores de estos navegadores no soportan XML. Antes de decidirse por alguno hay que asegurarse que soporte XML (XSL, DTDs, etc.).

Editores XML

Los editores son aquellos programas que nos permiten escribir los documentos XML. Dentro de estos nos podemos encontrar los básicos como el Notepad, o algunos más complejos, que nos permiten saber si el documento XML que escribimos está bien formado e incluso si es válido. Es decir, realizan el análisis (parsing) automáticamente. Estos editores pueden soportar también XSL, DTDs, SCHEMAS, HTML, XHTML, etc.

Parsers XML

Los parsers nos sirven para comprobar que los documentos están bien formados, que están validados por el DTD/Schema correspondiente, aplicar las hojas de estilo, etc. Es el encargado de verificar la validez de los documentos. Hay parsers escritos en múltiples lenguajes y dependiendo de la necesidad de la aplicación que se quiera desarrollar se utilizará uno u otro.

Algunos de los parsers que podemos encontrar son:

Los procesadores suelen ser programas o librerías de funciones (APIs), escritas en distintos lenguajes que hacen uso de estos parsers y que nos sirven para montar la aplicación XML.

Editores XSL

Son editores que nos van a facilitar la creación de las hojas de estilo necesarias para poder visualizar el contenido de los documentos XML en el formato que se quiera.

Contenidos

¿Para qué sirve XML?

(Aplicaciones basadas en XML)

XML puede tener tres posibles roles:

  1. De contenedor de información
  2. Cuando el XML actúa de contenedor, ignora por completo la información que contiene. Esta información irá normalmente almacenada en un elemento del tipo CDATA, y estos elementos no son analizados por el parser de XML. Imaginemos que tenemos dos aplicaciones distintas en un proyecto. Podemos establecer una gramática XML para encapsular los mensajes XML (añadiendo una cabecera al documento), y tener un programa que procese las cabeceras de los mensajes y los direccione a la aplicación correspondiente.

  3. Para definir el contenido de los mensajes
  4. Para que puedan intercambiar información dos aplicaciones y puedan procesarla automáticamente.

  5. Para describir el contenido de los mensajes

Si lo utilizamos para este rol, podemos describir el esquema de contenidos de los mensajes. Estamos definiendo recursos, lo utilizamos como metadatos, y podemos facilitar el acceso a la información a los agentes de software.

Estos son algunos roles y posibles aplicaciones del XML, pero pueden existir muchas más. La idea del XML es tener la información (definida semánticamente), la estructura de la información (DTD/Schemas), formato (XSL) y procesos (Java, VB, etc.), todo ello separado. A continuación, se comentan algunas aplicaciones del XML y tecnologías asociadas:

Descargar trabajo en el Servidor

Por medio del Modelo de Objetos de Documentos (DOM), podemos evitarle trabajo al servidor, espera al cliente y no saturar tanto la red.

Por ejemplo, en una tienda en Internet que vende una serie de productos, el cliente al conectarse, obtiene el catálogo de productos, y va seleccionando ítems, pero cada vez que selecciona uno, no se manda nada al servidor, sino que por medio del DOM se trata esa selección creando un nuevo nodo del árbol (en el cliente), y una vez que el usuario termina, puede ver su compra y verificar su pedido para mandarlo al servidor. Una vez que llegue, éste responderá al cliente el estado de su pedido.

En todo el proceso únicamente hay una primera petición al servidor para bajar la lista de productos y una segunda donde se le envía el pedido.

Este proceso se puede aplicar a tiendas on-line, bancos, etc.

Soporte a clientes

Gracias a los enlaces extendidos (XLL), si el cliente tiene algún tipo de problema, al hacer clic sobre un enlace de este tipo le puede salir una lista con la persona concreta de contacto, partes de manuales concretos donde resolver esa duda, departamentos determinados, etc.

Personalización de la WEB

Gracias al XSL/XSLT, podemos transformar y dar el formato que queramos a un mismo documento XML. Por lo tanto si sabemos, gracias a las cookies o los login, quién es el usuario/cliente que accede, podemos personalizar la vista de la información. El cliente/usuario de esta forma se sentirá más a gusto, considerará que esa información es suya y que es reconocido en la Web.

Independencia del dispositivo de acceso a la información

Otra aplicación de las XSL/XSLT. Si disponemos de un servidor WAP y otro WEB, podemos saber en función del protocolo, desde donde se nos pide la información y en función del dispositivo, mostrarle la misma información de una forma u otra.

Gestión de la información / conocimiento

En una empresa donde se maneje infinidad de información, normalmente el usuario al buscar no está interesado en leerla toda. Incluso cuando se abre un documento, solamente le interesa los tres últimos párrafos, pero para encontrarlos debe leer todo el documento, con el correspondiente tiempo invertido en ello. Pues bien, si etiquetamos la información y a cada usuario se le proporciona una serie de etiquetas de interés, se podría resaltar la información que le es interesante, frente a la que no es relevante. Las búsquedas serían mucho más rápidas y no se perdería tanto tiempo.

Buscador WEB

Si disponemos de un sitio donde toda la información se encuentre etiquetada en documentos XML, las búsquedas serían mucho más efectivas, ya que se conjuga la potencia de la búsqueda indexada junto la búsqueda semántica.

Intercambio de información

Si contratamos a una empresa un servicio de noticias, y nos facilitan la estructura de los datos que vamos a recibir (DTD/Schema), sabremos en todo momento que tipos de documentos XML estamos recibiendo, y podremos tratarlos de la forma que deseemos.

Ejemplo: Contratamos noticias internacionales, nacionales, y deportes (los resultados de los partidos del fin de semana, por ejemplo). Cuando recibimos los documentos XML sabemos en función de su cabecera a que clase pertenece y actuaremos en consecuencia: las noticias internacionales le aplicamos un estilo serio y ordenado, a las nacionales le aplicamos otro estilo e incluso hay campos que no nos interesaría visualizar y los deportes las transformamos y las procesamos por medio de otra aplicación para terminar almacenando esos datos en una base de datos. Podemos tratar esos documentos como queramos.

Contenidos

Conclusiones

De este informe podemos concluir que XML es un metalenguaje, que nos permite definir la estructura física y lógica que le damos a la información. Físicamente esta formado por texto, del cual parte es la información propiamente tal y el resto son marcas que separan y mantienen ordenada la información Lógicamente, esta estructurado en forma de árbol, con una raíz a partir de la cual se organiza la información

Entre las herramientas que podemos utilizar para trabajar con XML podemos nombrar los Browsers o Navegadores, los editores de XML, los parsers y los editores de XSL. Finalmente pudimos ver el amplio campo de aplicaciones que se presenta al trabajar con XML. Aunque esta solo ha sido una pequeña muestra de lo que es XML, se puede apreciar que, de seguir desarrollándose, esta herramienta llegará a ser de gran importancia en Internet en el futuro.

Contenidos

Referencias

Contenidos

Anexos

Ejemplo de un documento XML, y su Esquema correspondiente.

Documento XML

<documento xmlns="x-schema:personaSchema.xml"> <persona id="fulano"> <nombre>Fulano Menganez</nombre> </persona> </documento>

En el documento XML anterior, se hace referencia a un espacio de nombres (namespace) llamado "x-schema:personaSchema.xml". Es decir, se le dice al analizador sintáctico XML (parser) que valide el documento contra el Esquema "personaSchema.xml".

Esquema XML

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes"> <AttributeType name='id' dt:type='string' required='yes'/> <ElementType name='nombre' content='textOnly'/> <ElementType name='persona' content='mixed'> <attribute type='id'/> <element type='nombre'/> </ElementType> <ElementType name='documento' content='eltOnly'> <element type='persona'/> </ElementType> </Schema>

El primer elemento del Esquema define dos espacios de nombre. El primero "xml-data" le dice al analizador que esto es un Esquema y no otro documento XML cualquiera. El segundo "datatypes" permite definir el tipo de elementos y atributos utilizando el prefijo "dt".

Ejemplo Informe

Ejemplo real

Contenidos
Página de Inicio