Você está na página 1de 12

Suplemento tcnico del nmero 126 de NEWS/400

46
Septiembre 2002

V oyaaprenderXMLmeacompaas?
Si como profesional tenas pensado profundizar en alguna nueva tecnologa, sta debe ser, sin ms demora, XML. Aunque en estos momentos no tenga muy claro cul es el camino a seguir, si me acompaas, lo recorreremos juntos.
Por Carlos Bell

parte de lo que haba ido leyendo por Internet, la primera vez que pens seriamente que el aprender XML poda ser muy interesante desde el punto de vista de cualquier profesional de las Tecnologas de la Informacin fue cuando le el artculo XML cruza fronteras de Sharon L. Hoffman, publicado en el nmero 107 de NEWS/400. Convencido de ello, me hice el firme propsito de destinar algo de tiempo a indagar en los fundamentos de esa nueva panacea que prometa ser el XML (eXtensible Markup Language). Pero ya se sabe, cuando uno es algo perezoso y falto de voluntad, cualquier excusa es buena para posponer un buen propsito. Sin duda, para hacerme sentir culpable, en NEWS/400 volvieron a la carga, esta vez con un artculo divulgativo (francamente bueno) en donde Eduardo Ross (vicepresidente y director de investigacin y desarrollo en ASNA desde 1987) nos expona, bajo el sujestivo ttulo de XML: lenguaje para negocios electrnicos (publicado en el nmero 111) los principios y posibilidades del XML de una forma clara y sencilla. Esta vez s. Realmente estaba decidido: aprender XML sea como sea, me dije. Empec a visitar pginas web especficas y a seleccionar y copiar parte de su contenido. Megas y megas de informacin acumulndose en carpetas y subcarpetas en el disco duro de mi PC esperando, vanamente, que alguien les diera una segunda oportunidad... Y al final, as ha sido. NEWS/400 tena planificado para este nmero que los temas de portada se centraran en la utilizacin de XML en nuestra plataforma. Qu mejor ocasin para comprometerme pblicamente a destinar algo de mi tiempo personal para aprender XML como si fuera un juego? Al fin y al cabo, para dar los primeros pasos, con un simple editor de textos (como el Notepad de Microsoft), una versin actualizada de su navegador y los cientos de artculos que podemos encontrar en Internet, es suficiente. Si como profesional te habas planteado profundizar un da de esos en alguna nueva tecnologa, sta debe ser, sin lugar a dudas, XML. Son tantas sus posibilidades y tantos los esfuerzos que realiza la industria para que el XML se generalice que hasta NOVATICA, la ms decana y acadmica de las revistas informticas espaolas, le dedicar su prxima monografa. Y este mes de Septiembre, en que de forma alegrica iniciamos un nuevo curso, es el mejor momento para hacerlo. Me acompaas?

SUMARIO 1 Voy a aprender XML G me acompaas? 4 Estructura de un G documento XML 8 DTD: Document Type G Definitions
HELP400 Suplemento Tcnico 1

NMERO 46

El movimiento se demuestra andando


Conste que os he tendido una trampa. En el momento de redactar estas lneas, aparte del firme propsito de seguir adelante, no tengo muy claro cul es el camino a seguir ni los pasos que vamos a dar. Lo que si est claro es que la mejor forma de aprender a programar (una vez conocidos los fundamentos de un determinado lenguaje), es programando. Y aunque XML no sea un lenguaje de programacin propiamente dicho sino un meta-lenguaje de marcado que permite describir secuencias de datos, slo practicndolo lograremos familiarizarnos con l y con las tecnologas a l asociadas. Dicho esto, recomendarte un poco de constancia y de paciencia. El curso acaba de comenzar y durante varios meses (XML da para eso y mucho ms), a travs de HELP400 y de la informacin disponible en Internet, vamos a ser compaeros, y de paso, vamos a aprender un buen nmero de siglas y de nuevos conceptos. Eso s: tambin deberas estar algo familiarizado con el desarrollo de pginas web (HTML y CSS) y algo de JavaScript y/o VisualScript porque me propongo, partiendo de asimilar las principales caracteristicas y posibilidades del XML, llegar hasta el desarrollo de una aplicacin grfica (para el Internet Explorer) que nos permita jugar con diferentes formatos XML aceptados como estndares, como puedan ser SVG (Scalable Vector Graphics) que permite crear pginas web con grafismos y textos vectorizados o RDF (Resource Description Framework) un modelo de datos en XML que permite describir recursos y su relacin entre ellos

