Curso de 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 c�digo:

Un documento XML sencillo.

<?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:

  • Utilizo mis propias etiquetas. Y es que en XML no estamos trabajando con etiquetas predefinidas. Nosotros podemos crearnos nuestro propio lenguaje de etiquetas en funci�n de nuestras necesidades.

  • La sintaxis es estricta. Ya no vale dejar de entrecomillar los atributos o utilizar las may�sculas y min�sculas sin ning�n control. La especificaci�n XML determina claramente una serie de reglas que especifican cuando un documento est� bien formado.

  • La utilizaci�n de una DTD. En HTML, a pesar de ser una aplicaci�n SGML, no era obligatorio utilizarlas y, aunque para trabajar con XML tampoco ser� necesario, s� que ser� recomendable. Posiblemente no acompa�en al documento XML en su distribuci�n, pero resultan muy �tiles en la elaboraci�n y validaci�n de los documentos.

  • Los elementos vac�os. Son los elementos del tipo <img>, <hr>, etc. de HTML, en los que no existe etiqueta final al no tener contenido. Ahora, en el XML, la propia etiqueta de inicio llevar� una contrabarra al final que los identificar�.

A lo largo de este cap�tulo estudiaremos 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 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 ; corresponde al marcado. Son exactamente las partes del documento que tiene que entender el procesador de XML.

El marcado entre los signos < y > se denomina etiqueta.

El resto no son m�s que datos de car�cter, que corresponden a 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:

  • El elemento documento est� formado por otros elementos: p, imagen y ejemplo.
  • El elemento p est� formado por un contenido mixto: el elemento destacar y datos de car�cter.
  • El elemento imagen no tiene ning�n 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 ">".

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:

  • El elemento destacar va caracterizado con el atributo importancia, que nos indicar� el grado de relevancia de su contenido.
  • El elemento imagenva caracterizado con el atributo fichero, donde indicaremos el archivo que contiene la imagen.
<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:

  • Una declaraci�n XML
  • Una declaraci�n de tipo de documento
<?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:

  • Informaci�n sobre la versi�n de XML que estamos utilizando. Por el momento s�lo puede ser la versi�n 1.0.
  • Informaci�n sobre el tipo de codificaci�n de car�cteres que estamos utilizando. En nuestro caso es el c�digo ASCII de 7 bits, que es un subconjunto del c�digo Unicode denominado UTF-8. No hubiese sido necesario declararlo, ya que es el que los parsers manejan por defecto.El XML soporta los siguientes esquemas de codificaci�n:
    • UTF-8
    • UTF-16
    • ISO-10646-UCS-2
    • ISO-10646-UCS-4
    • ISO-8859-1 a -9
    • ISO-2022-JP
    • Shift_JIS
    • EUC-JP

Para que no tengamos problemas con nuestros documentos XML y podamos incluir tranquilamente acentos, y dem�s s�mbolos propios de nuestra lengua es recomendable que comencemos nuestra declaraci�n XML de la siguiente manera:

<?xml version="1.0" encoding="ISO-8859-1"?>

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 debemos recordar que a diferencia del SGML, tenemos la posibilidad de no utilizarla.

Ambas partes del pr�logo son opcionales pero 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. Se todos modos, si observamos el ejemplo veremos que existen otros 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 etiqueta. Es decir, estamos introduciendo texto que luego el procesador XML va a mostrar pero que 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, "]]>",debido a 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:

  • &amp; para el &
  • &lt; para el <
  • &gt; para el >
  • &apos; para el '
  • &quot; para el "

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

.�Documentos bien formados y documentos v�lidos

Como ya hemos mencionado 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 este cap�tulo,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:

  • V�lidos, aquellos que siguen las reglas de una DTD espec�fica.
  • Bien formados (well-formed), que no tienen necesariamente una DTD asociada, pero siguen las reglas del XML al pie de la letra.

Evidentemente, los documentos v�lidos son bien formados.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO