XML

Contenidos


Introducción

Internet ha pasado a ser parte integral de nuestras vidas, tanto a nivel domestico como a nivel empresarial, su tamaño y capacidad aumenta cada día y con él la necesidad de tener herramientas que nos permitan acceder a la red.

El objetivo es entregar una visión general acerca de XML, que es una herramienta poderosa al momento de utilizar las ventajas de internet.

Muchas empresar e instituciones utilizan este recurso, como medio de comunicación seguro, eficiente y sencillo, ya que ha demostrado lo confiable que puede llegar a ser.

XML

XML (Extensible Markup Language, Lenguaje Extensible de Marcas) es un subconjunto de SGML (Standard Generalized Markup Language), y 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.

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.

Aunque, a primera vista, un documento XML y un documento HTML puedan parecernos muy parecidos, hay una diferencia principal y es que el HTML no indica lo que se esta representando, tiene datos mal definidos con elementos de formato, mientras que el XML contiene datos que se autodefinen: describe el contenido de lo que etiquetan. por otro lado, html es restringido, ya que exiten un número finito de etiquetas que lo componen, en cambio XML, permite diseñar sus propias etiquetas con sus característcas

Aplicaciones de XML

XML puede tener tres posibles roles:

  1. Personalización de la WEB (lenguaje propio)

    Cada usuario (o grupo de usuarios) puede crear su propio lenguaje para el formato de datos y documentos, su propio vocabulario, según sus necesidades, siguiendo las reglas de XML.

  2. De contenedor de información

    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

    Para que puedan intercambiar información dos aplicaciones y puedan procesarla automáticamente.

  4. 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, una página de una multitienda en Internet que vende una serie de productos, al conectarse el cliente, obtiene el catálogo de productos, y va seleccionando sus productos, pero al seleccionar uno, no se manda al servidor, sino que a través del DOM se trata esa selección creando un nuevo nodo del árbol, 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.

Gestión de la información / conocimiento

El usuario al buscar no está interesado en leer toda la información que esta disponible en la red, incluso cuando abre un documento, solamente le interesa algunos párrafos, pero para encontrarlos debe leer todo el documento, con la correspondiente pérdida de tiempo. 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.

Estructura de 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>alguna infromación</etiqueta> (etiquetas de inicio y de termino)

<etiquetavacia/> (etiqueta vacía)



Ej. <li>HTML <b> permite <i> esto </b> </i>.

<li>En XML la <b> estructura <i> es </i> jerárquica </b>.</li>



 <xsd:attribute name= "idioma">


 <!-- comentario -->

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

<?xml version="1.0" standalone="yes"?>
<libreria>
<libro nunero="PZ3.S8195Gr6"> <cover href="grapes.gif" alt="Grapes of Wrath"/>
<titulo>The Grapes of Wrath</titulo>
<author> <apellido>Steinbeck</apellido>
<nombre>John</nombre>
</autor>
<publicacion>Viking Press</publicacion>
<año_publicacion>1939</año_publicacion>
</libro>
</libreria>

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.

Una forma rápida de entender la estructura de un documento XML es viendo un ejemplo:

<?xml version="1.0" encoding="UTF-7" ?>
<album>
        <autor>SABINA Y CIA Nos sobran los motivos</autor>
	<titulo>Joaquín Sabina</titulo>
        <formato>MP3</formato>
	<localizacion>Varios CD5 </localizacion>
</album>

Cada documento XML posee una estructura lógica y una física. La estructura lógica del documento es una serie de declaraciones, elementos, comentarios, etc. que se indican en el documento mediante marcas explícitas. La estructura física del documento es una serie de unidades llamadas entidades, es decir, indica los datos que contendrá el documento. Las estructuras lógica y física deben anidarse de forma correcta.

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(faqhypertext)CHILD(2,*)(4,*)">
Enlace al "cuarto objeto hijo" del "segundo objeto hijo" después del elemento cuyo ID sea faq-hypertext
</ULINK>

Cómo se usa 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.

Xerces

Xercer es un parser XML, es decir, un analizador del archivo XML, que establece si éste es válido.

Xercer es desarrollado y mantenido por la organización apache.

Es multiplataforma.

Xerces para Java

Característica:

100% en conformidad con XML Schema processor

Xerces2 Java Parser 2.6.2, apoya los siguientes estándares y APIs:

eXtensible Markup Language (XML) 1.0 Third Edition Recommendation

Namespaces in XML Recommendation

eXtensible Markup Language (XML) 1.1 First Edition Recommendation

Namespaces in XML 1.1 Recommendation

Document Object Model (DOM) Level 2 Core, Events, and Traversal and Range Recommendations

Simple API for XML (SAX) 2.0.1 Core, and Extensions

Java APIs for XML Processing (JAXP) 1.2

XML Schema 1.0 Structures and Datatypes Recommendations

La mayor parte de los Parser pueden trabajar de dos formas:

de forma independiente.

usándolos como librerías desde lenguajes de programación.

Xerces-J no es la excepción:

se puede usar stand-alone.

o como una librería xerces.jar, cuyos objetos se pueden instanciar desde los programas.

Conclusiones

Perspectivas futuras de XML.

Existen herranmientas que apoyan el desarrollo y la implementación de XML, entre ellas se encuentra Xercer, el cual esta implementado para ser usado con Java.

XML tiene un muy amplio campo de aplicaciones, que le permite seguir creciendo como ayuda a los usuarios de internet.

Referencias

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".

Cómo funciona XML DOM

Los archivos _XML, son enviados a la máquina cliente, en la cual, gracias a DOM, se pueden realizar las operaciones pedidas por los clientes. Una vez, que el cliente termina sus requerimientos, la información es reenviada, al servidor. Gracias a DOM, no hay pérdida, ni desorden en los datos enviados.

DTD

Un "Document type definition“, DTD, es una declaración en un documento de SGML o de XML que especifiqua apremios en la estructura del documento. Puede ser incluido dentro del archivo de documento, pero se almacena normalmente en un archivo separado de ASCII-text. La sintaxis del DTD de SGML y de DTD de XML son muy similares, pero no idénticos