miércoles, 21 de diciembre de 2011

introducción a XML

Esto es solo una pequeña introducción al XML para poder entender como empezar a trabajar con dicho lenguaje.


XML(eXtensible Markup Language ó Lenguaje extensible de marcas) es un conjunto de reglas que sirven para definir etiquetas semánticas para organizar un documento. Además el XML es un metalenguaje que te permite diseñar tu propio lenguaje de etiquetas. A diferencia del un lenguaje de etiquetas normal (HTML), XML te permite definir tu propio lenguaje..
Viéndolo desde un punto de vista simple y sin meternos en definiciones muy técnicas. XML nos ayuda a tener nuestra información estructurada jerárquicamente por medio de etiquetas ó Tags que nosotros mismos crearemos.
Ahora, para crear un documento XML no necesitas nada mas que un Procesador de texto simple, Ej.: Bloc de Notas y al terminar el documento solo tienes que salvarlo con la extensión xml.


Puede que oiga la expresión "XML bien formado" y se pregunte qué significa. Es bien sencillo: el código XML está bien formado cuando cumple un pequeño conjunto de reglas estrictas.
Por ejemplo, XML distingue entre mayúsculas y minúsculas. Para que los datos XML estén bien formados, las etiquetas deben utilizar una combinación idéntica de mayúsculas y minúsculas. Por eso, las etiquetas <GATO> ... </GATO> están bien formadas, pero no lo están <GATO> ... </Gato> .
No es necesario que conozca todas las reglas, pero si desea verlas, se enumeran en esta tabla. Esto es lo que debe saber: sólo se puede compartir datos XML entre usuarios y sistemas cuando los datos están bien formados. Si no están bien formados, el sistema XML se detiene (lo que significa que también se detiene su negocio).
Pero este aspecto es positivo. De verdad. Porque si no está bien formado un bloque de datos XML, es posible que también esté dañado. La capacidad inherente de XML de avisarle precozmente puede evitarle toda una serie de problemas posteriores, como tener que corregir cifras imprecisas en sus informes o eliminar datos dañados de sus archivos.

Cada cosa en su sitio: XML namespaces
Si todo el mundo fuera definiendo etiquetas por ahí, un documento acabaría siendo un caos de diferentes etiquetas procedentes de diferentes sitios, y, lo que es peor, de etiquetas con el mismo nombre que, en realidad, significan cosas diferentes. El concepto deespacios de nombres (namespaces) permite particionar el conjunto de todos los nombres posibles, de forma que se pueda definir a qué zona de ese espacio corresponde una etiqueta. De esta forma, etiquetas con el mismo nombre, pero definidas por dos autores diferentes, pueden diferenciarse en el espacio de nombres. El espacio de nombres no es esencial en todos los documentos, pero resulta útil cuando se usan etiquetas procedentes de diferentes procedencias (por ejemplo, etiquetas nuevas dentro de un documento XML), o etiquetas que se quieren procesar de forma diferente. El especio de nombres de una etiqueta se indica con un prefijo y :, como en este caso: <namespace:etiqueta>. Por ejemplo, se usan espacios de nombres en el documento siguiente (ej4.xml):
<mc:micasa xmlns:mc='http://www.geneura.org/micasa'>
  <mc:habitacion mc:id="comedor">
    <mc:mueble>aparador</mc:mueble>
    <mc:mueble>sofá "de época"</mc:mueble>
  </mc:habitacion>
</mc:micasa>
En caso de que no se especifique ningún prefijo, se puede también especificar qué espacio de nombres sigue, por defecto, el documento:

<micasa xmlns='http://www.geneura.org/micasa'>
  <habitacion id="comedor">
    <mueble>aparador</mueble>
    <mueble>sofá "de época"</mueble>
  </habitacion>
</micasa>
Conviene recordar que el prefijo de un espacio de nombres es totalmente arbitrario; lo que define un espacio de nombres es, en realidad, el URI.
En este documento, donde hemos suprimido elementos que ya se han explicado, se usa la primera línea para declarar el prefijo del espacio de nombres mediante el atributo xmlns (XML namespace). En este caso, hemos elegido el prefijo mc. A la vez, el espacio de nombres tiene que tener asignado un URI (Universal Resource Identification), que es básicamente algo que parece una dirección web, pero que no lo es. Lo único que se requiere de este URI es que sea único en el documento; además, es aconsejable que sea siempre el mismo cuando se use el mismo namespace, aunque no es estrictamente necesario, ni se puede comprobar. El que sea un URI significa, entre otras cosas, que si uno se mete en esa dirección no tiene porqué haber nada. Se trata simplemente de asignar un identificador único.
En el resto de los elementos se sigue usando el espacio de nombres. Incluso se puede usar en los atributos, si pertenecen al mismo espacio de nombres.
Un documento XML puede tener tantos espacios de nombres como se quieran declarar, y se pueden mezclar elementos de diferentes espacios de nombres, e incluso sin ningún espacio, tal como se hace en el siguiente ejemplo (ej5.xml):

<mc:micasa xmlns:mc='http://www.geneura.org/micasa'
           xmlns:mueble='http://www.geneura.org/mueble'>
  <mc:habitacion id="comedor">
    <mc:mueble>aparador</mc:mueble>
    <mc:mueble><mueble:nombre>Sofá</mueble:nombre>
    <mueble:descripcion>Peludo</mueble:descripcion>
    <mueble:tamano>Inconmensurable</mueble:tamano>
    </mc:mueble>
  </mc:habitacion>
</mc:micasa>
           
En este caso, hemos declarado dos espacios de nombres, mc y mueble, y cada uno lo usamos para una cosa diferente. Incluso un atributo,id, se usa sin espacio de nombres.
Conviene usar los espacios de nombres cuando no hay otro remedio, o cuando hay que combinar conjuntos de etiquetas XML procedentes de difefentes procedencias. En todo caso, en la documentación de un conjunto de etiquetas conviene especificar un espacio de nombres, para que se las pueda identificar fácilmente cuando aparezcan en un documento. Más adelante, cuando se vean los DTDs, los espacios de nombres servirán para especificar qué diccionario de datos usar en cada momento; un URI también identifica un diccionario de datos.

EDITORES XML

Un editor XML es una herramienta que nos ofrece facilidades para crear y editar documentos XML. Inicialmente podemos trabajar con un simple editor de textos si estamos familiarizados con la sintaxis y características del XML aunque es recomendable un editor específico. Dentro de estos, existen dos tipos principales:
Los que representan los ficheros en forma de arbol y nos permiten construir nuestro documento trabajando sobre este arbol y formularios adicionales (por ejemplo: XML Notepad de Microsoft o Visual XML).
Los que representan el documento XML en su formato original y que normalmente son editores de ficheros de texto con facilidades para XML (por ejemplo: XED o PSGML de Emacs).
Entre ambos tipos hay que diferenciar los que trabajan con una DTD y por lo tanto validan el contenido de lo que escribimos y los que simplemente nos aseguran que el documento XML es bien formado, es decir, sintácticamente correcto respecto de las especificaciones del XML.