Por qu XML?
Suplemento Tcnico de NEWS/400
Director General Alberto C. Blanch Llangostera a.blanch@help400.com Director Antonio Monta a.montia@help400.com Coordinacin Carlos Bell Jaime Gustavo Estany Maquetacin y Produccin Complay, S.L. complay@retemail.es Impresin Policrom, S.A. EDITA Publicaciones HELP400, S.L. APTDO. DE CORREOS 8003 - 08080 Barcelona Gran Va C. Catalanes, 715, Entlo. 3 08013 - Barcelona Tel. :93.231.00.49 Fax :93.231.03.09 E-mail: suplemento@help400.com Web: http://www.help400.com
Deposito legal: B-2757-90 I.S.S.N. 1133-8067 Suscripcin: Anual (10 nmeros al ao). Espaa: 96 . Se distribuye conjuntamente con el ejemplar de NEWS/ 400, sin cargo para sus suscriptores.
Publicaciones HELP400, S.L. Se prohibe la reproduccin total o parcial del contenido sin autorizacin previa y por escrito de la empresa editora, titular del Copyright. Todos los derechos reservados en cualquier idioma. De las ideas expuestas en los artculos firmados son responsables sus autores. Corresponde al lector el asegurar que las noticias, tcnicas y procedimientos descritos son adecuados para su instalacin. Publicaciones HELP400 S.L. no asume ninguna garanta ni implcita ni explicitamente.
IBM y AS/400 son marcas registradas por International Business Machines.

Desarrollado a partir de 1996 como un subconjunto de SGML (Standard Generalized Markup Language), en 1998 XML fue adoptado como estndar por el W3C (World Wide Web Consortium). Desde entonces se ha convertido en un estndar internacionalmente reconocido que no pertenece a ninguna compaa y cuya libre utilizacin y versatilidad (figura 1) facilitar el uso efectivo de Internet en diferentes alfabetos, por personas con minusvalas fsicas y en diferente hardware (telfonos celulares, PDAs, terminales Braille, etc.). Al ser fcilmente procesable tanto por humanos como por software y separar radicalmente la informacin o contenido de su presentacin o formato, un documento XML puede tener muchas formas de presentacin (HTML, PDF, SVG, VML...) facilitando a los diseadores de pginas web hacer cambios de estilo de manera sistemtica. De hecho XML es, adems, el formato ideal para transacciones B2B, permitiendo poderosas tcnicas de extraccin y de data-mining. Los programadores tambin consideran que XML es un formato adecuado para intercambiar estructuras complejas como parmetros. Un ejemplo sera el Lenguaje de marcas de llamadas a programas (PCML) que utiliza IBM en su Toolbox para Java para hacer llamadas a programas. Tambin pueden encontrarse ejemplos de XML siendo utilizado para implementar interfaces con objetos remotos para evitar la actividad general asociada a RMI (Remote Method Invocation) y a CORBA (Common Object Request Broker Architecture). XML se est convirtiendo en una herramienta imprescindible en la caja de herramientas de cualquier programador. Como se trata de una herramienta excelente para el intercambio de datos entre distintas aplicaciones, sistemas y empresas, XML est sustituyendo rpidamente a las tradicionales

HELP400 Suplemento Tcnico

corrientes de datos EDI (como X.12) como sistema de intercambio de documentos entre empresas. Muchas industrias, empresas de servicios (compaas de seguros y bancos) y del mbito de la distribucin estn definiendo diferentes DTD (Definicin de Tipo de Documento) para los documentos clave que necesitan transmitirse entre sus miembros. El uso ms ambicioso y prometedor de XML est en los servicios web (Web Services). Esta tecnologa emergente se basa en localizar servicios, tanto si estn en Internet como en una intranet, y en ejecutarlos se encuentren donde se encuentren y sea cual sea su plataforma. XML es un puntal fundamental para la comunicacin de componentes, claves del modelo de servicios web. Es de destacar que Microsoft est adoptando en su iniciativa .NET los servicios web y XML, lo que sienta las bases para la intercomunicacin entre los sistemas .NET y J2EE. Esta increble gama de posibilidades es la que confiere a XML su potencia. El sencillo concepto en que se basa (datos que se describen a s mismos) est teniendo un profundo impacto. Ha llegado la hora de averiguar en qu puede ayudarnos.

