Vous êtes sur la page 1sur 10

1/21

INTRODUCCIN A XML EN CASTELLANO


Versin 2.0 (26 Enero, 2000) - http://www.ibium.com/alf/xml/index.asp Por Alfredo Reino Romero <alf@ibium.com>

Est disponible la presentacin sobre XML impartida en el "IV Simpsium Internacional de Telemtica" , de la Universidad de Colima (Mxico) los dias 22 y 23 de Mayo de 2000.
Formato PDF (182 pginas, 1.57MB) http://www.ibium.com/alf/xml/colima2000.pdf

XML (eXtensible Markup Language) no es, como su nombre podra sugerir, un lenguaje de marcado. XML es un meta-lenguaje que nos permite definir lenguajes de marcado adecuados a usos determinados. El HTML (HyperText Markup Language) se ha convertido en el lenguaje estndar (o lingua franca) del World Wide Web. En sus casi diez aos de andadura, y tras una fase de desarrollo ms o menos turbulento, se ha confirmado como un estndar aceptado y aprobado por la industria. HTML se puede considerar una aplicacin de SGML (Standard Generalised Markup Language) Hay que desterrar ideas del tipo "XML es HTML mejorado" o "XML es HTML ampliable y personalizable." Los fundamentos de XML son muy sencillos. En las siguientes pginas aprenderemos cmo crear documentos XML bien-formados, y que adems sean vlidos, es decir, que estn conformes a una Definicin de Tipo de Documento (DTD) dada. Adems veremos la creacin y uso de hojas de estilo (XSL) para la presentacin de los datos, as como diferentes aplicaciones actuales de XML.

NDICE
Estructura de un documento XML Documentos XML bien-formados El prlogo Elementos Atributos Entidades predefinidas Secciones CDATA Comentarios Document Type Definitions (DTDs) Declaraciones tipo Elemento Modelos de contenido Declaraciones de lista de Atributos Tipos de Atributos Declaracin de Entidades Ejemplo de DTD Schemas XML Extended Style Language (XSL) XML Document Object Model y Visual Basic XML Document Object Model y Java Lenguaje de enlace XML (XLink) Enlaces de inters

ESTRUCTURA DE UN DOCUMENTO XML

http://alfredo/personal/xml/download.html

2/21

Aunque a primera vista, un documento XML puede parecer similar a HTML, hay una diferencia principal. Un documento XML contiene datos que se autodefinen, exclusivamente. Un documento HTML contiene datos mal definidos, mezclados con elementos de formato. En XML se separa el contenido de la presentacin de forma total. Una forma de entender rpidamente la estructura de un documento XML, es viendo un pequeo ejemplo:
<?xml version="1.0"?> <!DOCTYPE MENSAJE SYSTEM "mensaje.dtd"> <mensaje> <remite> <nombre>Alfredo Reino</nombre> <email>alf@ibium.com</email> </remite> <destinatario> <nombre>Bill Clinton</nombre> <email>president@whitehouse.gov</email> </destinatario> <asunto>Hola Bill</asunto> <texto> <parrafo>Hola qu tal? Hace <enfasis>mucho</enfasis> que no escribes. A ver si llamas y quedamos para tomar algo.</parrafo> </texto> </mensaje>

Este mismo documento puede ser visto de forma grfica, para comprender mejor la estructura de un documento XML.

DOCUMENTOS XML BIEN-FORMADOS


Existen un nmero de diferencias entre la sintaxis de HTML y XML. Es til, para aquellos que saben HTML y quieren usar XML, conocerlas perfectamente, para poder crear documentos XML bien-formados. Estructura jerrquica de elementos Los documentos XML deben seguir una estructura estrictamente jerrquica con lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente "incluida" en otra. Adems, los elementos con contenido, deben estar correctamente "cerrados". En el siguiente ejemplo, la primera lnea sera incorrecta en XML, no as la segunda:
<LI>HTML <B>permite <I>esto</B></I>.

http://alfredo/personal/xml/download.html

3/21

<LI>En XML la <B>estructura <I>es</I> jerrquica</B>.</LI>

Etiquetas vacas HTML permite elementos sin contenido. Como veremos ms adelante, XML tambien, pero la etiqueta debe ser de la siguiente forma: <elemento-sin-contenido/> En el siguiente ejemplo, la primera lnea sera incorrecta en XML, no as la segunda:
<LI>Esto es HTML<BR>en el que casi todo est permitido</LI> <LI>En XML, somos<BR/> ms restrictivos.</LI>

