Está en la página 1de 12

NMERO 46 HELP400 Suplemento Tcnico 1

Suplemento tcnico del nmero 126 de NEWS/400


46
Septiembre 2002
Voy a aprender XML me acompaas?
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
A
parte de l o que hab a i do l eyendo por I nternet, l a pri mera vez que pens
ser i amente que el apr ender XML pod a ser muy i nter esante desde el
punto de vi sta de cual qui er profesi onal de l as Tecnol og as de l a I nforma-
ci n fue cuando l e el art cul o XML cruza fronteras de Sharon L. Hoffman,
publ i cado en el nmero 107 de NEWS/400. Convenci do de el l o, me hi ce el fi rme
propsi to de desti nar al go de ti empo a i ndagar en l os fundamentos de esa nue-
va panacea que promet a ser el XML (eXtensible Markup Language). Pero ya se
sabe, cuando uno es al go perezoso y fal to de vol untad, cual qui er excusa es bue-
na para posponer un buen propsi to.
Si n duda, para hacerme senti r cul pabl e, en NEWS/400 vol vi eron a l a carga,
esta vez con un ar t cul o di vul gati vo (fr ancamente bueno) en donde Eduardo
Ross (vi cepr esi dente y di r ector de i nvesti gaci n y desar r ol l o en ASNA desde
1987) nos expon a, bajo el sujesti vo t tul o de XML: lenguaje para negocios
electrnicos (publ i cado en el nmero 111) l os pri nci pi os y posi bi l i dades del
XML de una forma cl ara y senci l l a.
Esta vez s . Real mente estaba deci di do: apr ender XML sea como sea, me
di je. Empec a vi si tar pgi nas web espec fi cas y a sel ecci onar y copi ar parte de
su conteni do. Megas y megas de i nfor maci n acumul ndose en car petas y
subcarpetas en el di sco duro de mi PC esperando, vanamente, que al gui en l es
di era una segunda oportuni dad...
Y al fi nal , as ha si do. NEWS/400 ten a pl ani fi cado para este nmero que l os
temas de portada se centraran en l a uti l i zaci n de XML en nuestra pl ataforma.
Qu mejor ocasi n para comprometerme pbl i camente a desti nar al go de mi
ti empo personal para aprender XML como si fuera un juego? Al fi n y al cabo,
para dar l os pri meros pasos, con un si mpl e edi tor de textos (como el Notepad de
Mi crosoft), una versi n actual i zada de su navegador y l os ci entos de art cul os
que podemos encontrar en I nternet, es sufi ci ente.
Si como profesi onal te hab as pl anteado profundi zar un d a de esos en al gu-
na nueva tecnol og a, sta debe ser, si n l ugar a dudas, XML. Son tantas sus
posi bi l i dades y tantos l os esfuerzos que real i za l a i ndustri a para que el XML se
gener al i ce que hasta NOVATI CA, l a ms decana y acadmi ca de l as r evi stas
i nformti cas espaol as, l e dedi car su prxi ma monograf a. Y este mes de Sep-
ti embre, en que de forma al egri ca i ni ci amos un nuevo curso, es el mejor mo-
mento para hacerl o. Me acompaas?
G
G
G
SUMARI O
1 Voy a aprender XML
me acompaas?
4 Estructura de un
documento XML
8 DTD: Document Type
Definitions
2 HELP400 Suplemento Tcnico
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 nmer os al ao). Espaa: 96 .
Se di str i buye conjuntamente con el ejempl ar de NEWS/
400, si n car go par a sus suscr i ptor es.
Publicaciones HELP400, S.L. Se prohi be l a repro-
ducci n total o par ci al del conteni do si n autor i zaci n pr evi a
y por escr i to de l a empr esa edi tor a, ti tul ar del Copyr i ght.
Todos l os der echos r eser vados en cual qui er i di oma.
De l as i deas expuestas en l os ar t cul os fi r mados son r espon-
sabl es sus autor es. Cor r esponde al l ector el asegur ar que
l as noti ci as, tcni cas y pr ocedi mi entos descr i tos son ade-
cuados para su i nstal aci n. Publ i caci ones HELP400 S.L.
no asume ni nguna gar ant a ni i mpl ci ta ni expl i ci tamente.
I BM y AS/400 son mar cas r egi str adas por I nter nati onal Busi ness Machi nes.
El movimiento se demuestra andando
Conste que os he tendi do una trampa. En el momento de redactar estas l neas,
apar te del fi r me pr opsi to de segui r adel ante, no tengo muy cl ar o cul es el
cami no a segui r ni l os pasos que vamos a dar. Lo que si est cl ar o es que l a
mejor forma de aprender a programar (una vez conoci dos l os fundamentos de
un determi nado l enguaje), es programando. Y aunque XML no sea un l enguaje
de programaci n propi amente di cho si no un meta-l enguaje de marcado que per-
mi te descri bi r secuenci as de datos, sl o practi cndol o l ograremos fami l i ari zar-
nos con l y con l as tecnol og as a l asoci adas.
Di cho esto, r ecomendar te un poco de constanci a y de paci enci a. El cur so
acaba de comenzar y durante vari os meses (XML da para eso y mucho ms), a
tr avs de HELP400 y de l a i nfor maci n di sponi bl e en I nter net, vamos a ser
compaeros, y de paso, vamos a aprender un buen nmero de si gl as y de nuevos
conceptos. Eso s : tambi n deber as estar al go fami l i ari zado con el desarrol l o de
pgi nas web (HTML y CSS) y al go de JavaScr i pt y/o Vi sual Scr i pt por que me
pr opongo, par ti endo de asi mi l ar l as pr i nci pal es car acter i sti cas y posi bi l i dades
del XML, l l egar hasta el desarrol l o de una apl i caci n grfi ca (para el I nternet
Expl orer) que nos permi ta jugar con di ferentes formatos XML aceptados como
estndares, como puedan ser SVG (Scalable Vector Graphics) que permi te crear
pgi nas web con grafi smos y textos vectori zados o RDF (Resource Description
Framework) un model o de datos en XML que per mi te descr i bi r r ecur sos y su
rel aci n entre el l os
Por qu XML?
Desar r ol l ado a par ti r de 1996 como un subconjunto de SGML
(Standard Generalized Markup Language), en 1998 XML fue
adoptado como estndar por el W3C (World Wide Web Consor-
tium). Desde entonces se ha converti do en un estndar i nterna-
ci onal mente reconoci do que no pertenece a ni nguna compa a y
cuya l i bre uti l i zaci n y versati l i dad (figura 1) faci l i tar el uso
efecti vo de I nter net en di fer entes al fabetos, por per sonas con
mi nusval as f si cas y en di fer ente har dwar e (tel fonos cel ul a-
res, PDAs, termi nal es Brai l l e, etc.).
Al ser fci l mente procesabl e tanto por humanos como por soft-
war e y separ ar r adi cal mente l a i nfor maci n o conteni do de su
pr esentaci n o for mato, un documento XML puede tener mu-
chas formas de presentaci n (HTML, PDF, SVG, VML...) faci l i -
tando a l os di seadores de pgi nas web hacer cambi os de esti l o
de maner a si stemti ca. De hecho XML es, adems, el for mato
i deal par a tr ansacci ones B2B, per mi ti endo poder osas tcni cas
de extracci n y de data-mining.
Los pr ogr amador es tambi n consi der an que XML es un for-
mato adecuado par a i nter cambi ar estr uctur as compl ejas como
parmetros. Un ejempl o ser a el Lenguaje de marcas de l l ama-
das a programas (PCML) que uti l i za I BM en su Tool box para
Java par a hacer l l amadas a pr ogr amas. Tambi n pueden en-
contrarse ejempl os de XML si endo uti l i zado para i mpl ementar
i nterfaces con objetos remotos para evi tar l a acti vi dad general
as oci ada a RMI (Remote Method I nvocati on) y a CORBA
(Common Object Request Broker Architecture). XML se est con-
vi rti endo en una herrami enta i mpresci ndi bl e en l a caja de he-
r r ami entas de cual qui er pr ogr amador.
Como se tr ata de una her r ami enta excel ente par a el i nter-
cambi o de datos entre di sti ntas apl i caci ones, si stemas y empre-
sas, XML est susti tuyendo r pi damente a l as tr adi ci onal es
NMERO 46 HELP400 Suplemento Tcnico 3
corri entes de datos EDI (como X.12) como si stema de i ntercambi o de documen-
tos entr e empr esas. Muchas i ndustr i as, empr esas de ser vi ci os (compa as de
segur os y bancos) y del mbi to de l a di str i buci n estn defi ni endo di fer entes
DTD (Defi ni ci n de Ti po de Documento) para l os documentos cl ave que necesi -
tan transmi ti rse entre sus mi embros.
El uso ms ambi ci oso y prometedor de XML est en l os servi ci os web (Web
Services). Esta tecnol og a emergente se basa en l ocal i zar servi ci os, tanto si es-
tn en I nternet como en una i ntranet, y en ejecutarl os se encuentren donde se
encuentren y sea cual sea su pl ataforma. XML es un puntal fundamental para
l a comuni caci n de componentes, cl aves del model o de servi ci os web. Es de des-
tacar que Mi cr osoft est adoptando en su i ni ci ati va .NET l os ser vi ci os web y
XML, l o que si enta l as bases para l a i ntercomuni caci n entre l os si stemas .NET
y J2EE.
Esta i ncre bl e gama de posi bi l i dades es l a que confi ere a XML su potenci a. El
senci l l o concepto en que se basa (datos que se descri ben a s mi smos) est te-
ni endo un pr ofundo i mpacto. Ha l l egado l a hor a de aver i guar en qu puede
ayudar nos.
Crditos y reconocimientos
Como para el aborar estos apuntes recurri r a textos, art cul os y ejempl os re-
cuper ados de I nter net (s , esos que dor m an en el di sco dur o de mi PC o l os
nuevos que se van publ i cando), en modo al guno qui si era atri bui rme su autor a.
Y puesto que de forma consci ente pretendo dar una hogenei dad al conjunto, en
muchos casos me ver obl i gado a entremezcl ar conteni dos de di sti nta proceden-
ci a (i ntentando respetar al mxi mo el ori gi nal ) de l a que, en l a medi da de l o
posi bl e, i ndi car sus referenci as.
Par a establ ecer un pr i mer contacto, he uti l i zado tr es ar t cul os: el pr i mer o,
Introduccin a XML en castellano - Versin 2.0, ori gi nal de Alfredo Reino
(www.ibium.com/alf/xml/index.asp) preparado para el I V Si mpsi um I nterna-
ci onal de Tel emti ca, de l a Uni versi dad de Col i ma (Mxi co) en Mayo de 2000
(texto parci al mente uti l i zado en este nmero).
El segundo, Introduccin al XML - Versin 2 - 18/7/2001 ori gi nal de J ai-
me E. Villate (http://www.laespiral.org/xml/) de l a Uni versi dad de Oporto, pre-
parado para un Semi nari o sobre Programa-
ci n en entorno GNU/Li nux, cel ebrado en l a
uni ver si dad Rey Juan Car l os (Madr i d, Es-
paa).
El tercero, del que me hubi era gustado i n-
cl ui r vari os fragmentos, es el art cul o de Ra-
mn Montero, ti tul ado XML, el lenguaje
universal, que puedes hal l ar en sus pgi -
n as web (http://www.ramon.org/xml/
articulos/intro_xml-html.htm).
Te recomi endo l a l ectura de l os tres, casi
casi de forma i nmedi ata.
Como podr s compobar, l os fundamentos
de XML son muy senci l l os. En l as si gui entes
pgi nas ver emos cmo cr ear documentos
XML bi en-for mados, y que sean vl i dos, es
deci r, que estn conformes a una determi na-
da DTD (Document Type Definition).
Prxi mamente veremos l a creaci n y uso
de hojas de esti l o (XSL) para l a presentaci n
de l os datos, as como di fer entes apl i caci o-
nes actual es de XML. G
FIGURA 1
Versatilidad del contenido XML
4 HELP400 Suplemento Tcnico
Estructura de un documento XML
XML (eXtensi bl e 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
A
unque a pri mera vi sta un documento XML puede parecer si mi l ar a HTML,
hay una di ferenci a sustanci al . Un documento XML conti ene, excl usi va-
mente, datos que se autodefi nen. Un documento HTML conti ene datos
mal defi ni dos, mezcl ados con el ementos de formato. En XML se separa el conte-
ni do de l a presentaci n de forma total .
A un ni vel muy bsi co, l os documentos XML son fi cheros de texto pl ano en
l os que sl o exi sten ci nco caracteres especi al es o reservados (l os s mbol os me-
nor que < , mayor que > , l as comi l l as dobl es " , el apstrofo [o comi l l a
si mpl e] ' y el caracter &) que nos permi ten crear l as marcas (o eti quetas)
que dan estructura al documento XML. Cada marca ti ene un nombre que, a su
vez, puede contener uno o ms atri butos.
Como veremos, cuando en el texto de l os datos es necesari o uti l i zar uno de l os
5 caracteres especi al es, para evi tar que sea i nterpretado como un marcador se
susti tuye por una enti dad (&l t;, &gt;, &quot;,
&apos;, &amp;).
Una for ma de entender r pi damente l a es-
tructura de un documento XML, es anal i zando
el pequeo ejempl o i ncl ui do en l a figura 1.Este
mi smo documento, par a compr ender mejor su
estructura, podr a ser representado grfi camen-
te como en l a figura 2.
Documentos XML bien-formados
Exi sten un nmero de di ferenci as entre l a si n-
taxi s de HTML y XML. Es ti l , para aquel l os
que saben HTML y qui er en usar XML, cono-
cer l as per fectamente, par a poder cr ear docu-
mentos XML bi en-for mados.
Estructura j errqui ca de el ementos. Los do-
cumentos XML deben segui r una estructura es-
tri ctamente jerrqui ca con l o que respecta a l as
eti quetas que del i mi tan sus el ementos. Una eti -
queta debe estar cor r ectamente incluida en
otra. Adems, l os el ementos con conteni do, de-
ben estar correctamente cerrados. En el si gui en-
te ejempl o, l a pri mera l nea <LI > ser a i ncorrec-
ta en XML, no as l a segunda:
<LI>HTML <B>permite <I>esto</B></I>.
<LI>En XML la <B>estructura <I>es</I> jerr-
quica</B>.</LI>
Eti quetas vac as. HTML permi ten el ementos
si n conteni do. Como ya veremos, XML tambi n,
FIGURA 2
Representacin grfica del ejemplo anterior
nombre: Alfredo Reino
email: alf@ibiun.com
nombre: Bill Clinton
emial: president@whitehouse.gov
parrafo: Hola qu tal?...
...
remite
destinatario
asunto: Hola Bill
texto
mensaje
FIGURA 1
Documento XML: un pequeo ejemplo
<?xml version=1.0"?>
<!DOCTYPE MENSAJE SYSTEM "mensaje.dtd">
<mensaje>
<remite>
<nombre>Alfredo Reino</nombre>
<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>
NMERO 46 HELP400 Suplemento Tcnico 5
pero l a eti queta debe ser <el emento-si n-conteni do/> En el si gui ente ejempl o, l a
pri mera l nea ser a i ncorrecta en XML, no as l a segunda:
<LI>Esto es HTML<BR>en el que casi todo est permitido</LI>
<LI>El XML, es<BR/> ms restrictivos.</LI>
Un sol o el emento rai z. Los documentos XML sl o permi ten un el emento rai z,
del que todos l os dems son par te. Es deci r, l a jer ar qu a de el ementos de un
documento XML bi en-formado sl o puede tener un el emento i ni ci al .
Val ores de atri butos. Los val ores de atri butos en XML, al contrari o de HTML,
si empre deben estar encerrados entre comi l l as si mpl es o dobl es. En el si gui ente
ejempl o, l a pri mera l nea ser a i ncorrecta en XML:
<A HREF=http://www.disney.com/>
<A HREF="http://www.developer.com/">
Ti po de l etra, espaci os en bl anco. El XML es sensi bl e al ti po de l etr a uti l i za-
do, es deci r, trata l as mayscul as y mi nscul as como caracteres di ferentes. Si
un el emento de XML est defi ni do como ELEMENTO, no podemos usar el e-
mento, ni El emento para referi rnos a l .
Exi ste un conjunto de caracteres denomi nados espaci os en bl anco que l os
procesadores XML tratan de forma di ferente en el marcado XML. Estos carac-
ter es son l os espaci os (Uni code/ASCI I 32), tabul ador es (Uni code/ASCI I 9),
retornos de carro (Uni code/ASCI I 13) y l os sal tos de l nea (Uni code/ASCI I 10).
La especi fi caci n XML 1.0 permi te su uti l i zaci n para hacer ms l egi bl e el
cdi go, y en general son i gnorados por l os procesadores XML. En otros casos, si n
embar go, r esul tan muy si gni fi cati vos, por ejempl o, par a separ ar l as pal abr as
en un texto, o para separar l i neas de prrafos di ferentes.
Nombrando cosas. Al uti l i zar XML, es necesar i o asi gnar nombr es a l as es-
tructuras, ti pos de el ementos, enti dades, el ementos parti cul ares, etc. En XML
l os nombres ti enen al gunas caracter sti cas en comn.
Segn l a especi fi caci n 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
Resumi endo, no se pueden crear nombres que empi ecen con l a cadena xml ,
XML o cual qui er otr a var i ante. Las l etr as y r ayas se pueden usar en cual -
qui er parte del nombre. Se pueden i ncl ui r d gi tos, gui ones y caracteres de puntua-
ci n, per o no se puede empezar por ni nguno de el l os. El r esto de car acter es,
como al gunos s mbol os, y espaci os en bl anco, no se pueden usar.
Marcado y datos. Las construcci ones como eti quetas, referenci as de enti dad y
decl araci ones se denomi nan marcas. stas son l as partes del documento que
el procesador XML espera entender. El resto del documento que se encuentra
entre l as marcas, conti ene l os datos entendi bl es por l as personas.
Es senci l l o reconocer l as marcas en un documento XML. Son aquel l as porci o-
nes que empi ezan con < y acaban con >, o bi en, en el caso de l as referenci as
de enti dad, empi ezan por &y acaban con ; .
El prlogo
Aunque no es obl i gatori o, l os documentos XML pueden empezar con unas l nea
que descri ben l a versi n de XML, el ti po de documento, y otras cosas.
6 HELP400 Suplemento Tcnico
La pri mera, o decl araci n XML, defi ne l a versi n de XML uti l i zada. Hasta
ahora sl o hay una, l a 1.0. Adems, en l a decl araci n XML especi fi camos l a
codi fi caci n del documento, que puede ser, por ejempl o, US-ASCI I (7 bi ts) o UTF-
8 (cdi go Uni code del que el ASCI I es un subconjunto), UCS-2, EUC-JP, Shi ft_JI S,
Bi g5, I SO-8859-1 hasta I SO-8859-7. En general , y para uso con l enguajes euro-
peos (i ncl uyendo el juego de caracteres especi al es del castel l ano, uti l i zaremos
UTF-7 o I SO-8859-1)
Adems, se puede i ncl ui r una decl ar aci n de documento autnomo (stand-
alone), que control a qu componentes de l a DTD (Defi ni ci n de Ti po de Docu-
mento) son necesari os para compl etar el procesado del documento.
<?xml version="1.0" encoding="UTF-7" standalone="yes"?>
La segunda, o decl araci n de ti po de documento, defi ne qu ti po de docu-
mento estamos creando para ser procesado correctamente. Es deci r, defi ni mos
qu decl araci n de Ti po de Documento DTD val i da y defi ne l os datos que con-
ti ene nuestro documento XML.
En el l a se defi ne el ti po de documento, y dnde encontr ar l a i nfor maci n
sobre su Defi ni ci n de Ti po de Documento, medi ante un i denti fi cador pbl i co
(PUBLI C) que hace referenci a a di cha DTD, o medi ante un I denti fi cador Uni -
versal de Recursos (URI ) precedi do por l a pal abra SYSTEM. Ejempl os:
<!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 el ementos XML pueden tener conteni do (ms el ementos, caracteres, o am-
bos a l a vez), o bi en ser el ementos vac os. Un el emento con conteni do es, por
ejempl o:
<nombre>Fulano Mengnez</nombre>
<aviso tipo="emergencia" gravedad="mortal">Que no cunda el pnico</aviso>
Si empr e empi eza con una <etiqueta> que puede contener atr i butos o no, y
termi na con una </etiqueta> que debe tener el mi smo nombre. Al contrari o que
HTML, en XML si empre se debe cerrar un el emento.
Hay que tener en cuenta que el s mbol o < si empr e se i nter pr eta como
i ni ci o de una eti queta XML. Si no es el caso, el documento no estar bi en-for-
mado. Para ci ertos s mbol os se uti l i zan l as enti dades predefi ni das, que se expl i -
can ms adel ante.
Un el emento vac o, es, como su nombre i ndi ca, el que no ti ene conteni do; por
ejempl o:
<identificador DNI="23123244"/> o <linea-horizontal/>
Al no tener una eti queta de ci erre que del i mi te un conteni do, se uti l i za l a
for ma <etiqueta/>, que puede contener atr i butos o no. La si ntaxi s de HTML
per mi te eti quetas vac as ti po <hr > , <br > o <i mg sr c="...">. En HTML
reformul ado para que sea un documento XML bi en-formado, se deber a uti l i zar
<hr/>. <br/> o <i mg sec="..."/>
Atributos
Como ya se ha menci onado, l os el ementos pueden tener atri butos, una manera
de i ncorporar caracter sti cas o propi edades a l os el ementos de un documento.
NMERO 46 HELP400 Suplemento Tcnico 7
Por ejempl o, un el emento chi ste puede tener un atri buto ti po y un atri buto
cal i dad, con val ores como vascos y bueno, respecti vamente.
<chiste tipo="vascos" calidad="bueno">
Esto es un dia que Patxi y Josu van paseando</chiste>
En el DTD se especi fi can l os atri butos que puede tener cada ti po de el emen-
to, as como sus posi bl es val ores y ti pos. Al i gual que en otras cadenas l i teral es
de XML, pueden estar marcados entre comi l l as si mpl es o dobl es. Cuando uno
del i mi ta el val or del atri buto, el otro se puede uti l i zar dentro.
<verdura clase="zanahoria" longitud=15" y media>
<cita texto="Hola buenos dias, dijo l">
A veces, un el emento con conteni do, puede model arse como un el emento va-
c o con atr i butos. Un concepto se puede r epr esentar de muy di ver sas for mas,
pero una vez el egi da una, es aconsejabl e fi jarl a en el DTD, y usar si empre l a
mi sma consi stentemente 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 exi sten ci nco enti dades pr edefi ni das (&l t;, &gt;, &quot;, &apos;,
&amp;). para representar l os caracteres especi al es menor que < , mayor que
> , l as comi l l as dobl es " , el apstrofo y el caracter & para que stos no
sean i nterpretados por el procesador XML como un marcado.
Secciones CDATA
Exi ste otra construcci n en XML que permi te especi fi car datos, uti l i zando cual -
qui er carcter (especi al o no) si n que se i nterprete como marcado XML. Esta
construcci n, l l amada CDATA (Character Data) a ve-
ces es necesari a para que l os autores de documentos
XML, puedan l eerl o faci l mente si n tener que desci frar
l os cdi gos de enti dades.
La figura 3 muestr a un ejempl o, pr i mer o usando
enti dades predefi ni das, y l uego con un bl oque CDATA.
Como vemos, dentro de una secci n CDATA podemos
poner cual qui er cosa, que no ser i nter pr etada como
al go que no es. Exi ste una excepci n, l a cadena ]]>
con l a que fi nal i za el bl oque CDATA y que no puede
uti l i zarse dentro de una secci n CDATA.
Comentarios
A veces es conveni ente i nsertar comentari os en el do-
cumento XML, que sean i gnorados por el procesado de
l a i nformaci n y l as reproducci ones del documento. Los
comentari os ti enen el mi smo formato que l os comen-
tar i os de HTML. Es deci r, comi enzan por l a cadena
<!-- y termi nan con -->.
Como vemos en l a figura 4, se pueden i ntr oduci r
comentar i os en cual qui er l ugar de l a i nstanci a o del
pr l ogo, per o nunca dentr o de l as decl ar aci ones, eti -
quetas, u otros comentari os. G
FIGURA 3
Secciones CDATA
<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>
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 >
8 HELP400 Suplemento Tcnico
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
C
rear una defi ni ci n del ti po de documento (DTD) es como crear nuestro
pr opi o l enguaje de mar cado, par a una apl i caci n espec fi ca. Por ejem-
pl o, podr amos crear un DTD que defi na una tarjeta de vi si ta. A parti r
de ese DTD, tendr amos una seri e de el ementos XML que nos permi ti r an defi -
ni r tarjetas de vi si ta.
La DTD defi ne l os ti pos de el ementos, atr i butos y enti dades per mi ti das, y
puede expr esar al gunas l i mi taci ones par a combi nar l os. Los documentos XML
que se ajustan a su DTD, se denomi nan vl i dos. El concepto de val i dez no
ti ene nada que ver con el de estar bi en-formado. Un documento XML bi en-
fomado (o conformado segn l a termi nol og a i ngl esa) si mpl emente respeta l a
estr uctur a y si ntaxi s defi ni das por l a especi fi caci n de XML. Un documento
bi en-formado puede, adems, ser vl i do si cumpl e l as regl as de una determi -
nada DTD. Tambi n exi sten documentos XML si n una DTD asoci ada, en ese
caso aunque no son vl i dos , tampoco son i nvl i dos si mpl emente estn
bi en-formados ( o no).
Dnde reside una DTD
La DTD puede resi di r en un fi chero externo que qui z est comparti do por va-
ri os (puede que mi l es) de documentos. O bi en, como hemos vi sto en el Prl ogo de
un documento XML, puede estar conteni da en el
propi o documento XML, como parte de su decl ara-
ci n de ti po de documento (figura 1).
En el ejempl o de l a fi gura, a decl araci n del ti po
de documento comi enza en l a pri mera l nea y ter-
mi na con ]>. Las decl ar aci ones DTD son l as l -
neas que empi ezan con <!ELEMENT y se denomi nan
decl ar aci ones de ti po el emento. Tambi n se pue-
den decl ar ar atr i butos, enti dades y anotaci ones
para una DTD.
En el ejempl o anter i or, todas l as decl ar aci ones
DTD que defi nen eti queta resi den dentro del pro-
pi o documento. Si n embargo, l a DTD se puede de-
fi ni r parci al o compl etamente en otro l ugar (como
en el ejempl o de l a figura 2).
Declaraciones tipo Elemento
Los el ementos son l a base de l as marcas XML, y
deben ajustarse a un ti po de documento decl arado
en una DTD para que el documento XML sea con-
si der ado vl i do.
Las decl ar aci ones de ti po de el emento deben
empezar con <!ELEMENT segui das por el i denti fi ca-
dor gen r i co del el emen to qu e s e decl ar a. A
FIGURA 1
DTD como parte del documento XML
<!DOCTYPE etiqueta[
<!ELEMENT etiqueta (nombre, calle, ciudad, pais, codigo)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT calle (#PCDATA)>
<!ELEMENT ciudad (#PCDATA)>
<!ELEMENT pais (#PCDATA)>
<!ELEMENT codigo (#PCDATA)>
]>
<etiqueta>
<nombre>Fulano Mengnez</nombre>
<calle>c/ Mayor, 27</calle>
<ciudad>Valderredible</ciudad>
<pais>Espaa</pais>
<codigo>39343</codigo>
</etiqueta>
<?xml version=1.0"?>
<!DOCTYPE coche SYSTEM http://www.sitio.com/dtd/coche.dtd>
<coche>
<modelo>...</modelo>
...
</coche>
FIGURA 2
DTD externa
NMERO 46 HELP400 Suplemento Tcnico 9
conti nuaci n ti enen una especi fi caci n de conteni do. En l os ejempl os i ncl ui dos
en l a figura 3 el el emento <receta> puede contener dentro el ementos <titulo>,
<ingredientes> y <procedimiento>, que, a su vez, estarn defi ni dos tambi n en
l a DTD y podrn contener ms el ementos. Si gui endo l a defi ni ci n de este el e-
mento, el pr i mer ejempl o XML de l a fi gur a 3 ser a vl i do, per o no as en el
segundo.
La especi fi caci n de conteni do puede ser de cuatro ti pos:
EMPTY - Puede no tener conteni do. Suel e usarse para l os atri butos.
ANY - Puede tener cual qui er conteni do. No se suel e uti l i zar, ya que es conve-
ni ente estructurar adecuadamente nuestros documentos XML.
Mixed - Puede tener caracteres de ti po datos o una mezcl a de caracteres y
sub-el ementos especi fi cados en l a especi fi caci n de conteni do mi xto. Segn l os
ejempl os de l a figura 4, el el emento defi ni do como <enfasis> puede contener
datos de carcter (#PCDATA). Y el defi ni do como <parrafo> puede contener tan-
to datos de carcter (#PCDATA) como sub-el ementos de ti po <enfasis>.
Element - Sl o puede contener sub-el ementos especi fi cados en l a especi fi ca-
ci n de conteni do.
Para decl arar que un ti po de el emento tenga conteni do de el ementos se especi -
fi ca un model o de conteni do en l ugar de una especi fi caci n de conteni do mi xto o
una de l as cl aves ya descri tas.
Modelos de contenido
Un model o de conteni do es un patrn que establ ece l os sub-el ementos acepta-
dos, y el orden en que se aceptan. Un model o senci l l o puede tener un sol o ti po de
sub-el emento; uno compl ejo, puede l l egar a reque-
r i r i ndi cador es de fr ecuenci a. Anal i cemos al gunos
ejempl os:
<!ELEMENT aviso (parrafo)> nos i ndi ca que <avi so>
sl o puede contener un sol o <parrafo>.
<!ELEMENT aviso (titulo, parrafo)> En este caso
l a coma denota una secuenci a. Es deci r, el el emen-
to <avi so> debe contener un <ti tul o> segui do de un
<par r afo>.
<!ELEMENT aviso (parrafo | grafico)> La barra
ver ti cal | i ndi ca una opci n. Es deci r, <avi so>
puede contener o bi en un <par r afo> o bi en un
<grafi co>. El nmero de opci ones no est l i mi tado
a dos, y se pueden agrupar usando parntesi s.
<!ELEMENT aviso (titulo, (parrafo | grafico))>
En ese caso, <avi so> debe contener un <ti tul o> se-
gui do de un <parrafo> o de un <grafi co>.
Cada part cul a de conteni do puede l l evar un i ndi -
cador de frecuenci a (figura 5), que si guen di recta-
mente a un i denti fi cador general , una secuenci a o una
opci n, y no pueden i r precedi dos por espaci os en bl an-
co. Para entenderl o, comentemos el l ti mo ejempl o
i ncui do en l a fi gura 4. En este caso, <avi so> puede
tener <ti tul o>, o no (pero sl o uno), y puede tener cero
o ms conj untos <par r afo><gr afi co>, <par r afo>
<parrafo><grafi co>, etc.
FIGURA 3
Declaracin de tipo de elemento
<!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 salto-de-pagina EMPTY>
<!ELEMENT batiburrillo ANY>
<!ELEMENT enfasis (#PCDATA)>
<!ELEMENT parrafo (#PCDATA|enfasis)*>
<!ELEMENT mensaje (remite, destinatario, texto)>
<!ELEMENT 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)
10 HELP400 Suplemento Tcnico
Declaraciones de Lista de Atributos
Los atri butos permi ten aadi r i nformaci n adi ci onal a l os el ementos de un do-
cumento. La pri nci pal di ferenci a entre l os el ementos y l os atri butos, es que l os
atri butos no pueden contener sub-atri butos. Se usan para aadi r i nformaci n
corta, senci l l a y desestructurada.
Otra di ferenci a entre l os atri butos y l os el ementos, es que cada uno de l os
atri butos sl o se puede especi fi car una vez, y en cual qui er orden.
La figura 6 muestr a un ejempl o XML y l a l i sta de l os el ementos <mensaje>
y <texto> de di cho ejempl o. Las decl ar aci ones de l os atr i butos empi ezan con
<!ATTLIST segui do del i denti fi cador del el emento al que se apl i ca el atri buto. Le
si guen el nombre del atri buto, su ti po y su val or por defecto. En el ejempl o, el
atr i buto pr i or i dad puede estar en el el emento <mensaje> y puede tener el
val or normal o urgente, si endo normal el val or por defecto si no especi fi ca-
mos el atri buto.
El atri buto i di oma, pertenece al el emento texto, y puede contener datos de
carcter (CDATA). Es ms, #REQUIRED si gni fi ca que no ti ene val or por defecto, ya
que es obl i gatori o especi fi car este atri buto.
A menudo i nter esa que se pueda omi ti r un atr i buto, si n que se adopte
automti camente un val or por defecto. Para esto se usa l a condi ci n #IMPLIED.
Por ejempl o, en una supuesta DTD que defi na l a eti queta <I MG> de HTML:
<!ATTLIST IMG URL CDATA #REQUIRED ALT CDATE #IMPLIED>
es deci r, el atri buto URL es obl i gatori o, mi entras que el ALT es opci onal (y si
se omi te, no toma ni ngn val or por defecto).
Tipos de atributos
Atri butos CDATA y NMTOKEN. Los atr i butos CDATA (character data) son
l os ms senci l l os, y pueden contener casi cual qui er cosa. Los atr i butos
NMTOKEN (name token) son pareci dos, pero sl o aceptan l os caracteres vl i -
dos para nombrar cosas (l etras, nmeros, puntos, gui ones, subrayados y l os dos
puntos).
<!ATTLIST mensaje fecha CDATA #REQUIRED>
<mensaje fecha="15 de Jul i o de 1999">
<!ATTLIST mensaje fecha NMTOKEN #REQUIRED>
<mensaje fecha="15-7-1999">
Atri butos enumerados y notaci ones. Los atr i butos enumer ados son aquel l os
que sl o pueden contener un val or de entr e un nmer o r educi do de opci ones.
<!ATTLIST mensaje prioridad (normal | urgente)
normal>
Exi ste otr o ti po de atr i buto par eci do, l l amado de
notaci n (NOTATI ON). Este ti po per mi te al autor
decl arar que su val or se ajusta a una notaci n decl a-
r ada.
<!ATTLIST mensaje fecha NOTATION (ISO-DATE |
EUROPEAN-DATE) #REQUIRED>
Para decl arar l as notaci ones, se uti l i za <!NOTATION
con u n a defi n i ci n ex ter n a de l a n otaci n . L a
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 mensaje (de, a, texto)>
<!ATTLIST mensaje prioridad (normal | urgente) normal>
<!ELEMENT texto(#PCDATA)>
<!ATTLIST texto idioma CDATA #REQUIRED>
NMERO 46 HELP400 Suplemento Tcnico 11
defi ni ci n exter na puede ser pbl i ca o un i denti fi cador del si stema par a l a
documentaci n de l a notaci n, una especi fi caci n for mal o un asi stente de l a
apl i caci n que contenga objetos representados en l a notaci n.
<!NOTATION HTML SYSTEM "http://www.w3.org/Markup">
<!NOTATION HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Atri butos I D e I DREF. El ti po I D permi te que un atri buto determi nado tenga
un nombre ni co que podr ser referenci ado por un atri buto de otro el emento
que sea de ti po I DREF. Por ejempl o, para i mpl ementar un senci l l o si stema de
hi perv ncul os en un documento:
<!ELEMENT enlace EMPTY>
<!ATTLIST enlace destino IDREF #REQUIRED>
<!ELEMENT capitulo (parrafo)*>
<!ATTLIST capitulo referencia ID #IMPLIED>
En este caso, una eti queta <enl ace desti no="secci on-3"> har a r efer enci a a
un <capi tul o referenci a="secci on-3">, de forma que el procesador XML l o podr a
converti r en un hi perv ncul o, u otra cosa.
Declaracin de entidades
Medi ante el uso de enti dades, XML hace referenci a a objetos (fi cheros, pgi nas
web, i mgenes, etc) que no deben ser anal i zados si ntcti camente segn l as re-
gl as de XML. Se decl aran en l a DTD medi ante el uso de <!ENTITY
Una enti dad puede no ser ms que una abrevi atura que se uti l i za como una
forma corta de al gunos textos. Al usar una referenci a a esta enti dad, el anal i za-
dor si ntcti co reempl aza l a referenci a con su conteni do. En otras ocasi ones es
una referenci a a un objeto externo o l ocal .
Las enti dades pueden ser: I nternas o Externas, Anal i zadas o No anal i zadas,
y General es o Parmetro.
Enti dades general es i nternas. Son l as ms senci l l as y bsi camente son abre-
vi aturas defi ni das en l a secci n de l a DTD del documento XML. Son si empre
enti dades anal i zadas, es deci r, una vez reempl azada l a referenci a a l a enti dad
por su conteni do, pasa a ser parte del documento XML y como tal , es anal i zada
por el procesador XML.
<!DOCTYPE texto[
<!ENTITY alf "Alien Life Form">
]>
<texto><titulo>Un da en la vida de un &alf;</titulo></texto>
Enti dades gener al es exter nas anal i zadas. Las enti dades exter nas obti e-
nen su conteni do en cual qui er otr o si ti o del si stema, ya sea otr o ar chi vo del
di sco duro, una pgi na web o un objeto de una base de datos. Se hace referenci a
al conteni do de una enti dad as medi ante l a pal abra SYSTEM segui da de un
URI (Uni ver sal Resour ce I denti fi er )
<!ENTITY intro SYSTEM "http://www.miservidor.com/intro.xml">
Enti dades no anal i zadas. Evi dentemente, si el conteni do de l a enti dad co-
r r esponde a un ar chi vo MPEG, una i magen GI F o un fi cher o ejecutabl e EXE
(por ejempl o), el pr ocesador XML no deber a i ntentar i nter pr etar l o como si fue-
ra texto XML.
12 HELP400 Suplemento Tcnico
Este ti po de enti dades si empre son general es y externas.
<!ENTITY logo SYSTEM "http://www.miservidor.com/logo.gif">
Enti dades par metr o i nter nas y exter nas. Se denomi nan enti dades
parmetro a aquel l as que sl o pueden uti l i zarse en l a DTD, y no en el documen-
to XML. Se pueden uti l i zar par a agr upar ci er tos el ementos del DTD que se
repi tan mucho. Se di ferenci an l as enti dades parmetro de l as general es, en que
para hacer referenci a a el l as, se usa el s mbol o % en l ugar de & tanto como
para decl ararl as como para usarl as.
<!DOCTYPE texto[
<!ENTITY % elemento-alf "<!ELEMENT ALF (#PCDATA)>">
...
%elemento-alf;
]>
Tambi en puede ser externa:
<!DOCTYPE texto[
<!ENTITY % elemento-alf SYSTEM alf.ent>
...
%elemento-alf;
]>
Ejemplo de DTD
Un ejempl o de DTD que puede ser vi r par a r esumi r todo l o vi sto hasta ahor a
podr a defi nr nos un l enguaje de mar cado par a una base de datos de per sonas
con di recci ones e-mai l . El fi chero LI STI N.DTD podr a ser al go 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 fi nal i zar, y basndonos en este DTD, podr amos escri bi r nuestro pri mer
l i st n 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

También podría gustarte