Crditos y reconocimientos
Como para elaborar estos apuntes recurrir a textos, artculos y ejemplos recuperados de Internet (s, esos que dorman en el disco duro de mi PC o los nuevos que se van publicando), en modo alguno quisiera atribuirme su autora. Y puesto que de forma consciente pretendo dar una hogeneidad al conjunto, en muchos casos me ver obligado a entremezclar contenidos de distinta procedencia (intentando respetar al mximo el original) de la que, en la medida de lo posible, indicar sus referencias. Para establecer un primer contacto, he utilizado tres artculos: el primero, Introduccin a XML en castellano - Versin 2.0, original de Alfredo Reino (www.ibium.com/alf/xml/index.asp) preparado para el IV Simpsium Internacional de Telemtica, de la Universidad de Colima (Mxico) en Mayo de 2000 (texto parcialmente utilizado en este nmero). El segundo, Introduccin al XML - Versin 2 - 18/7/2001 original de Jaime E. Villate (http://www.laespiral.org/xml/) de la Universidad de Oporto, preparado para un Seminario sobre Programacin en entorno GNU/Linux, celebrado en la universidad Rey Juan Carlos (Madrid, Espaa). El tercero, del que me hubiera gustado incluir varios fragmentos, es el artculo de Ramn Montero, titulado XML, el lenguaje universal, que puedes hallar en sus pginas web ( http://www.ramon.org/xml/ articulos/intro_xml-html.htm). Te recomiendo la lectura de los tres, casi casi de forma inmediata. Como podrs compobar, los fundamentos de XML son muy sencillos. En las siguientes pginas veremos cmo crear documentos XML bien-formados, y que sean vlidos, es decir, que estn conformes a una determinada DTD (Document Type Definition). Prximamente veremos la creacin y uso de hojas de estilo (XSL) para la presentacin de los datos, as como diferentes aplicaciones actuales de XML. G
NMERO 46

FIGURA 1 V ersatilidad del contenido XML

HELP400 Suplemento Tcnico 3

EstructuradeundocumentoXML
XML (eXtensible Markup Language) no es, como su nombre podra sugerirnos, un lenguaje de marcado. XML es un meta-lenguaje que nos permite definir datos y lenguajes de marcado, adecuados a usos determinados.
Por Alfredo Reino

unque a primera vista un documento XML puede parecer similar a HTML, hay una diferencia sustancial. Un documento XML contiene, exclusivamente, datos que se autodefinen. Un documento HTML contiene datos mal definidos, mezclados con elementos de formato. En XML se separa el contenido de la presentacin de forma total. A un nivel muy bsico, los documentos XML son ficheros de texto plano en los que slo existen cinco caracteres especiales o reservados (los smbolos menor que < , mayor que > , las comillas dobles " , el apstrofo [o comilla simple] ' y el caracter &) que nos permiten crear las marcas (o etiquetas) que dan estructura al documento XML. Cada marca tiene un nombre que, a su vez, puede contener uno o ms atributos. Como veremos, cuando en el texto de los datos es necesario utilizar uno de los 5 caracteres especiales, para evitar que sea interpretado como un marcador se sustituye por una entidad (&lt;, &gt;, &quot;, &apos;, &amp;). FIGURA 1 Una forma de entender rpidamente la esDocumento XML: un pequeo ejemplo tructura de un documento XML, es analizando <?xml version=1.0"?> el pequeo ejemplo incluido en la figura 1. Este <!DOCTYPE MENSAJE SYSTEM "mensaje.dtd"> mismo documento, para comprender mejor su <mensaje> <remite> estructura, podra ser representado grficamen<nombre>Alfredo Reino</nombre> te como en la figura 2. <email>alf@myemail.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>

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 <LI> sera incorrecta en XML, no as la segunda:
<LI>HTML <B>permite <I>esto</B></I>. <LI>En XML la <B>estructura <I>es</I> jerrquica</B>.</LI>

FIGURA 2 Representacin grfica del ejemplo anterior


nombre: Alfredo Reino remite email: alf@ibiun.com nombre: Bill Clinton mensaje destinatario emial: president@whitehouse.gov asunto: Hola Bill texto parrafo: Hola qu tal?... ...

Etiquetas vacas. HTML permiten elementos sin contenido. Como ya veremos, XML tambin,

HELP400 Suplemento Tcnico

pero la etiqueta debe ser <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>El XML, es<BR/> ms restrictivos.</LI>

Un solo elemento raiz. Los documentos XML slo permiten un elemento raiz, del que todos los dems son 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 encerrados entre comillas simples o dobles. En el siguiente ejemplo, la primera lnea sera incorrecta en XML:
<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 para referirnos a l. Existe un conjunto 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 su utilizacin para hacer ms legible el cdigo, y en general son ignorados por los procesadores XML. En otros casos, sin embargo, resultan muy significativos, por ejemplo, para separar las palabras en un texto, o para 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 sta o de futuras versiones de esta especificacin Resumiendo, no se pueden crear nombres que empiecen con la cadena xml, XML o cualquier otra variante. Las letras y rayas se pueden usar en cualquier parte del nombre. Se pueden incluir dgitos, guiones y caracteres de puntuacin, 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, contiene los datos 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.
NMERO 46 HELP400 Suplemento Tcnico 5

La primera, o declaracin XML, define la versin de XML utilizada. 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 UTF8 (cdigo Unicode del que el ASCII es un subconjunto), UCS-2, EUC-JP, Shift_JIS, Big5, ISO-8859-1 hasta ISO-8859-7. En general, y para uso con lenguajes europeos (incluyendo el juego de caracteres especiales del castellano, utilizaremos UTF-7 o ISO-8859-1) Adems, se puede incluir una declaracin de documento autnomo (standalone), que controla qu componentes de la DTD (Definicin de Tipo de Documento) son necesarios para completar el procesado 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 qu declaracin de Tipo de Documento DTD 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 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 ciertos smbolos se utilizan las entidades predefinidas, que se explican ms adelante. Un elemento vaco, es, como su nombre indica, el que no tiene contenido; por ejemplo: <identificador DNI="23123244"/> o <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> , <br> o <img src="...">. En HTML reformulado para que sea un documento XML bien-formado, se debera utilizar <hr/>. <br/> o <img sec="..."/>

Atributos
Como ya se ha mencionado, los elementos pueden tener atributos, una manera de incorporar caractersticas o propiedades a los elementos de un documento.
6
HELP400 Suplemento Tcnico

Por ejemplo, un elemento chiste puede tener un atributo tipo y un atributo calidad, con valores como vascos y bueno, respectivamente.
<chiste tipo="vascos" calidad="bueno"> Esto es un dia que Patxi y Josu van paseando</chiste>

En el DTD se especifican los atributos que puede tener cada tipo de elemento, as como sus posibles valores y tipos. Al igual que en otras cadenas literales de XML, pueden estar marcados entre comillas simples o dobles. Cuando uno delimita el valor del atributo, el otro se puede utilizar 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> <gato raza="Persa" nombre="Micif"/>

Entidades
En XML 1.0 existen cinco entidades predefinidas (&lt;, &gt;, &quot;, &apos;, &amp;). para representar los caracteres especiales menor que < , mayor que > , las comillas dobles " , el apstrofo y el caracter & para que stos no sean interpretados por el procesador XML como un marcado.

Secciones CDATA
Existe otra construccin en XML que permite especificar datos, utilizando cualquier carcter (especial o no) sin que se interprete como marcado XML. Esta construccin, llamada CDATA (Character Data) a veces es necesaria para que los autores de documentos FIGURA 3 XML, puedan leerlo facilmente sin tener que descifrar Secciones CDATA los cdigos de entidades. <ejemplo> &lt;HTML> La figura 3 muestra un ejemplo, primero usando &lt;HEAD>&lt;TITLE>Rock &amp; Roll&lt;/TITLE>&lt;/HEAD> entidades predefinidas, y luego con un bloque CDATA. </ejemplo> Como vemos, dentro de una seccin CDATA podemos <ejemplo> poner cualquier cosa, que no ser interpretada como <![CDATA[ algo que no es. Existe una excepcin, la cadena ]]> <HTML> con la que finaliza el bloque CDATA y que no puede <HEAD><TITLE>Rock & Roll</TITLE></HEAD> ]]> utilizarse dentro de una seccin CDATA.
</ejemplo>

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 -->. Como vemos en la figura 4, se pueden introducir comentarios en cualquier lugar de la instancia o del prlogo, pero nunca dentro de las declaraciones, etiquetas, u otros comentarios. G
NMERO 46

