Un documento XML se dice "bien formado" cuando cumple una serie de reglas descritas  en  la especificación oficial de  XML v1.0. 


Podemos resumirlas en: 

  1. El documento debe tener un solo elemento raíz.
  2. Todas las etiquetas (tags) abiertas deben tener su respectivas etiquetas de cierre.
  3. XML distingue mayúsculas de minúsculas por lo que todos los elementos y atributos deben seguir la definición.
  4. Todos los elementos deben estar correctamente anidados.
  5. Los valores de los atributos deben ir entre comillas simples o dobles.
  6. Cualquier elemento Vacío debe terminar con /> o debe hacerlo no vacío añadiendo una etiqueta de cierre.
  7. No se pueden repetir atributos en un mismo elemento. Por ejemplo, si se quiere representar múltiples autores para un libro, se debe definir el autor como un elemento y no como un atributo. Como norma general, se definirán elementos para los datos que van a ser leídos por las personas y atributos para aquellos que van a ser procesados por las máquinas.

Para probar si un documento XML esta bien formado utilizaremos un analizador sintáctico (parser)

Por ejemplo:
• Internet Explorer
• Aplicación para editar XML (por ejemplo XML Spy, Oxygen, XML Copy Editor, Notepad++, etc.)
• Analizadores en linea (w3c)

 

ActividadActividades

Actividad: Descargar XML Copy Editor
Descargar XML Copy Editor en este enlace. Guárdalo e instálalo en tu equipo.

 

Actividad: Documentos XML bien formados

Corrige los errores de los siguientes documentos XML y comprueba que están bien formados utilizando XML Copy Editor, también puedes utilizar el analizador sintáctico de Internet Explorer o el de Notepad++ con el plugin XML Tools.

Cada documento contiene dos errores (dos errores del mismo tipo cuentan como uno sólo).
Si lo necesitas, puedes crear nuevas etiquetas o atributos realcionados con la información contenidada en el documento para corregir algún error.

A) Agenda

<?xml versión="1.0"   encoding="ISO-8859-1">
<agenda>
   <entrada>
     <nombre-completo>Marta Elena Zorrilla
   </entrada>
</agenda>

B) Escritora

<?html versión="1.0"   encoding="ISO-8859-1"?>
<nombre-completo>Marta Elena   Zorrilla 
</nombre-completo>>
  <direccion>
    <calle> Avda Los Castros</calle>
    <ciudad>Santander</ciudad>
    <codigo-postal>39005</codigo-postal>
    <region>Cantabria</region>
    <pais>España</pais>
  </direccion>
  <tel   preferente="true"> 942201363</tel>
  <correo-e   href="Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo."></correo-e>

C) Películas

<?xml version="1.0" encoding="UTF-8"?>
<pelicula>
  <titulo>Con faldas y a lo loco</titulo>
  <director>Billy Wilder</director>
</pelicula>
<pelicula>
  <director>Leo McCarey</director>
  <titulo>Sopa de ganso</titulo>
</pelicula>
<autor />barto</autor>

D) Deportistas

<?xml version="1.0" encoding="UTF-8"?>
<deportistas>
  <deportista>
    <deporte Atletismo />
    <nombre>Jesse Owens</nombre>
  <deportista>
    <deporte Natación />
    <nombre>Mark Spitz</nombre>
  </deportista>
</deportistas>

E) Texto

<?xml version="1.0" encoding="UTF-8"?>
<texto>
  <Titulo>XML explicado a los niños</titulo>
  <párrafo>El <abreviatura>XML</abreviatura>define cómo crear 
  lenguajes de marcas.</párrafo>
  <párrafo>Las marcas se añaden a un documento de texto 
  para añadir información.</párrafo>
  <http://>www.example.org</http://>
</texto>

F) Información Geográfica

<?xml version="1.0" encoding="UTF-8"?>
<geografia mundial>
  <pais>
    <pais>España</pais>
    <continente>Europa</continente>
    <capital>Madrid</capital>
  </pais>
</geografia mundial>


G) Programas

<?xml version="1.0" encoding="UTF-8"?>
<programas>
  <programa nombre="Firefox" licencia="GPL" licencia="MPL" />
  <programa nombre="OpenOffice.org" licencia=LGPL />
  <programa nombre="Inkscape" licencia="GPL" />
</programas>

H) Mundiales de fútbol

<?xml version="1.0" encoding="UTF-8"?>
<mundiales-de-futbol>
  <mundial>
    <pais="España" />
    <1982 />
  </mundial>
</mundiales-de-futbol>

I) Medios de transporte

<?xml version="1.0" encoding="UTF-8"?>
<mediosDeTransporte>
  <bicicleta velocidad="v<100km/h" />
  <patinete velocidad maxima="50 km/h"
</mediosDeTransporte>