Un solo elemento raiz Los documentos XML slo permiten un elemento raiz, del que todos los dems sean parte. Es decir, la jerarqua de elementos de un documento XML bien-formado slo puede tener un elemento inicial. Valores de atributos Los valores de atributos en XML, al contrario de HTML, siempre deben estar encerradas en comillas simples ( ' ) o dobles ( " ). En el siguiente ejemplo, la primera lnea sera incorrecta en XML, no as la segunda:
<A HREF=http://www.disney.com/> <A HREF="http://www.developer.com/">

Tipo de letra, espacios en blanco El XML es sensible al tipo de letra utilizado, es decir, trata las maysculas y minsculas como caracteres diferentes. Si un elemento de XML est definido como "ELEMENTO", no podemos usar "elemento", ni "Elemento", ni "eleMENto" para referirnos a l. Existe unconjunto de caracteres denominados "espacios en blanco" que los procesadores XML tratan de forma diferente en el marcado XML. Estos caracteres son los "espacios" (Unicode/ASCII 32), tabuladores (Unicode/ASCII 9), retornos de carro (Unicode/ASCII 13) y los saltos de lnea (Unicode/ASCII 10). La especificacin XML 1.0 permite el uso de esos "espacios en blanco" para hacer ms legible el cdigo, y en general son ignorados por los procesadores XML. En otros casos, sin embargo, los "espacios en blanco" resultan muy significativos, por ejemplo, para separar las palabras en un texto, o separar lineas de prrafos diferentes. Nombrando cosas Al utilizar XML, es necesario asignar nombres a las estructuras, tipos de elementos, entidades, elementos particulares, etc. En XML los nombres tienen algunas caractersticas en comn. Segn la especificacin XML 1.0
Un nombre [empieza] con una letra o uno o ms signos de puntuacin, y [contina] con letras, dgitos, guiones, rayas, dos puntos o puntos, denominados de forma global como caracteres de nombre. Los nombres que empiezan con la cadena "xml", se reservan para la estandarizacin de esta o de futuras versiones de esta especificacin.

http://alfredo/personal/xml/download.html

4/21

Resumiendo, no se pueden crear nombres que empiecen con la cadena "xml", "xMl", "XML" o cualquier otra variante. Las letras y rayas se pueden usar en cualquier parte del nombre. Tambin se pueden incluir dgitos, guiones y caracteres de punto, pero no se puede empezar por ninguno de ellos. El resto de caracteres, como algunos smbolos, y espacios en blanco, no se pueden usar. Marcado y datos Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan "marcas". stas son las partes del documento que el procesador XML espera entender. El resto del documento que se encuentra entre las marcas, son los datos que resultan entendibles por las personas. Es sencillo reconocer las marcas en un documento XML. Son aquellas porciones que empiezan con "<" y acaban con ">", o bien, en el caso de las referencias de entidad, empiezan por "&" y acaban con ";".

EL PRLOGO
Aunque no es obligatorio, los documentos XML pueden empezar con unas lnea que describen la versin de XML, el tipo de documento, y otras cosas. La primera, o "declaracin XML", define la versin de XML usada. Hasta ahora slo hay una, la "1.0" Adems, en la "declaracin XML" especificamos la codificacin del documento, que puede ser, por ejemplo, US-ASCII (7 bits) o UTF-8 (cdigo Unicode del que el ASCII es un subconjunto), UCS-2, EUC-JP, Shift_JIS, Big5, ISO-8859-1 hasta ISO8859-7. En general, y para uso con lenguajes europeos (incluyendo el juego de caracteres especiales del castellano, usamos UTF-7 o ISO-8859-1) Adems, se puede incluir una declaracin de documento autnomo ( standalone), que controla qu componentes de la DTD son necesarios para completar el procesamiento del documento.
<?xml version="1.0" encoding="UTF-7" standalone="yes"?>

La segunda, o "declaracin de tipo de documento", define qu tipo de documento estamos creando para ser procesado correctamente. Es decir, definimos que Declaracin de Tipo de Documento (DTD Document Type Definition) valida y define los datos que contiene nuestro documento XML. En ella se define el tipo de documento, y dnde encontrar la informacin sobre su Definicin de Tipo de Documento, mediante un identificador pblico (PUBLIC) que hace referencia a dicha DTD, o mediante un Identificador Universal de Recursos (URI) precedido por la palabra SYSTEM. Ejemplos:
<!DOCTYPE MENSAJE SYSTEM "mensaje.dtd"> <!DOCTYPE HTML PUBLIC "-/ /W3C/ /DTD HTML 3.2 Final/ /EN"> <!DOCTYPE LABEL SYSTEM "http://www.empresa.com/dtds/label.dtd">

ELEMENTOS
Los elementos XML pueden tener contenido (ms elementos, caracteres, o ambos a la

http://alfredo/personal/xml/download.html

5/21
vez), o bien ser elementos vacos. Un elemento con contenido es, por ejemplo:
<nombre>Fulano Mengnez</nombre> <aviso tipo="emergencia" gravedad="mortal">Que no cunda el pnico</aviso>

Siempre empieza con una <etiqueta> que puede contener atributos o no, y termina con una </etiqueta> que debe tener el mismo nombre. Al contrario que HTML, en XML siempre se debe "cerrar" un elemento. Hay que tener en cuenta que el smbolo "<" siempre se interpreta como inicio de una etiqueta XML. Si no es el caso, el documento no estar bien-formado. Para usar ciertos smbolos se usanlas entidades predefinidas, que se explican ms adelante. Un elemento vaco, es el que no tiene contenido (claro). Por ejemplo:
<identificador DNI="23123244"/> <linea-horizontal/>

Al no tener una etiqueta de "cierre" que delimite un contenido, se utiliza la forma <etiqueta/>, que puede contener atributos o no. La sintaxis de HTML permite etiquetas vacas tipo <hr> o <img src="...">. En HTML reformulado para que sea un documento XML bien-formado, se debera usar <hr/> o <img src="..."/>

ATRIBUTOS
Como se ha mencionado antes, los elementos pueden tener atributos, que son una manera de incorporar caractersticas o propiedades a los elementos de un documento. Por ejemplo, un elemento "chiste" puede tener un atributo "tipo" y un atributo "calidad", con valores "vascos" y "bueno" respectivamente.
<chiste tipo="vascos" calidad="bueno">Esto es un dia que Patxi y Josu van paseando </chiste>

En una Definicin de Tipo de Documento, se especifican los atributos que puede tener cada tipo de elemento, as como sus valores y tipos de valor posible. Al igual que en otras cadenas literales de XML, los atributos pueden estar marcados entre comillas verticales ( ' ) o dobles ( " ). Cuando se usa uno para delimitar el valor del atributo, el otro tipo se puede usar dentro.
<verdura clase="zanahoria" longitud='15" y media'> <cita texto="'Hola buenos dias', dijo l">

A veces, un elemento con contenido, puede modelarse como un elemento vaco con atributos. Un concepto se puede representar de muy diversas formas, pero una vez elegida una, es aconsejable fijarla en el DTD, y usar siempre la misma consistentemente dentro de un documento XML.
<gato><nombre>Micif</nombre><raza>Persa</raza></gato> <gato raza="Persa">Micif</gato>

http://alfredo/personal/xml/download.html

6/21

<gato raza="Persa" nombre="Micif"/>

ENTIDADES PREDEFINIDAS
En XML 1.0, se definen cinco entidades para representar caracteres especiales y que no se interpreten como marcado por el procesador XML. Es decir, que as podemos usar el carcter "<" sin que se interprete como el comienzo de una etiqueta XML, por ejemplo. Entidad &amp; &lt; &gt; &apos; &quot; Caracter & < > ' "

SECCIONES CDATA
Existe otra construccin en XML que permite especificar datos, utilizando cualquier carcter, especial o no, sin que se interprete como marcado XML. La razn de esta construccin llamada CDATA (Character Data) es que a veces es necesario para los autores de documentos XML, poder leerlo facilmente sin tener que descifrar los cdigos de entidades. Especialmente cuando son muchas. Como ejemplo, el siguiente (primero usando entidades predefinidas, y luego con un bloque CDATA)
<parrafo>Lo siguiente es un ejemplo de HTML.</html> <ejemplo> &lt;HTML> &lt;HEAD>&lt;TITLE>Rock &amp; Roll&lt;/TITLE>&lt;/HEAD> </ejemplo> <ejemplo> <![CDATA[ <HTML> <HEAD><TITLE>Rock & Roll</TITLE></HEAD> ]]> </ejemplo>

Como hemos visto, dentro de una seccin CDATA podemos poner cualquier cosa, que no ser interpretada como algo que no es. Existe empero una excepcin, y es la cadena "]] >" con la que termina el bloque CDATA. Esta cadena no puede utilizarse dentro de una seccin CDATA.

COMENTARIOS
A veces es conveniente insertar comentarios en el documento XML, que sean ignorados por el procesado de la informacin y las reproducciones del documento. Los comentarios tienen el mismo formato que los comentarios de HTML. Es decir, comienzan por la cadena "<!--" y terminan con "-->".
<?xml version="1.0"?> <!-- Aqu va el tipo de documento --> <!DOCTYPE EJEMPLO [ <!-- Esto es un comentario -->

http://alfredo/personal/xml/download.html

7/21
<!ELEMENTO EJEMPLO (#PCDATA)> <!-- Eso es todo por ahora! --> ]> <EJEMPLO>texto texto texto bla bla bla <!-- Otro comentario --> </EJEMPLO> <!-- Ya acabamos -->

Se pueden introducir comentarios en cualquier lugar de la instancia o del prlogo, pero nunca dentro de las declaraciones, etiquetas, u otros comentarios.

DOCUMENT TYPE DEFINITIONS (DTDs)


Crear una definicin del tipo de documento (DTD) es como crear nuestro propio lenguaje de marcado, para una aplicacin especfica. Por ejemplo, podramos crear un DTD que defina una tarjeta de visita. A partir de ese DTD, tendramos una serie de elementos XML que nos permitiran definir tarjetas de visita. La DTD define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos. Los documentos XML que se ajustan a su DTD, se denominan "vlidos". El concepto de "validez" no tiene nada que ver con el de estar "bien-formado". Un documento "bienfomado" simplemente respeta la estructura y sintaxis definidas por la especificacin de XML. Un documento "bien-formado" puede adems ser "vlido" si cumple las reglas de una DTD determinada. Tambin existen documentos XML sin una DTD asociada, en ese caso no son "vlidos", pero tampoco "invlidos" simplemente "bien-formados" o no. La DTD puede residir en un fichero externo, y quiz compartido por varios (puede que miles) de documentos. O bien, puede estar contenida en el propio documento XML, como parte de su declaracin de tipo de documento. Veamos un ejemplo:
<!DOCTYPE <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT ]> etiqueta[ etiqueta (nombre, calle, ciudad, pais, codigo)> nombre (#PCDATA)> calle (#PCDATA)> ciudad (#PCDATA)> pais (#PCDATA)> codigo (#PCDATA)>

<etiqueta> <nombre>Fulano Mengnez</nombre> <calle>c/ Mayor, 27</calle> <ciudad>Valderredible</ciudad> <pais>Espaa</pais> <codigo>39343</codigo> </etiqueta>

La declaracin del tipo de documento comienza en la primera lnea y termina con "]>". Las declaraciones DTD son las lneas que empiezan con "<!ELEMENT" y se denominan declaraciones de tipo elemento. Tambin se pueden declarar atributos, entidades y anotaciones para una DTD. En el ejemplo anterior, todas las declaraciones DTD que definen "etiqueta" residen dentro del documento. Sin embargo, la DTD se puede definir parcial o completamente en otro

http://alfredo/personal/xml/download.html

8/21
lugar. Por ejemplo:
<?xml version="1.0"?> <!DOCTYPE coche SYSTEM "http://www.sitio.com/dtd/coche.dtd"> <coche> <modelo>...</modelo> ... </coche>

DECLARACIONES TIPO ELEMENTO


Los elementos son la base de las marcas XML, y deben ajustarse a un tipo de documento declarado en una DTD para que el documento XML sea considerado vlido. Las declaraciones de tipo de elemento deben empezar con "<!ELEMENT" seguidas por el identificador genrico del elemento que se declara. A continuacin tienen una especificacin de contenido. Por ejemplo:
<!ELEMENT receta (titulo, ingredientes, procedimiento)>

En este ejemplo, el elemento <receta> puede contener dentro elementos <titulo>, <ingredientes> y <procedimiento>, que, a su vez, estarn definidos tambin en la DTD y podrn contener ms elementos. Siguiendo la definicin de elemento anterior, este ejemplo de documento XML sera vlido:
<receta> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta>

Pero no este:
<receta> <parrafo>Esto es un prrafo</parrafo> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta>

La especificacin de contenido puede ser de cuatro tipos: EMPTY Puede no tener contenido. Suele usarse para los atributos.
<!ELEMENT salto-de-pagina EMPTY>

ANY Puede tener cualquier contenido. No se suele utilizar, ya que es conveniente estructurar adecuadamente nuestros documentos XML.
<!ELEMENT batiburrillo ANY>

http://alfredo/personal/xml/download.html

9/21

Mixed Puede tener caracteres de tipo datos o una mezcla de caracteres y sub-elementos especificados en la especificacin de contenido mixto.
<!ELEMENT enfasis (#PCDATA)> <!ELEMENT parrafo (#PCDATA|enfasis)*>

Por ejemplo, el primer elemento definido en el ejemplo (<enfasis>) puede contener datos de carcter (#PCDATA). Y el segundo (<parrafo>) puede contener tanto datos de carcter (#PCDATA) como sub-elementos de tipo <enfasis>. Element Slo puede contener sub-elementos especificados en la especificacin de contenido.
<!ELEMENT mensaje (remite, destinatario, texto)>

Para declarar que un tipo de elemento tenga contenido de elementos se especifica un modelo de contenido en lugar de una especificacin de contenido mixto o una de las claves ya descritas.

MODELOS DE CONTENIDO
Un modelo de contenido es un patrn que establece los sub-elementos aceptados, y el orden en que se acepta. Un modelo sencillo puede tener un solo tipo de sub-elemento:
<!ELEMENT aviso (parrafo)>

Esto indica que <aviso> slo puede contener un solo <parrafo>.


<!ELEMENT aviso (titulo, parrafo)>

La coma, en este caso, denota una secuencia. Es decir, el elemento <aviso> debe contener un <titulo> seguido de un <parrafo>.
<!ELEMENT aviso (parrafo | grafico)>

La barra vertical "|" indica una opcin. Es decir, <aviso> puede contener o bien un <parrafo> o bien un <grafico>. El nmero de opciones no est limitado a dos, y se pueden agrupar usando parntesis.
<!ELEMENT aviso (titulo, (parrafo | grafico))>

En este ltimo caso, el <aviso> debe contener un <titulo> seguido de un <parrafo> o de un <grafico>. Adems, cada partcula de contenido puede llevar un indicador de frecuencia, que siguen directamente a un identificador general, una secuencia o una opcin, y no pueden ir precedidos por espacios en blanco.

http://alfredo/personal/xml/download.html

10/21

Indicadores de frecuencia ? * + Opcional (0 o 1 vez) Opcional y repetible (0 o ms veces) Necesario y repetible (1 o ms veces)

Para entender esto, vamos a ver un ejemplo.


<!ELEMENT aviso (titulo?, (parrafo+, grafico)*)>

En este caso, <aviso> puede tener <titulo>, o no (pero slo uno), y puede tener cero o ms conjuntos<parrafo><grafico>, <parrafo><parrafo><grafico>, etc.

DECLARACIONES DE LISTA DE ATRIBUTOS


Los atributos permiten aadir informacin adicional a los elementos de un documento. La principal diferencia entre los elementos y los atributos, es que los atributos no pueden contener sub-atributos. Se usan para aadir informacin corta, sencilla y desestructurada.
<mensaje prioridad="urgente"> <de>Alfredo Reino</de> <a>Hans van Parijs</a> <texto idioma="holands"> Hallo Hans, hoe gaat het? ... </texto> </mensaje>

Otra diferencia entre los atributos y los elementos, es que cada uno de los atributos slo se puede especificar una vez, y en cualquier orden. En el ejemplo anterior, para declarar la lista de atributos de los elementos <mensaje> y <texto> haramos lo siguiente:
<!ELEMENT <!ATTLIST <!ELEMENT <!ATTLIST mensaje (de, a, texto)> mensaje prioridad (normal | urgente) normal> texto(#PCDATA)> texto idioma CDATA #REQUIRED>

Las declaraciones de los atributos empiezan con "<!ATTLIST", y a continuacin del espacio en blanco viene el identificador del elemento al que se aplica el atributo. Despues viene el nombre del atributo, su tipo y su valor por defecto. En elejemplo anterior, el atributo "prioridad" puede estar en el elemento <mensaje> y puede tener el valor "normal" o "urgente", siendo "normal" el valor por defecto si no especificamos el atributo. El atributo "idioma", pertenece al elemento texto, y puede contener datos de carcter (CDATA). Es ms, la palabra #REQUIRED significa que no tiene valor por defecto, ya que es obligatorio especificar este atributo. A menudo interesa que se pueda omitir un atributo, sin que se adopte automticamente un valor por defecto. Para esto se usa la condicin "#IMPLIED". Por ejemplo, en una supuesta DTD que defina la etiqueta <IMG> de HTML:
<!ATTLIST IMG URL CDATA #REQUIRED

http://alfredo/personal/xml/download.html

Vous aimerez peut-être aussi