FIGURA 4 Comentarios
<?xml version="1.0"?> <! Aqu va el tipo de documento > <!DOCTYPE EJEMPLO [ <! Esto es un comentario > <!ELEMENTO EJEMPLO (#PCDATA)> <! Eso es todo por ahora! > ]> <EJEMPLO>texto texto texto bla bla bla <! Otro comentario > </EJEMPLO> <! Ya acabamos >

HELP400 Suplemento Tcnico 7

DOCUMENT TYPE DEFINITIONS (DTDs)


Las posibles marcas o etiquetas que pueden aparecer en un documento XML y los atributos que stas pueden tener, son definidas en un fichero llamado Definicin del Tipo de Documento (en ingls Document Type Definition ) o simplemente DTD. Cada documento XML debe indicar al comienzo el DTD usado por medio de una marca <!DOCTYPE>
Por Alfredo Reino

rear 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 XML bienfomado (o conformado segn la terminologa inglesa) 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 determinada DTD. Tambin existen documentos XML sin una DTD asociada, en ese caso aunque no son vlidos, tampoco son invlidos simplemente estn bien-formados ( o no).

Dnde reside una DTD


La DTD puede residir en un fichero externo que quiz est compartido por varios (puede que miles) de documentos. O bien, como hemos visto en el Prlogo de un documento XML, puede estar contenida en el propio documento XML, como parte de su declaraFIGURA 1 cin de tipo de documento (figura 1). DTD como parte del documento XML En el ejemplo de la figura, a declaracin del tipo <!DOCTYPE etiqueta[ de documento comienza en la primera lnea y ter<!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)> <!ELEMENT nombre (#PCDATA)> mina con ]>. Las declaraciones DTD son las l<!ELEMENT calle (#PCDATA)> neas que empiezan con <!ELEMENT y se denominan <!ELEMENT ciudad (#PCDATA)> declaraciones de tipo elemento. Tambin se pue<!ELEMENT pais (#PCDATA)> <!ELEMENT codigo (#PCDATA)> den declarar atributos, entidades y anotaciones ]> para una DTD. <etiqueta> En el ejemplo anterior, todas las declaraciones <nombre>Fulano Mengnez</nombre> DTD que definen etiqueta residen dentro del pro<calle>c/ Mayor, 27</calle> pio documento. Sin embargo, la DTD se puede de<ciudad>Valderredible</ciudad> <pais>Espaa</pais> finir parcial o completamente en otro lugar (como <codigo>39343</codigo> en el ejemplo de la figura 2). </etiqueta>
FIGURA 2 DTD externa
<?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

HELP400 Suplemento Tcnico

continuacin tienen una especificacin de contenido. En los ejemplos incluidos en la figura 3 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 este elemento, el primer ejemplo XML de la figura 3 sera vlido, pero no as en el segundo. La especificacin de contenido puede ser de cuatro tipos: EMPTY - Puede no tener contenido. Suele usarse para los atributos. ANY - Puede tener cualquier contenido. No se suele utilizar, ya que es conveniente estructurar adecuadamente nuestros documentos XML. Mixed - Puede tener caracteres de tipo datos o una mezcla de caracteres y sub-elementos especificados en la especificacin de contenido mixto. Segn los ejemplos de la figura 4, el elemento definido como <enfasis> puede contener datos de carcter (#PCDATA). Y el definido como <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. 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 aceptan. Un modelo sencillo puede tener un solo tipo de sub-elemento; uno complejo, puede llegar a requerir indicadores de frecuencia. Analicemos algunos ejemplos: FIGURA 3
Declaracin de tipo de elemento

<!ELEMENT aviso (parrafo)> nos indica que <aviso> slo puede contener un solo <parrafo>. <!ELEMENT aviso (titulo, parrafo)> En este caso la coma 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 ese caso, <aviso> debe contener un <titulo> seguido de un <parrafo> o de un <grafico>. Cada partcula de contenido puede llevar un indicador de frecuencia (figura 5), que siguen directamente a un identificador general, una secuencia o una opcin, y no pueden ir precedidos por espacios en blanco. Para entenderlo, comentemos el ltimo ejemplo incuido en la figura 4. 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.
NMERO 46

<!ELEMENT receta (titulo, ingredientes, procedimiento)> --- Ejemplo XML correcto --<receta> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta> --- Ejemplo XML incorrecto --<receta> <parrafo>Esto es un prrafo</parrafo> <titulo>...</titulo> <ingredientes>...</ingredientes> <procedimiento>...</procedimiento> </receta>

FIGURA 4 Ejemplos de especificacin de contenidos


<!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT salto-de-pagina EMPTY> batiburrillo ANY> enfasis (#PCDATA)> parrafo (#PCDATA|enfasis)*> mensaje (remite, destinatario, texto)> aviso (titulo?, (parrafo+, grafico)*)>

FIGURA 5 Indicadores de frecuencia


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

HELP400 Suplemento Tcnico 9

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. 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. La figura 6 muestra un ejemplo XML y la lista de los elementos <mensaje> y <texto> de dicho ejemplo. Las declaraciones de los atributos empiezan con <!ATTLIST seguido del identificador del elemento al que se aplica el atributo. Le siguen el nombre del atributo, su tipo y su valor por defecto. En el ejemplo, 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, #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 ALT CDATE #IMPLIED>

es decir, el atributo URL es obligatorio, mientras que el ALT es opcional (y si se omite, no toma ningn valor por defecto).

Tipos de atributos
Atributos CDATA y NMTOKEN. Los atributos CDATA (character data) son los ms sencillos, y pueden contener casi cualquier cosa. Los atributos NMTOKEN (name token) son parecidos, pero slo aceptan los caracteres vlidos para nombrar cosas (letras, nmeros, puntos, guiones, subrayados y los dos puntos).
<!ATTLIST mensaje fecha CDATA #REQUIRED>

<mensaje fecha="15 de Julio de 1999">


<!ATTLIST mensaje fecha NMTOKEN #REQUIRED>

<mensaje fecha="15-7-1999"> Atributos enumerados y notaciones. Los atributos enumerados son aquellos que slo pueden contener un valor de entre un nmero reducido de opciones.
FIGURA 6 Ejemplo que ilustra la Lista de Atributos
<mensaje prioridad="urgente"> <de>Alfredo Reino</de> <a>Hans van Parijs</a> <texto idioma="holands"> Hallo Hans, hoe gaat het? ... </texto> </mensaje> <!ELEMENT <!ATTLIST <!ELEMENT <!ATTLIST mensaje (de, a, texto)> mensaje prioridad (normal | urgente) normal> texto(#PCDATA)> texto idioma CDATA #REQUIRED>

<!ATTLIST mensaje prioridad (normal | urgente) normal>

Existe otro tipo de atributo parecido, llamado de notacin (NOTATION). Este tipo permite al autor declarar que su valor se ajusta a una notacin declarada.
<!ATTLIST mensaje fecha NOTATION (ISO-DATE | EUROPEAN-DATE) #REQUIRED>

Para declarar las notaciones, se utiliza <!NOTATION con una definicin externa de la notacin. La

10

HELP400 Suplemento Tcnico

definicin externa puede ser pblica o un identificador del sistema para la documentacin de la notacin, una especificacin formal o un asistente de la aplicacin que contenga objetos representados en la notacin.
<!NOTATION HTML SYSTEM "http://www.w3.org/Markup"> <!NOTATION HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

Atributos ID e IDREF. El tipo ID permite que un atributo determinado tenga un nombre nico que podr ser referenciado por un atributo de otro elemento que sea de tipo IDREF. Por ejemplo, para implementar un sencillo sistema de hipervnculos en un documento:
<!ELEMENT <!ATTLIST <!ELEMENT <!ATTLIST enlace EMPTY> enlace destino IDREF #REQUIRED> capitulo (parrafo)*> capitulo referencia ID #IMPLIED>

En este caso, una etiqueta <enlace destino="seccion-3"> hara referencia a un <capitulo referencia="seccion-3">, de forma que el procesador XML lo podra convertir en un hipervnculo, u otra cosa.

Declaracin de entidades
Mediante el uso de entidades, XML hace referencia a objetos (ficheros, pginas web, imgenes, etc) que no deben ser analizados sintcticamente segn las reglas de XML. Se declaran en la DTD mediante el uso de <!ENTITY Una entidad puede no ser ms que una abreviatura que se utiliza como una forma corta de algunos textos. Al usar una referencia a esta entidad, el analizador sintctico reemplaza la referencia con su contenido. En otras ocasiones es una referencia a un objeto externo o local. Las entidades pueden ser: Internas o Externas, Analizadas o No analizadas, y Generales o Parmetro. Entidades generales internas. Son las ms sencillas y bsicamente son abreviaturas definidas en la seccin de la DTD del documento XML. Son siempre entidades analizadas, es decir, una vez reemplazada la referencia a la entidad por su contenido, pasa a ser parte del documento XML y como tal, es analizada por el procesador XML.
<!DOCTYPE texto[ <!ENTITY alf "Alien Life Form"> ]> <texto><titulo>Un da en la vida de un &alf;</titulo></texto>

Entidades generales externas analizadas. Las entidades externas obtienen su contenido en cualquier otro sitio del sistema, ya sea otro archivo del disco duro, una pgina web o un objeto de una base de datos. Se hace referencia al contenido de una entidad as mediante la palabra SYSTEM seguida de un URI (Universal Resource Identifier)
<!ENTITY intro SYSTEM "http://www.miservidor.com/intro.xml">

Entidades no analizadas. Evidentemente, si el contenido de la entidad corresponde a un archivo MPEG, una imagen GIF o un fichero ejecutable EXE (por ejemplo), el procesador XML no debera intentar interpretarlo como si fuera texto XML.
NMERO 46 HELP400 Suplemento Tcnico 11

Este tipo de entidades siempre son generales y externas.


<!ENTITY logo SYSTEM "http://www.miservidor.com/logo.gif">

Entidades parmetro internas y externas. Se denominan entidades parmetro a aquellas que slo pueden utilizarse en la DTD, y no en el documento XML. Se pueden utilizar para agrupar ciertos elementos del DTD que se repitan mucho. Se diferencian las entidades parmetro de las generales, en que para hacer referencia a ellas, se usa el smbolo % en lugar de & tanto como para declararlas como para usarlas.
<!DOCTYPE texto[ <!ENTITY % elemento-alf "<!ELEMENT ALF (#PCDATA)>"> ... %elemento-alf; ]>

Tambien puede ser externa:


<!DOCTYPE texto[ <!ENTITY % elemento-alf SYSTEM alf.ent> ... %elemento-alf; ]>

Ejemplo de DTD
Un ejemplo de DTD que puede servir para resumir todo lo visto hasta ahora podra definrnos un lenguaje de marcado para una base de datos de personas con direcciones e-mail. El fichero LISTIN.DTD podra ser algo as:
<?xml encoding="UTF-8"?> <!ELEMENT listin (persona)+> <!ELEMENT persona (nombre, email*, relacion?)> <!ATTLIST persona id ID #REQUIRED> <!ATTLIST persona sexo (hombre | mujer) #IMPLIED> <!ELEMENT nombre (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT relacion EMPTY> <!ATTLIST relacion amigo-de IDREFS #IMPLIED enemigo-de IDREFS #IMPLIED>

Par finalizar, y basndonos en este DTD, podramos escribir nuestro primer listn en XML:
<?xml version="1.0"?> <!DOCTYPE listin SYSTEM "LISTIN.DTD"> <listin> <persona sexo="hombre" id="ricky"> <nombre>Ricky Martin</nombre> <email>ricky@puerto-rico.com</email> <relacion amigo-de="laetitia"/> </persona> <persona sexo="mujer" id="laetitia"> <nombre>Laetitia Casta</nombre> <email>castal@micasa.com</email> </persona> </listin> G Alfredo Reino es informtico profesional y posee las certificaciones MCSE y MCSA de Microsoft y CCNA de Cisco. Su pgina web la hallars en http://www.areino.com 12

HELP400 Suplemento Tcnico

Você também pode gostar