
En esta página:
Documentos XML bien formados
En los capítulos anteriores ya hemos visto de forma superficial que una de las características que diferencian al XML del SGML es la posibilidad de no utilizar DTD.
Como ya hemos dicho en alguna ocasión, en una DTD definimos cómo va a ser un tipo de documento; es decir, definimos los elementos, atributos y entidades que lo van a formar, cómo se estructuran y relacionan. Por tanto, si en la elaboracion de nuestros documentos XML no utilizamos ninguna, el parser no puede proporcionarnos información sobre la validez de ese documento; es decir, no nos puede indicar que los elementos y atributos que utilizamos son los correctos y que se encuentran en el orden adecuado, si no que, simplemente nos indicará si ese documento está bien formado o no: es decir, si respeta las reglas sintácticas del lenguaje XML.
Según la especificación, un objeto de texto es un documento XML bien formado si:
A lo largo de este capítulo, vamos a estudiar con más detalle esta definición, de manera que tengamos claro cómo tiene que ser un documento de texto para ser aceptado por un parser como un documento XML bien formado.
La regla "document"
Cumplir la regla "document" antes mencionada significa:
El siguiente ejemplo no es un documento XML bien formado:
Mi primer documento XML
ya que no contiene ningún elemento y, por tanto, está incumpliendo la regla número 1.
En cambio:
<p>Mi primer documento XML</p>
sí que lo es, al contener al menos el elemento "p". La principal razón por la que el procesador comprueba los elementos es para determinar si el documento tiene estructura de datos que pueda extraer. Un documento que carece de elementos no tiene estructura de datos. Un documento con al menos un elemento tiene estructura de datos.
En cambio:
<p>Mi primer documento XML</p> <p>Mi primer documento XML</p>
no es un documento XML bien formado al incumplir la regla número 2, según la cual sólo puede existir un único elemento raíz.
Aunque escrito de la siguiente manera si que es correcto:
<documento> <p>Mi primer documento XML</p> <p>Mi primer documento XML</p> </documento>
al convertirse el elemento "documento" en el elemento raíz, ser único y no formar parte del contenido de ningún otro elemento.
En cambio, el siguiente ejemplo:
<documento> <p>Mi primer <destacar>documento XML</p></destacar> <p>Mi primer documento XML</p> </documento>
es incorrecto al incumplir la regla 3, ya que la etiqueta inicio del elemento "destacar" está dentro del contenido del elemento "p", pero su etiqueta final está fuera.
La forma correcta sería la siguiente:
<documento> <p>Mi primer <destacar>documento XML</destacar></p> <p>Mi primer documento XML</p> </documento>
Sintaxis correcta y restricciones de buena formación
Además de las reglas anteriormente mencionadas, para escribir documentos XML bien formados tenemos que conocer perfectamente la sintaxis del lenguaje XML y algunas restricciones que la especificación impone.
Es como en cualquier lenguaje: tenemos que conocer la sintaxis de cómo se escriben los elementos, atributos y entidades, y si las incumplimos el "parser" nos dará un error de mala formación. Algunas de estas reglas ya las hemos visto en el capítulo anterior: cómo se escriben las etiquetas de inicio y final, cómo se escriben las etiquetas de elementos vacios, cómo tenemos que escribir los atributos, etc. y es evidente que si no seguimos estas reglas el parser nos dará error.
En el siguiente
ejemplo:
<?xml version="1.0"?> <documento> <p>Mi Primer <destacar importancia=1>documento XML</destacar></p] <p>Comienza con la etiqueta <documento></p> <p>A continuacion colocamos un elemento sin contenido</p> <imagen fichero="imagen.gif"> </documento>
nos encontramos con 4 errores:
El valor del atributo "importancia", no está entrecomillado. En HTML es posible no entrecomillar el valor de los atributos, pero en XML es obligatorio.
Tendríamos que haber escrito:
...<destacar importancia="1">documento XML</destacar>...
La etiqueta final, del elemento "p" está mal cerrada. En lugar del carácter "]" , tendríamos que poner el símbolo mayor que ">".
<p>Mi Primer <destacar importancia=1>documento XML</destacar></p>
Estamos utilizando el simbolo menor que "<" sin que forme parte de la definición de una etiqueta. Al ser un carácter reservado, tendríamos que escribirlo como la entidad predefinida <.
<p>Comienza con la etiqueta <documento></p>
Estamos escribiendo el elemento vacío "imagen" de forma incorrecta. Al ser un elemento sin contenido tendríamos que haberlo escrito con una etiqueta de elemento vacío:
<imagen fichero="imagen.gif"/>
o también de la siguiente manera:
<imagen fichero="imagen.gif"></imagen>
Ambas son correctas, aunque recomendable la primera.
Por tanto, el ejemplo anterior bien
escrito:
<?xml version="1.0"?> <documento> <p>Mi Primer <destacar importancia="1">documento XML</destacar></p> <p>Comienza con la etiqueta <documento></p> <p>A continuacion colocamos un elemento sin contenido</p> <imagen fichero="imagen.gif"/> </documento>
Otras reglas que debemos tener en cuenta son:
El XML es sensible a la utilización de mayúsculas y minúsculas.
En el siguiente ejemplo:
<p>Mi primer documento XML</p> <P>Mi primer documento XML</P>
los elementos "p" y "P" son diferentes.
Hay que tener mucho cuidado con esta regla, ya que su incumplimiento es habitual y suele ser la causa de la mayor parte de los errores. Es recomendable antes de empezar a escribir un documento XML establecer un criterio al respecto.
El nombre de la etiqueta de inicio y final debe ser el mismo.
El siguiente ejemplo es incorrecto.
<p>Mi primer documento XML</P>
ya que al hacer diferencia entre mayúsculas y minúsculas, el parser no entiende ambas etiquetas como del mismo elemento.
Ningún nombre de atributo puede aparecer más de una vez en la misma etiqueta de inicio o de elemento vacío.
El siguiente ejemplo es incorrecto:
...<destacar importancia="1" importancia="2">documento XML</destacar>...
Las entidades
Todavía no hemos hablado mucho de las entidades pero, como veremos más adelante, resultan muy importantes en la elaboración y mantenimiento eficiente de nuestros documentos XML.
Una de sus funcionalidades es la de permitirnos elaborar un documento XML en "trozos"; es decir, tendremos un único documento XML, pero éste físicamente se encontrará dividido en varios ficheros.
Por el momento no vamos a profundizar más en este aspecto, pero lo que hay que tener en cuenta es que para el parser se trata de un único documento XML y que, por tanto, sus diferentes partes, aún encontrándose en ficheros diferentes, deben verificar las reglas de buena formación descritas anteriormente.
Enlaces Recomendados
Tutorial de XML de Frank Boumphrey
http://www.hypermedic.com/style/xml/xml2.htm
Esta dirección enlaza con la parte del tutorial en la que se trata el tema de los documentos XML bien formados.
Tutorial de XML de Richard Lander
http://pdbeam.uwaterloo.ca/~rlander/XML_Tutorial/wf_xml.html
En esta dirección se trata en profundidad el tema de los documentos XML bien formados.
Anotaciones: