Manual de XML en castellano

Ir al Indice General


En esta página:

Empezando a trabajar con XML

A lo largo de los capítulos anteriores ya hemos visto algún ejemplo de documento XML e incluso de DTD, pero sin profundizar en su sintaxis.

A lo largo de este capítulo y los siguientes vamos a estudiar con más detalle la sintaxis y los elementos que forman un documento XML y cómo podremos construirlos y comprobar que son correctos.

El siguiente Descargar fichero código:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE documento [   
<!ELEMENT documento (p | imagen | ejemplo)*>
<!ELEMENT p (#PCDATA|destacar)*>
<!ELEMENT destacar (#PCDATA)>
<!ATTLIST destacar
		importancia CDATA #REQUIRED>
<!ELEMENT imagen EMPTY>
<!ATTLIST imagen
		fichero CDATA #REQUIRED>
<!ELEMENT ejemplo (#PCDATA)>
]>
<!-- Esto es un comentario -->
<documento> 
<p>Mi Primer <destacar importancia="1">documento XML</destacar></p>
<p>Comienza con la etiqueta &lt;documento&gt;</p>
<p>A continuación colocamos un elemento sin contenido</p>
<imagen fichero="imagen.gif"/>
<p>Y ahora una etiqueta CDATA.</p>
<ejemplo>
<![CDATA[
	Aqui puedo poner lo que quiera.
] ]>
</ejemplo>
</documento>

es un ejemplo de documento XML con DTD incorporada. Para cualquier persona que esté familiarizada con el HTML esta sintaxis le resultará conocida, aunque a simple vista se pueden observar algunas diferencias importantes:

A lo largo de este capítulo estudiamos todos estos detalles y muchos más que nos permitirán ir entiendo y trabajando con documentos XML.

Marcado y datos

Un documento XML es simplemente un conjunto de cadenas de carácteres [1], en el que, al igual que en el HTML, podemos diferenciar dos tipos de construcciones: el marcado y los datos de carácter.

El texto incluido entre los carácteres menor que "<" y mayor que ">" o entre los signos "&" y ";" es el marcado. Son exactamente las partes del documento que tiene que entender el procesador de XML.

El marcado entre los signos "<" y ">" se denominan etiqueta.

El resto no son más que datos de carácter, que se corresponde con lo que sería el contenido del documento: es decir, la parte imprimible de éste.

Componentes de un documento XML

Elementos

Como podemos observar, todo documento XML se compone de uno o más elementos, cuyos límites están delimitados por etiquetas de comienzo y etiquetas de fin en el caso de que tengan contenido:


<p>Mi Primer <destacar importancia="1">documento XML</destacar></p>

y por una etiqueta de elemento vacío en el caso de ser elementos sin contenido:


<imagen fichero="imagen.gif"/>

Cada elemento puede contener datos de carácter, elementos, ambas cosas a la vez o puede que estén vacíos.

En nuestro caso:


Figura 1. Elemento con contenido

En el caso de elementos con contenido, las etiquetas de comienzo se componen del símbolo menor que "<", el nombre del tipo de elemento, los atributos si los tiene y el símbolo mayor que ">". Mientras que las etiquetas de fin se componen del símbolo menor que seguido de contrabarra "</", el nombre del tipo del elemento y el símbolo mayor que ">".


Figura 2. Elemento sin contenido

En el caso de ser un elemento vacío, sólo hay una etiqueta de elemento vacío que se forma del símbolo menor que "<", el nombre del tipo de elemento, los atributos si los tiene y se cierra con el símbolo "/>". Es importante destacar este tipo de elementos, ya que hasta ahora en el SGML y, por tanto en el HTML entendido como aplicación SGML, los elementos vacíos sólo se representaban con una etiqueta de inicio.

Atributos

Cada elemento puede tener atributos (propiedades) que nos ofrecen información sobre el elemento.

En nuestro ejemplo:


<p>Mi Primer <destacar importancia="1">documento XML</destacar></p>
 .....
<imagen fichero="imagen.gif"/>

Como podemos observar, la definición de un atributo está formada por el nombre del atributo, seguido del símbolo igual "=" y, entrecomillado, el valor del atributo.

Prólogo

Los documentos XML pueden empezar con un prólogo, en el que esencialmente se define:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE documento [   
<!ELEMENT documento (p | imagen | ejemplo)*>
<!ELEMENT p (#PCDATA|destacar)*>
<!ELEMENT destacar (#PCDATA)>
<!ATTLIST destacar
		importancia CDATA #REQUIRED>
<!ELEMENT imagen EMPTY>
<!ATTLIST imagen
		fichero CDATA #REQUIRED>
<!ELEMENT ejemplo (#PCDATA)>
]>

En la declaración XML,


<?xml version="1.0" encoding="UTF-8"?>

Indicamos:

En la declaración del tipo de documento,


<!DOCTYPE documento [   
<!ELEMENT documento (p | imagen | ejemplo)*>
<!ELEMENT p (#PCDATA|destacar)*>
<!ELEMENT destacar (#PCDATA)>
<!ATTLIST destacar
		importancia CDATA #REQUIRED>
<!ELEMENT imagen EMPTY>
<!ATTLIST imagen
		fichero CDATA #REQUIRED>
<!ELEMENT ejemplo (#PCDATA)>
]>


asociamos la DTD respecto de la cual construimos el documento. En nuestro ejemplo va implícita en el propio documento XML, aunque también puede hacerse externa al documento e incluso de una forma mixta. Si la hubiésemos escrito en un fichero "ejemplo.dtd" tendríamos que referenciarla de la siguiente manera:


<!DOCTYPE documento SYSTEM "ejemplo.dtd">

Aunque recordad que a diferencia del SGML, tenemos la posibilidad de no utilizarla.

Ambas partes del prólogo son opcionales, aunque en el caso de incluir ambas la declaración XML tiene que ir antes.

Otras construcciones de marcado.

Hasta aquí hemos visto los componentes más importantes de un documento XML. Aunque si observamos el ejemplo veremos que existen otras componentes que podemos utilizar:

Comentarios

Mediante los cuales podemos proporcionar información que el parser no tendrá en cuenta.


<!-- Esto es un comentario -->

Los comentarios empiezan con los caracteres "<!--" y terminan con "-->" y pueden colocarse en cualquier sitio excepto dentro de las declaraciones, etiquetas y otros comentarios.

CDATA

Permiten integrar texto en un documento en XML que de otra forma sería interpretado como etiquetas. Es decir, estamos introduciendo texto que luego el procesador XML va a mostrar pero no va a procesar como marcado.


<![CDATA[
	Aqui puedo poner lo que quiera.
] ]>

Los CDATA empiezan con los caracteres "<![CDATA[" y termina con "]]>".

Dentro de ellos podemos colocar cualquier cosa ya que no va a ser interpretado, con la salvedad de la cadena que indica el final de CDATA, "]]>", ya que el procesador al encontrársela entendería que la sección CDATA ya ha terminado con las nefastas consecuencias que ésto puede tener.

Entidades predefinidas

En XML existen algunos caracteres reservados que no podemos utilizar para evitar problemas con el marcado, lo que no significa que no tengan que salir en nuestros documentos XML.

En nuestro ejemplo, nos aparece el caso cuando intentamos escribir la etiqueta <documento>


<p>Comienza con la etiqueta &lt;documento&gt;</p>

Ya hemos visto que una posible solución es la utilización de CDATA, pero sin duda es poco útil cuando simplemente queremos escribir un carácter.

Las entidades predefinidas son marcas XML que se utilizan para representar estos caracteres. El XML especifica cinco entidades predefinidas:

Como podemos observar, se reconocen al ir entre los símbolos "&" y ";".

Documentos bien formados y documentos válidos

Como ya he escrito anteriormente, a diferencia del SGML, no es necesario que un documento XML esté asociado a una DTD.

El documento XML con el que empezábamos el documento, lo podíamos haber escrito de la siguiente manera:


<?xml version="1.0" encoding="UTF-8"?>
<!-- Esto es un comentario -->
<documento> 
<p>Mi Primer <destacar importancia="1">documento XML</destacar></p>
<p>Comienza con la etiqueta &lt;documento&gt;</p>
<p>A continuacion colocamos un elemento sin contenido</p>
<imagen fichero="imagen.gif"/>
<p>Y ahora una etiqueta CDATA.</p>
<ejemplo>
<![CDATA[
	Aqui puedo poner lo que quiera.
] ]>
</ejemplo>
</documento>

Y si lo pasásemos por un parser de XML no nos daría ningún error.

Por tanto, en función de si lleva asociada una DTD o no, podemos diferenciar dos tipos de documentos XML:

Evidentemente, los documentos válidos son bien formados.

Enlaces Recomendados

Breve Tutorial de XML en castellano.
http://csg.uwaterloo.ca/~dmg/tutorial/xml/
Breve y concisa introducción técnica al XML de la mano de Daniel M. German. En castellano.

Anotaciones:

[1]Procedentes del conjunto de caracteres Unicode. Es el juego internacional de carácteres estándar y que utiliza códigos de 16 bits. De esta forma es posible disponer de una tabla con 65.535 símbolos disponibles, lo que permite acomodar juegos de carácteres de las diversas lenguas sin mayores problemas.

Ir al Indice General Ir al principio de la página.


© 99, Joaquin Bravo Montero
Convertido a HTML utilizando DSSSL y el Jade de James Clark.