Partes de un documento[]
Éste es el documento XML que vimos en el capítulo anterior:
<?xml version="1.0"?> <pelicula> Brazil <director>Terry Gilliam</director> <actores> <actor>Jonathan Pryce</actor> </actores> </pelicula> <!-- Por hacer: completar actores. -->
Podemos diferenciar tres partes. En primer lugar, el prólogo
<?xml version="1.0"?>
En el cuerpo es donde están los datos del documento:
<pelicula> Brazil <director>Terry Gilliam</director> <actores> <actor>Jonathan Pryce</actor> </actores> </pelicula>
Para terminar, el epílogo. En este caso, sólo contiene un comentario:
<!-- Por hacer: completar actores. -->
Acentos[]
¿Es posible utilizar acentos en los nombres de las etiquetas? Prueba a cargar este documento XML:
<?xml version="1.0"?> <película> Brazil <director>Terry Gilliam</director> <actores> <actor>Jonathan Pryce</actor> </actores> </película> <!-- Por hacer: completar actores. -->
Podrás comprobar que ocurre un error, causado por la etiqueta película. Este problema se soluciona modificando el prólogo del documento. En él indicamos que la tabla de caracteres a utilizar debe contener, entre otros, los acentuados:
<?xml version="1.0" encoding="iso-8859-15"?> <película> Brazil <director>Terry Gilliam</director> <actores> <actor>Jonathan Pryce</actor> </actores> </película> <!-- Por hacer: completar actores. -->
Comentarios[]
Puedes utilizar comentarios en sus documentos XML para incluir anotaciones, como en el siguiente ejemplo:
<?xml version="1.0"?> <pelicula> Brazil <director>Terry Gilliam</director> <actores> <actor>Jonathan Pryce</actor> <!--No es seguro.--> <!--<actor>Al Pacino</actor>--> </actores> </pelicula> <!-- Por hacer: completar actores. -->
Atributos[]
Es posible añadir a cada nodo información adicional. En este ejemplo, cada actor puede pertenecer a una categoría diferente (protagonista o secundario):
<?xml version="1.0"?> <pelicula> Brazil <director>Terry Gilliam</director> <actores> <actor papel="protagonista">Jonathan Pryce</actor> <actor papel="secundario">Bob Hoskins</actor> </actores> <actor/> </pelicula>
Caracteres especiales[]
El formato XML se reserva algunos caracteres para sí mismo. Es el caso del ampersand (&) o de los símobolos de apertura (<) y cierre de etiqueta (>). Así, este documento es incorrecto:
<?xml version="1.0"?> <nodo>2 > 3 < 2</nodo>
Para salvar esta dificultad es posible utilizar sustitutos:
<?xml version="1.0"?> <nodo>2 > 3 < 2</nodo>
Espacios[]
Por defecto, el analizador de XML ignora los espacios o tabuladores dentro del contenido de las etiquetas:
<?xml version="1.0"?> <actores> <actor>Jonathan Pryce</actor> <actor>Jonathan Pryce</actor> <actor>Jonathan Pryce</actor> </actores>
Para él, todos los nodos actor del documento anterior son iguales.
Ignorar partes del documento[]
Si lo deseas, puedes incluir datos en su documentos que serán ignorados por el analizador XML. Sólo es necesario que utilices la etiqueta CDATA, como en el siguiente ejemplo:
<?xml version="1.0"?> <pelicula> Brazil <director>Terry Gilliam</director> <actores> <actor>Jonathan Pryce</actor> </actores> <html> <![CDATA[ <HTML> <HEAD> <TITLE> Brazil </TITLE> </HEAD> <BODY> <H1>Brazil</H1> <B>Director:</B> Terry Gilliam<BR> <B>Protagonista:</b> Jonathan Pryce<BR> </BODY> </HTML> ]]> </html> </pelicula> <!-- Por hacer: completar actores. -->
Programas[]
Es posible crear programas que comprueben si un documento XML está bien formado. El siguiente es un ejemplo de ello:
using System; using System.Xml; namespace XML_bien_formado { class MainClass { public static void Main(string[] args) { XmlDocument xml = new XmlDocument(); try{ xml.Load("brazil.xml"); } catch(Exception e){ Console.WriteLine("Ha ocurrido un error: '{0}'", e); } } } }
Enlaces interesantes[]
Puede que encuentres interesantes los siguientes enlaces:
- Página para comprobar si un documento está bien formado o no.
- Un editor de documentos XML para Windows.
- Otro para Linux.