- Introducción a XML
XML, siglas en inglés de eXtensible Markup
Language ('lenguaje de marcas extensible'), es un metalenguaje
extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Es una
simplificación y adaptación del SGML y permite definir la gramática de lenguajes específicos (de
la misma manera que HTML
es a su vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un
lenguaje en particular, sino una manera de definir lenguajes para diferentes
necesidades, de ahí que se le denomine metalenguaje1
. Algunos de estos lenguajes que usan XML para su definición son XHTML, SVG, MathML.
-
Características
propias, etiquetas
Los documentos XML son fáciles de crear. En este ejemplo se utiliza XML para describir un parte meteorológico. Este documento se puede guardar con una extensión de XML, por ejemplo Tiempo.xml.
<reporte-clima>
<fecha>March 25, 1998</fecha>
<hora>08:00</hora>
<area>
<departamento>MVD</ departamento >
<ciudad>Montevideo</ciudad>
<pais>Uruguay</pais>
</area>
<medidas>
<cielo>parcialmente nublado </cielo>
<temperatura>16</temperatura>
<viento>
<direccion>SO</direccion>
<velocidad>16</velocidad>
</viento>
<h-indice>51</h-indice>
<humedad>87</humedad>
<visibilidad>10</visibilidad>
<uv-indice>1</uv-indice>
</medidas>
</reporte-clima>
En lugar de describir el orden y la disposición de la presentación de los
datos, las etiquetas indican qué significa cada elemento de datos (si es un
elemento <fecha>, un elemento <area>, etc.). Cualquier receptor de
estos datos puede descodificar el documento y utilizarlo para sus propios fines.
-
Herramientas
de edición
Son programas
que nos facilitan la edición de documentos XML, su validación, etc.
Como los archivos XML son documentos de texto plano
pueden crearse con cualquier programa de edición, por simple que sea. Con todo,
es más fácil crear los documentos con editores específicos para este propósito.
El uso de editores no específicos puede tener sentido
si se quiere hacer una edición rápida en un documento y, además, tienen la
ventaja de que se encuentran en todos los sistemas operativos, pero tienen
carencias importantes ya que no reconocen el documento XML como tal, por tanto,
no nos pueden dar soporte.
Para escribir documentos XML sin errores se necesita
un editor específico que nos ayudará a validar el XML contra un DTD o un
esquema y forzar así estructuras XML válidas. Ahondaremos en esto más adelante.
Un editor XML debe ser quien de proporcionarnos las siguientes funcionalidades:
- Añadir etiquetas de cierre automáticamente
- Forzar la escritura de un documento XML bien formado, es decir, haciendo cumplir las reglas de sintaxis de XML.
- Verificar el XML contra un DTD o esquema
- Resaltar las etiquetas y sintaxis del XML mediante colores
Algunas
herramientas libres para la edición de documentos XML son las siguientes: XML Copy
Editor, Quanta
Plus o Bluefish.
-
Elaboración
de documentos XML bien formados
Todos los
documentos XML deben estar bien formado,
lo que significa que se debe cumplir lo siguiente:
- Si no se utiliza DTD, el documento debe comenzar con un Declaración de Documento Standalone
- Todas las etiquetas deben estar balanceadas: esto es, todos los elementos que contengan datos de tipo carácter deben tener etiquetas de principio y fin
- Todos los valores de los atributos deben ir entrecomillados (el carácter comilla simple [el apóstrofe] puede utilizarse si el valor contiene caracteres comillas dobles, y viceversa): si necesitas ambos, utiliza ' y "
- Cualquier elemento VACÍO (p.e. aquellos que no tienen etiqueta final como <IMG>, <HR>, y <BR> y otros de HTML) deben terminar con '/>' o debes hacerlos no VACÍOS añadiéndoles una etiqueta de fin.
- No debe haber etiquetas aisladas (< ó &) en el texto (p.e. debe darse como < y &), y la secuencia ]]> debe darse como ]]> si no ocurre esto como final de una sección marcada como CDATA;
- Los elementos deben anidar dentro de sí sus propiedades (no se deben sobreponer etiquetas, como en el resto de SGML);
- Los ficheros bien-formados sin-DTD pueden utilizar atributos en sus elementos, pero éstos deben ser todos del tipo CDATA, por defecto. El tipo CDATA (character DATA) son caracteres..
Según la
especificación de XML del W3C, un documento XML está bien formado si:
- Tomado como un todo, cumple la regla denominada "document".
- Respeta todas las restricciones de buena formación dadas en la especificicación.
- Cada una de las entidades analizadas que se referencia directa o indirectamente en el documento está bien formada.
Cumplir la
regla "document" antes mencionada significa:
- Que continene uno o más elementos.
- Hay exactamente un elemento, llamado raíz, o elemento documento, del cual ninguna parte aparece en el contenido de ningún otro elemento.
- Para el resto de elementos, si la etiqueta de comienzo está en el contenido de algún otro elemento, la etiqueta de fin está en el contenido del mismo elemento. Es decir, los elementos delimitados por etiquetas de principio y final se anidan adecuadamente mutuamente.
- Estructura y Sintaxis.
La
información es estructurada cuando compone de partes bien definidas, y que esas
partes se componen a su vez de otras partes. Entonces se tiene un árbol de
trozos de información. Ejemplos son un tema musical, que se compone de
compases, que están formados a su vez por notas. Estas partes se llaman elementos,
y se las señala mediante etiquetas.
Una etiqueta
consiste en una marca hecha en el documento, que señala una porción de éste
como un elemento. Un pedazo de información con un sentido claro y definido. Las
etiquetas tienen la forma <nombre>, donde nombre es el nombre del elemento que se
está señalando.
A
continuación se muestra un ejemplo para entender la estructura de un documento
XML:
<?xml version="1.0"
encoding="UTF-8" ?>
<!DOCTYPE
Edit_Mensaje SYSTEM "Edit_Mensaje.dtd">
<Edit_Mensaje>
<Mensaje>
<Remitente>
<Nombre>Nombre
del remitente</Nombre>
<Mail>
Correo del remitente </Mail>
</Remitente>
<Destinatario>
<Nombre>Nombre
del destinatario</Nombre>
<Mail>Correo
del destinatario</Mail>
</Destinatario>
<Texto>
<Asunto>
Este es mi documento con una estructura muy sencilla
no contiene atributos ni entidades...
</Asunto>
<Parrafo>
Este es mi documento con una estructura muy sencilla
no contiene atributos ni entidades...
</Parrafo>
</Texto>
</Mensaje>
</Edit_Mensaje>
Aquí está el
ejemplo de código del DTD del documento «Edit_Mensaje.dtd»:
<?xml version="1.0" encoding="ISO-8859-1"
?>
<!-- Este es el DTD de Edit_Mensaje -->
<!ELEMENT Mensaje (Remitente, Destinatario, Texto)*>
<!ELEMENT Remitente (Nombre, Mail)>
<!ELEMENT Nombre (#PCDATA)>
<!ELEMENT Mail (#PCDATA)>
<!ELEMENT Destinatario (Nombre, Mail)>
<!ELEMENT Nombre (#PCDATA)>
<!ELEMENT Mail (#PCDATA)>
<!ELEMENT Texto (Asunto, Parrafo)>
<!ELEMENT Asunto (#PCDATA)>
<!ELEMENT Parrafo (#PCDATA)>
-
Utilización
de espacios de nombres en XML.
Un espacio de nombres XML es una recomendación W3C para proporcionar
elementos y atributos con nombre único en una instancia XML. Una instancia XML
puede contener nombres de elementos o atributos procedentes de más de un
vocabulario XML. Si a cada uno de estos vocabularios se le da un espacio de nombres, se resuelve la
ambigüedad existente entre elementos o atributos que se llamen igual. Los
nombres de elementos dentro de un espacio de nombres deben ser únicos.
<?xml version="1.0"?>
<cli:cliente xmlns:cli='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/cliente'
xmlns:ped='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/pedido'>
<cli:numero_ID>1232654</cli:numero_ID>
<cli:nombre>Fulanito de Tal</cli:nombre>
<cli:telefono>99999999</cli:telefono>
<ped:pedido>
<ped:numero_ID>6523213</ped:numero_ID>
<ped:articulo>Caja de herramientas</ped:articulo>
<ped:precio>187,90</ped:precio>
</ped:pedido>
</cli:cliente>
</lang>