Documentos XML


Autor: F. Javier García Castellano
Web: http://decsai.ugr.es/~fjgc, Mail: fjgc@decsai.ugr.es
IndiceInicioXML

(C) GeNeura Team
Web: http://geneura.ugr.es, Mail: tutti@geneura.ugr.es

1.- Introducción

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 está 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.

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.

2.- Documento XML "bien formado"

Todos los documentos XML deben estar bien formado, lo que significa que se debe cumplir lo siguiente:

Según la especificación de XML del W3C, un documento XML está bien formado si:

Cumplir la regla "document" antes mencionada significa:

3.- Estructura jerárquica de los elementos

Los documentos XML deben tener una estructura jerárquica con lo que respecta a las etiquetas que delimitan sus elementos. Esto significa que los elementos deben estar correctamente anidados y que los elementos no se pueden solapar entre ellos. Además los elementos con contenido deben estar correctamente cerrados.

Ejemplo incorrecto:

<?xml version="1.0" ?>

 <nombre>Richal

Ejemplo correcto:

<?xml version="1.0" ?>

 <nombre>Richal </nombre>

Sólo puede haber un elemento raiz, en el que están contenidos todos los demás, es decir, la jerarquía de elementos XML sólo puede tener un elemento inicial.

Ejemplo incorrecto:

<?xml version="1.0" ?>

 <nombre>Richal</nombre>
 <email>richal@ejemplo.com</email>

Ejemplo correcto:

<?xml version="1.0" ?>
<alumnos>
 <nombre>Richal</nombre>
 <email>richal@ejemplo.com</email>
</alumnos>

4.- Tipos de letra y fines de línea

El XML, a diferencia del HTML, es "case sensitive", es decir, trata a las mayúsculas y las minúsculas como caracteres diferentes. Si un elemento de XML está definido como "Elemento", no podemos usar "elemento" para referirnos a él:

Ejemplo con Case sensitive y solapamiento.

<?xml version="1.0" ?>
<alumnos>

 <Nombre>Richal</nombre>
 <email>richal@ejemplo.com</email>

 <nombre>Chicho</Nombre>
 <email>chicho@ejemplo.com</email>

</alumnos>

En la edición de documentos XML , por claridad, se suele organizar en varias líneas, que, normalmente, se componen de carácter de fin de línea y otro de retorno de carro. Un parser XML pasa únicamente a la aplicación el caracter de fin de línea.

5.- Espacios en blanco

En la edición de documentos XML, suele ser conveniente utilizar "espacios en blanco" (espacios, tabuladores y líneas en blanco), que normalmente son innecesarios en una versión distribuible a través de la red, aunque también existen ocasiones en los que es deseable la representación de esos "espacios en blanco" (por ejemplo, código fuente).

Para que las aplicaciones preserven la representación de esos espacios en blanco en un elemento se utiliza el atributo xml:space que puede tomar los valores preserve o default, para conservar los espacios en blanco o aplicar el tratamiento por defecto, respectivamente.

Ejemplo

<?xml version="1.0"?>
<textos>
   <cita> A quien madruga Dios le ayuda ?</cita>
   <poema xml:space="preserve"> 
                 El monte es verde,
                 el agua incolora
                 y a mi no se me ocurre una rima 
   </poema>
</textos>

6.- Nombrando cosas

Un nombre en XML empieza con una letra y continúa con letras, dígitos, rayas, dos puntos o puntos, denominados de forma global como caracteres de nombre. Los nombre que empiezan por "xml" están reservados, es decir, no se pueden crear nombres que empiecen por la cadena "xml", "XML", "Xml" o cualquier otra variante, por ejemplo, el atributo xml:space visto en el apartado anterior.

7.- Marcas y datos

Las construcciones como etiquetas, referencias de entidad y declaraciones (ya veremos que es cada cosa) se denominan "marcas". Estas son las parte del documento XML que entiende el parser. El resto del documento que se encuentra entre las marcas, son los datos entendible por las personas. Las marcas en un documento XML son aquellas partes que empiezan con "<" y que acaban con ">" (por ejemplo, <Hola>, o bien, en el caso de las referencias de entidad, empiezan por "&" y acaban con ";" (por ejemplo, &quot; para representar las comillas dobles).

8. Ejercicios

Ejercicio: Hacer un ejemplo de XML donde las diferentes etiquetas (que las puedes llamar como quieras, si es en XML) estén siguiendo una jerarquía, probar en el Internet Explorer o en el Mozilla.Si no se te ocurre ningún ejemplo, haz un documento xml sobre hoteles, donde tengas nombre, teléfono, dirección(calle y número), ciudad, pais, numero de estrellas, descripción del hotel, número habitaciones individuales, habitaciones dobles, habitaciones triples,suites.

Ejercicio: Hacer un segundo ejemplo de XML (o continua el anterior) que tenga una parte donde se preserven los espacios en blanco. Como antes, lo puedes probar en el Internet Explorer o en el Mozilla. Si sigues el ejemplo anterior mete en la parte de descripción un listado de servicios que estén tabulados.