Un documento XML es similar a una página web, salvo que los nombres de las etiquetas y atributos no son los del HTML.
<?xml version="1.0" encoding="UTF-8"?>
<paises>
<pais>
<nombre>España</nombre>
<capital>Madrid</capital>
</pais>
<pais>
<nombre>Francia</nombre>
<capital>París</capital>
</pais>
</paises>
Por supuesto, la misma información se puede guardar con otra estructura:
<?xml version="1.0" encoding="UTF-8"?>
<paises>
<pais nombre="España" capital="Madrid" />
<pais nombre="Francia" capital="París" />
</paises>
<apartado>
</apartado>
<linea />
<profesor nombre="Bartolomé" apellidos="Sintes Marco" />
<!-- Esto es un comentario -->
La declaración xml indica el juego de caracteres del documento. El juego de caracteres que se utiliza en este curso es UTF-8:
<?xml version="1.0" encoding="UTF-8"?>
En XML, el nombre del juego de caracteres se debe escribir en mayúsculas (UTF-8 en vez de utf-8).
La declaración xml también indica la versión XML utilizada. Aunque existe la versión XML 1.1, la versión más común sigue siendo la versión XML 1.0.
Se pueden utilizar otros juegos de caracteres, como ISO-8859-1 (Europeo occidental):
<?xml version="1.0" encoding="ISO-8859-1"?>
Es importante que el juego de caracteres que aparece en la declaración sea el juego de caracteres en que realmente está guardado el documento, porque si no el procesador XML puede tener problemas leyendo el documento.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Este texto está guardado como UTF-8 y declara que es UTF-8 -->
<prueba>
<texto>á é í ó ú</texto>
</prueba>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Este texto está guardado como UTF-8 sin BOM y declara que es ISO-8859-1 -->
<prueba>
<texto>á é í ó ú</texto>
</prueba>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Este texto está guardado como ISO-8859-1 y declara que es ISO-8859-1 -->
<prueba>
<texto>á é í ó ú</texto>
</prueba>
<?xml version="1.0" encoding="UTF-8"?>
<!-- Este texto está guardado como ISO-8859-1 y declara que es UTF-8 -->
<prueba>
<texto>á é í ó ú</texto>
</prueba>
Nota:
En el caso del documento guardado como UTF-8 pero que declara ser ISO-8859-1, también le afecta que haya o no marca de orden de bytes (BOM).
La marca de orden de bytes son los primeros caracteres de un fichero UTF. Estos caracteres indican:
En el caso de los archivos UTF-8, la marca de orden de bytes son los tres caracteres EF BB BF (que corresponden a los caracteres ). Pero como en un archivo UTF-8 no se necesita indicar el orden de los bytes, puesto que cada carácter ocupa solamente un byte, la marca es opcional, es decir, que hay archivos UTF-8 con BOM y archivos UTF-8 sin BOM. Los editores (como Eclipse PDT) no muestran estos caracteres y, suelen respetarlos al guardar de nuevo al archivo, pero otros (como el Bloc de notas de Windows) guardan los archivos UTF-8 siempre con BOM. Para ver esos caracteres, se puede utilizar un editor hexadecimal, que muestra todos los caracteres sin excepción.
El ejemplo siguiente muestra como los navegadores son capaces de mostrar correctamente el contenido si el archivo está guardado como UTF-8 con BOM. El motivo es que aunque el archivo declara que está guardado como ISO-8859-1, el navegador detecta el BOM y deduce que se trata de un archivo UTF-8:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Este texto está guardado como UTF-8 con BOM y declara que es ISO-8859-1 -->
<prueba>
<texto>á é í ó ú</texto>
</prueba>
El ejemplo siguiente muestra como los navegadores no son capaces de mostrar correctamente el contenido si el archivo está guardado como UTF-8 sin BOM. El archivo se muestra como si fuera ISO-8859-1 ya que el archivo declara que está guardado como ISO-8859-1 y el navegador no detecta un BOM que le indique que realmente está guardado como UTF-8:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<?xml-stylesheet type="text/xsl" href="estilo.xsl" ?>
Referencia a entidad | Carácter |
---|---|
< | < |
> | > |
& | & |
' | ' |
" | " |
<?xml version="1.0" encoding="UTF-8"?>
<prueba>
<texto>Los caracteres < y & no pueden escribirse
si no es como comienzo de marcas</texto>
</prueba>
<?xml version="1.0" encoding="UTF-8"?>
<prueba>
<texto>Los caracteres < y & no pueden escribirse
si no es como comienzo de marcas</texto>
</prueba>
Como las entidades de carácter del HTML, para hacer referencia a una entidad se escribe sin espacios intermedios el carácter "&", el nombre de la entidad y el carácter ";". Al abrir el documento XML el procesador sustituye la referencia a la entidad por su valor. Por ejemplo:
Un documento XML debe estar bien formado, es decir debe cumplir las reglas de sintaxis de la recomendación XML. Para que un documento esté bien formado, al menos debe cumplir los siguientes puntos:
Si un documento XML no está bien formado, no es un documento XML. Los procesadores XML deben rechazar cualquier documento que contenga errores.
Un documento XML bien formado puede ser válido. Para ser válido, un documento XML debe:
Existen varios formas de definir una gramática para documentos XML, las más empleadas son :