scieee Open visual document viewer

Introducción al XML

Jaime E. Villate

Abstract

Apontamentos para um curso na Universidad Rey Juan Carlos em Madrid.

Full text

In oducci´ on al XML Jaime E. Villa e. Uni e sidad de Opo o [email p o ec ed] 5 de mayo de 2001 Resumen Es asno ashansidop epa adaspa aelSemina iosob eP og amaci´ onenen o noGNU/Linux, en la uni e sidad Rey Juan Ca los, Mad id, Espa˜ na. El es ´ anda XML ha ganado mucha po- pula idad ecien emen e, debido a su g an u ilidad pa a es uc u a in o maci´ on y po se un es ´ anda abie o y bas an e di undido. Copy igh c 2001, Jaime E. Villa e. Es e a ´ ıculo puede se copiado y dis ibuido po cualquie medio, siemp e y cuando se man enga es a no a. 1 In oducci´ on XML signi ica lenguaje de ma cas gene alizado (Ex ensible Ma kup Language). Es un lenguaje usado pa a es uc u a in o maci´ on en un documen o o en gene al en cualquie iche o que con- enga ex o, como po ejemplo iche os de con igu aci´ on de un p og ama o una abla de da os. Ha ganado much´ ısima popula idad en los ´ ul imos a˜ nos debido a se un es ´ anda abie o y lib e, c eado po el Cons´ o cio Wo ld Wide Web, W3C (los c eado es de la www), en colabo aci´ on con un panel que incluye ep esen an es de las p incipales compa˜ n´ ıas p oduc o as de so wa e. El XML ue p opues o en 1996, y la p ime a especi icaci´ on apa eci´ o en 1998. Desde en onces su uso ha enido un c ecimien o acele ado, que se espe a que con in´ ue du an e los p ´ oximos a˜ nos; hoy en d´ ıa pa ece que de epen e odo el mundo es ´ a usando, o quie e usa , XML. 1.1 Ven ajas del XML An es de se lanzado el XML, ya exis ´ ıan o os lenguajes de ma cas, como po ejemplo el HTML, basados en el lenguaje gene alizado de ma cas (SGML). El p oblema con el SGML es que po se muy lexible y muy gene al, se o na di ´ ıcil el an´ alisis sin ´ ac ico de un documen o y la especi- icaci´ on de la es uc u a (que como e emos mas adelan e se incluye en o o documen o llamado DTD). XML es m´ as exigen e que SGML en la sin axis, lo que hace m´ as ´ acil la cons ucci´ on de lib e ´ ıas pa a p ocesa lo. Compa ado con o os sis emas usados pa a c ea documen os, el XML iene la en aja de po- de se mas exigen e en cuan o a la o ganizaci´ on del documen o, lo cual esul a en documen os In oducci´ on al XML 2 mejo es uc u ados. Po ejemplo en LaTeX exis en ambi´ en “ma cas” que pe mi en es uc u a un documen o, po ejemplo iden i icando el nomb e del au o y el ´ ı ulo del documen o – los co- mandos au ho y i le – sin emba go no exis e o ma de obliga a los au o es de documen os a que usen es as ma cas y algunos de ellos pueden in oduci el ´ ı ulo de o ma que apa ezca isualmen e igual a lo que se ob iene cuando se usa au ho y make i le, sin usa esos coman- dos; es o conlle a a p oblemas cuando que emos ex ae de o ma au om´ a ica el ´ ı ulo de a ios documen os. Po se posible exigi la es uc u a que deben ene un ipo de e minado de documen os, se uel e posible ex ae in o maci´ on de a ios documen os au om´ a icamen e, po ejemplo pa a c ea bases de da os o lis ados con in o maci´ on sob e odos los documen os. 2 Concep os b´ asicos Los iche os XML son iche os de ex o, que en p incipio es ´ a en c´ odigo Unicode, pe o se pueden usa o os al abe os como el la in-1. Exis en cinco ca ac e es especiales en XML: los s´ ımbolos meno que, <, mayo que, >, las comillas dobles, ”, el ap´ os o e ’ y el ca ac e &. Los s´ ımbolos mayo que y meno que se usan pa a delimi a las ma cas que dan la es uc u a al documen o. Cada ma ca iene un nomb e; eamos un ejemplo: la ma ca < igu a>, que puede ene uno o m´ as a ibu os:< igu a iche o=” o o1.jpg” ipo=”jpeg”> iene dos a ibu os, “ iche o” y “ ipo”. Los a ibu os oman alo es que ienen que es a en e comillas o en e ap´ os o es. Cuando sea necesa io usa uno de los 5 ca ac e es especiales en el ex o, pa a e i a que sean in e p e ados de o ma especial se usan las siguien es en idades: <, >, ", ', &, pa a <,>, ”, ’ y &, espec i amen e. Es o explica ambi´ en po que & es un ca ac e especial: se usa pa a ep esen a en idades; una en idad es un ca ac e adicional que no hace pa e del al abe o usado po de ec o en el ex o (los ca ac e es especiales ob iamen e quedan excluidos del al abe o usado pa a el ex o) comienza po &, seguido del nomb e de la en idad e inmedia amen e un pun o y coma1. Una di e encia impo an e con SGML, y en pa icula HTML, es que los nomb es de las ma - cas y de sus a ibu os dis inguen en e may´ usculas y min´ usculas; <a>y<A>se ian dos ma cas di e en es. No malmen e se suelen usa ´ unicamen e min´ usculas pa a los nomb es de las ma cas y de sus a ibu os. O a di e encia sob esalien e con SGML es que en XML ninguna ma ca se puede deja abie a; o sea, po cada ma ca, po ejemplo <p>debe ´ a exis i una ma ca co espondien e </p>que indica donde e mina el con enido de la ma ca. En el siguien e ejemplo: < e ´ an>El que mucho aba ca, poco ap ie a</ e ´ an> El con enido de la ma ca “ e ´ an” es a cla amen e delimi ado en e < e ´ an>y</ e ´ an>. Si una ma ca cualquie a no con iene ning´ un ex o, po ejemplo <h ></h >, se puede ab e ia de la siguien e o ma: <h />, pe o n´ o ese que la p ime a o ma ambi´ en es ´ alida, en cambio esc ibi ´ unicamen e <h >o<h >da ´ ıa un e o . 1Ya e emos m´ as adelan e que ealmen e exis en o os ipos de en idades. 2.1 De inici´ on del ipo de documen o (DTD) 3 2.1 De inici´ on del ipo de documen o (DTD) Las posibles ma cas que pueden apa ece en un documen o XML y los a ibu os que es as pueden ene , son de inidos en un iche o llamado “De inici´ on del Tipo de Documen o” (en ingl´ es “Do- cumen Type De ini ion”) o simplemen e DTD. Cada documen o XML debe indica al comienzo el DTD usado po medio de una ma ca <!DOCTYPE>; po ejemplo <!DOCTYPE xbel PUBLIC "+//IDN py hon.o g//DTD XML Bookma k Exchange Language 1.0//EN//XML" "h p://www.py hon.o g/ opics/xml/d ds/xbel-1.0.d d"> Es a ma ca indica que lo que iene a con inuaci´ on en el iche o es una ma ca “xbel” (con odas sus posibles sub-ma cas), que ha sido de inida en un DTD que se llama “XML Bookma k Exchange Language 1.0”. La palab a cla e PUBLIC p ecede al nomb e o icial que se le ha dado al DTD espec i o; en es e caso esa indicaci´ on nos da alguna indicaci´ on adicional al nomb e del DTD: el s´ ımbolo + indica que es un DTD econocido po alguna en idad o icial, en es e caso py hon.o g como lo indica la palab a cla e IDN, el lenguaje usado en el DTD es el ingl´ es (EN) y la sin axis usada es sin axis XML. Realmen e el nomb e que iene en e comillas despu´ es de PUBLIC es algo a bi a io, pe o como en cada sis ema exis e un ca ´ alogo SGML que iden i ica los DTD disponibles en el sis ema, lo impo an e es usa exac amen e el nomb e que apa ezca en el ca ´ alogo. Y pa a que documen os que usen el mismo DTD puedan se anspo ables en e sis emas con ienen usa la iden i icaci´ on exac a suge ida po el au o del DTD. Despu´ es del iden i icado p´ ublico (lo que es ´ a en e comillas despu´ es de PUBLIC) puede eni un iden i icado del sis ema que indica el camino y nomb e del iche o donde se encuen a el DTD; en el ejemplo an e io el iden i icado del sis ema es una URL que indica donde se puede encon a el DTD usado. Un iche o DTD de ine siemp e una o m´ as es uc u as je ´ a quicas, con una ma ca p incipal, o pad e, compues a po o as ma cas, o hijos. La igu a 1 mues a la es uc u a de un DTD simple, con un elemen o p incipal <a icle>. Den o del elemen o p incipal pueden apa ece o os elemen os: <a heade >,<sec 1>y<index>, y es os a su ez se componen de o os elemen os. El DTD puede se dise˜ nado de o ma a hace obliga o io el uso de algunos sub-elemen os y limi a el n´ ume o de eces que un elemen o puede apa ece y el o den de los elemen os. De es a o ma el DTD puede se bas an e lexible o an exigen e como se desee, pa a o za a los au o es a ce˜ ni se a un de e minado es ilo. Undocumen oXMLqueespeci iqueelDTDusadoysigalas eglasen ´ el de inidas, sedice que es un documen o XML ´ alido. Se pueden ambi´ en c ea documen os que no especi iquen ning´ un DTD pe o que sigan las eglas m´ ınimas del XML; en es e caso el documen o XML se denomina “con o me” (en ingl´ es con o ming); exis en p og amas pa a comp oba si un documen o es ´ alido (comp oba que el DTD exis e y que la es uc u a del documen o espe a las eglas de inidas po el DTD). 2.2 En idades 4 Figu a 1: Es uc u a je ´ a quica de un DTD. 2.2 En idades En la secci´ on an e io ya hablamos de un ipo de en idades que se usan pa a ep esen a ca ac e es adicionales al al abe o usado. La ´ unicas en idades de ese ipo que es ´ an p e-de inidas en XML son las cinco que ya mencionamos: <, >, ", &, ’. Cualquie o a en idad adicional que que amos usa end ´ a que es a de inida p e iamen e en el DTD usado. Po ejemplo, si es amos usando el al abe o la in-1, que incluye el ca ac e c , pe o no sabemos como ob ene lo con el eclado, pod emos de ini una en idad ©. La de inici´ on se hace usando la ma ca ENTITY, de la siguien e o ma <!ENTITY copy "©"> El n´ ume o decimal 169 es el c´ odigo que le co esponde al ca ac e c en el al abe o la in- 1; ambi´ en pod ´ ıamos habe usado la ep esen aci´ on hexadecimal #xA9;. La de inici´ on de una en idad como la an e io puede ya o ma pa e del DTD, o puede se adicionada po el au o del documen o XML, den o de la p opia decla aci´ on del DTD del documen o. Po ejemplo la uen e de es e manual que es ´ a leyendo es un iche o XML con la siguien e de inici´ on de ipo de documen o <!DOCTYPE a icle PUBLIC "-//laespi al.o g//DTD LE-documen 1.1//EN" "LE-documen -1.1.d d" [<!ENTITY copy "©">] > En e los pa ´ en esis cuad ados pueden i a ias de iniciones de en idades. El alo de una en idad no es ´ a limi ado a se un ca ac e , sino que puede se cualquie ex o. Po ejemplo si de inimos la en idad &qed; de la siguien e mane a <!ENTITY qed "Que es lo que que ´ ıamos demos a "> 2.3 Fiche os XML 5 Cada ez que en el documen o se esc iba &qed;, se ´ a subs i uido po el ex o Que es lo que que ´ ıamos demos a . Una en idad se puede usa ambi´ en pa a inse a el con enido comple o de un iche o en un pun o del documen o, si se de ine de la siguien e o ma <!ENTITY nomb e SYSTEM " iche o. x "> El iche o puede inclui has a ma cas y cualquie o o ex o que sea ´ alido en el pun o donde apa ezca &nomb e;. Exis en o o ipo de en idades in e nas, que no pueden se usadas en un documen o XML sino ´ unicamen e den o de un DTD. Es as comienzan po el ca ac e especial % en ez de & en la secci´ on sob e cons ucci´ on de DTDs habla emos m´ as sob e ellas. 2.3 Fiche os XML a los iche os XML se les suele da un nomb e e minado en .xml pa a iden i ica los como xml. Es o es simplemen e una con enci´ on pa a los usua ios; el es ´ anda XML 1.0 indica que pa a iden i ica un iche o como XML es necesa io que la p ime a l´ ınea enga el siguien e con enido <?xml e sion="1.0" ?> Den o de es a ma ca puede i o a in o maci´ on adicional. El al abe o usado po de ec o en los iche os XML es el Unicode; pa a documen os en espa˜ nol se ´ a mas con enien e usa el al abe o la in-1, lo cual se log a usando el a ibu o encoding de la ma ca xml <?xml e sion="1.0" encoding="iso-8859-1" ?> 3 Cons ucci´ on de DTD’s El DTD suele es a den o de un iche o con ex ensi´ on d d, pe o puede incluso se de inido den o de la p opia ma ca DOCTYPE en el documen o XML. Veamos un ejemplo muy simple de un iche o XML que incluye ambi´ en el DTD <?xml e sion="1.0" encoding="iso-8859-1" ?> <!DOCTYPE cd[ <!ELEMENT cd ( i ulo, a is a, pis a+)> <!ATTLIST cd echa CDATA #IMPLIED> <!ELEMENT i ulo (#PCDATA)> <!ELEMENT a is a (#PCDATA)> <!ELEMENT pis a (#PCDATA)> ]> <cd echa="2001"> < i ulo>Los poyi os dicen</ i ulo> In oducci´ on al XML 6 <a is a>Los ni˜ nos can o es del Ti ol</a is a> <pis a>Pio, Pio, Pio.</pis a> <pis a>Pio, Pio, Pio ( e si´ on ins umen al).</pis a> <pis a>Pio, Pio, Pio ( e si´ on ex endida).</pis a> </cd> El elemen o p incipal de inido en el DTD es cd, el cual iene que ene inicialmen e una ma ca i ulo, seguida de una ma ca a is a y inalmen e seguida de una o mas ma cas pis a; el s´ ımbolo m´ as al lado de la ma ca pis a, en la de inici´ on del elemen o cd, indica que iene que apa ece po lo menos una ez. O os modi ica es usados son *, que signi ica cualquie n´ ume o de eces incluyendo ce o, y ? que indica que puede no apa ece o apa ece a lo sumo una ez; si no apa ece ning´ un modi icado , la ma ca espec i a debe apa ece exac amen e una ez. Si que emos que el o den de los sub-elemen os ´ ı ulo y a is a de cd pueda se a bi a io podemos usa la siguien e cons ucci´ on <!ELEMENT cd (( i ulo | a is a)*, pis a+)> Pe o en es e caso es a ´ ıamos pe mi iendo que apa ezca m´ as de un ´ ı ulo o au o (o ninguno). El elemen o cd acep a un a ibu o llamado echa. Pa a indica que el con enido de un a ibu o o elemen o puede se una combinaci´ on de ca ac e es del al abe o usado, empleamos la palab a cla e CDATA, en el caso de los a ibu os, y #PCDATA en el caso de los elemen os; o as posibi- lidades pa a el ipo de da os de los a ibu os son NMTOKEN, cuando solo puedan ene alo es num´ e icos, ID cuando sea un c´ odigo de iden i icaci´ on que enga un alo ´ unico, e IDREF cuando enga que se una e e encia a un c´ odigo de iden i icaci´ on ya exis en e. Los elemen os ambi´ en pueden inclui la palab a cla e EMPTY cuando se a e de elemen os que no pueden ene ning´ un con enido. La palab a cla e #IMPLIED indica que el a ibu o es opcional; si ue a obliga o io se usa ´ ıa en ez #REQUIRED, y si quisi´ e amos especi ica una lis a de posibles alo es, se pond ´ ıan en e pa ´ en esis, sepa ados po ba as e icales, y despu´ es de los pa ´ en esis se esc ibi ´ ıa el alo po de ec o. Como no malmen e es a emos in e esados en c ea a ios documen os con es uc u a seme- jan e, es mejo coloca el DTD en un iche o sepa ado. El DTD del ejemplo an e io , den o de un iche o apa e, queda ´ ıa as´ ı: <?xml e sion="1.0" encoding="iso-8859-1" ?> <!ELEMENT cd ( i ulo, a is a, pis a+)> <!ATTLIST cd echa CDATA #IMPLIED> <!ELEMENT i ulo (#PCDATA)> <!ELEMENT a is a (#PCDATA)> <!ELEMENT pis a (#PCDATA)> In oducci´ on al XML 7 Den o del iche o del DTD se pueden usa en idades pa a simpli ica su esc i u a. Po ejem- plo, una secci´ on del DTD LE-documen -1.1.d d es la siguien e <!ENTITY % lis ype " i emizedlis | o de edlis | a iablelis | simplelis | p og amlis ing | igu e | o m | able " > <!ELEMENT a icle (a heade , (pa a | sec 1 | %lis ype;)*, bibliog aphy?) > <!ATTLIST a icle lang CDATA #IMPLIED x e label CDATA #IMPLIED id ID #IMPLIED pa en book IDREF #IMPLIED> El DTD comple o se puede e en h p://www.laespi al.o g/xml/s yles/LE-documen -1.1.d d 4 DTDs disponibles La c eaci´ on de un DTD es una a ea complicada, no po la pa e del c´ odigo que se iene que esc i- bi , sino po que el dise˜ no de la es uc u a je ´ a quica y las ma cas usadas es c ucial en el ´ exi o de un DTD. en algunas aplicaciones se necesi a mucha expe iencia pa a oma las decisiones ace a- das sob e el dise˜ no del DTD. A o unadamen e exis en muchos g upos de expe os abajando en la c eaci´ on de DTDs p´ ublicos que pueden se usados y lib emen e. Un l´ ıde en el campo de c eaci´ on de DTDs es el p opio conso cio W3C, que ya iene a ios DTDs disponibles. Algunos de ellos son: SVG pa a g ´ a icos ec o iales, Ma hML pa a ecuaciones ma em´ a icas y XHTML que es una e si´ on XML del DTD de HTML. O os DTDs impo an es c eados po o os g upos son DocBook (o iginalmen e en SGML, pe o ya en e si´ on XML) pa a esc ibi lib os, especialmen e manuales de so wa e, BioML y BSML pa a biolog´ ıa, CML pa a qu´ ımica, AML y AIML pa a as onom´ ıa y TMX pa a aducciones. 5 Lenguajes de p´ aginas de es ilo Un elemen o impo an e pa a pode es uc u a la in o maci´ on de un documen o es sepa a el con enido del documen o de su o ma aci´ on. Quien es ´ e amilia izado con LaTeX sab ´ a que una de sus p incipales en ajas es que pe mi e a los au o es concen a se en el con enido del documen o, sin ene que p eocupa se mucho con la o ma como se ´ a p esen ado. El o ma o que se usa pa a p esen a el con enido es ´ a de inido en o o iche o, que de ine la documen class, que ha sido p epa ado po un expe o, de mane a que cualquie au o puede p oduci documen os de ele ada calidad ipog ´ a ica sin mucho es ue zo. En HTML y XML ha habido ambi´ en un es ue zo po sepa a el con enido de la o ma aci´ on y da la posibilidad de eu iliza un o ma o p e-de inido. El o ma o usado lo de ine o o iche o llamado una hoja de es ilo (en ingl´ es S yle Shee ) usando un lenguaje p opio pa a p´ aginas de es ilo. 5.1 CSSL 8 5.1 CSSL CSSL signi ica Cascading S yle Shee Language, y es el lenguaje pa a p´ aginas de es ilo desa o- llado po el conso cio W3 pa a se usado en p´ aginas HTML. Un documen o XML puede ambi´ en hace uso de una p´ agina de es ilo CSS, en o ma semejan e a como se hace en una p´ agina HTML. Pe o no en a emos en de alles aqu´ ı, pa a concen a nos en o o es ´ anda mas ecien e pa a p´ aginas de es ilo (XSL). 5.2 XSL El lenguaje de p´ aginas de es ilo que ha sido desa ollado po el conso cio W3C, pa a da o ma o a los documen os XML, se llama XSL, que es el ac ´ onimo de Ex ensible S yle-shee Language. Una p´ agina de es ilo XSL pe mi e modi ica un documen o XML, p oduciendo a ios un esul ado que puede es a en a ios o ma os di e en es incluyendo el p opio XML y HTML. Una p´ agina de es ilo XSL es ambi´ en un documen o XML que usa el DTD xsl:s yleshee . El comienzo de una p´ agina usada pa a p oduci HTML pod ´ ıa ene el siguien e con enido <?xml e sion="1.0" encoding="iso-8859-1" ?> <!DOCTYPE xsl:s yleshee [<!ENTITY nbsp " ">]> <xsl:s yleshee e sion="1.0" xmlns:xsl="h p://www.w3.o g/1999/XSL/T ans o m"> <xsl:ou pu me hod="h ml" encoding="iso-8859-1" doc ype-public="//w3c//d d h ml 4.0 ansi ional//en"/> En es e caso se ha de inido una en idad adicional que se ´ a usada en el HTML p oducido, y se ha especi icado la in o maci´ on que debe ´ a apa ece en la ma ca DOCTYPE del iche o HTML que se gene e. El espacio de nomb es usado; o sea la especi icaci´ on de ma cas usadas en XSL, se ha de inido con el a ibu o xmlns:xsl. Todas las ma cas de XSL comienzan con la secuencia xsl:. La ma ca b´ asica que ealiza el p ocesamien o del iche o XML, es la ma ca <xsl: empla e>que de ine la plan illa que se debe usa pa a p oduci la salida de da os. Veamos un ejemplo <xsl: empla e ma ch="i emizedlis "> <ul> <xsl:apply- empla es/> </ul> </xsl: empla e> Es a plan illa se ´ a aplicada cada ez que apa ezca una ma ca <i emizelis >en el documen o XML; al ex oque apa ezca en e <i emizelis >y la co espondien e </i emizelis >. En es e caso se usa ´ a la ma ca que c ea lis as de i ems en HTML: <ul>. La ma ca <xsl:apply- empla es/> hace que el p ocesamien o con in´ ue, aplicando odas las o as plan illas que sean ele an es al ex o que se ha seleccionado (el con enido de <i emizelis >). Algo impo an e que se debe ene en cuen a es que aunque que amos que en el iche o HTML de salida apa ezca una ma ca ac´ ıa In oducci´ on al XML 9 como po ejemplo <b >, en la plan illa se debe esc ibi <b />, pues la plan illa hace pa e de un documen o XML; en la salida apa ece ´ a<b >pues el esul ado se p esen a en HTML. Si la p´ agina de es ilo u ie a que p oduci LaTeX en ez de HTML, la plan illa co espon- dien e a la an e io se ´ ıa <xsl: empla e ma ch="i emizedlis "> begin{i emize} <xsl:apply- empla es/> end{i emize} </xsl: empla e> Las p´ aginas XSL usadas pa a p oduci las e siones LaTeX y HTML de es e documen o pueden se ob enidas en h p://www.laespi al.o g/xml/s yles/ 6 He amien as GNU/Linux pa a XML Exis en a ias he amien as disponibles en GNU/Linux pa a abaja con iche os XML. Muchos p og amas ya usan XML ambi´ en como un medio de in e cambia in o maci´ on o como especi i- caci´ on pa a esc ibi los iche os de con igu aci´ on. 6.1 Ca alogo SGML En un sis ema en el que se use XML pa a c ea documen os, con iene que exis a un ca ´ alogo de los DTD disponibles y la in o maci´ on de donde encon a los en el sis ema. En Debian GNU/Linux, las he amien as pa a c ea y man ene el ca ´ alogo ienen den o del paque e sgml-base; es e paque e incluye el p og ama ins all-sgmlca alog que se ´ a usado po o os paque es que ins alen DTDs, pa a ac ualiza el ca ´ alogo, que se encuen a localizado en /e c/sgml.ca alog. Si po ejemplo quisi´ e amos ins ala el DTD con enido en el iche o LE-documen -1.1.d d, usa ´ ıamos el comando ins all-sgmlca alog --ins all ca alogo le-documen Donde el iche o ca alogo con end ´ ıa la siguien e in o maci´ on -- SGML ca alog o LE-documen -- PUBLIC "-//laespi al.o g//DTD LE-documen 1.1//EN" "d d/LE-documen -1.1.d d" la ´ ul ima pa e en el comando ins all-sgmlca alog, le-documen , es un iden i icado que nos pe mi i ´ a despu´ es desins ala el DTD po medio del comando ins all-sgmlca alog -- emo e le-documen Con la in o maci´ on an e io in oducida en el ca ´ alogo, end ´ ıamos que copia el iche o LE- documen -1.1.d d en /us /lib/sgml/d d/, que es donde suelen es a los o os DTDs. O o paque e impo an e en Debian es el paque e sgml-da a que ins ala a ios DTDs conocidos. 7.4 Fiche os de con igu aci´ on 16 de ecu sos disponibles; y no malmen e se des ina a al in e cambio de in o maci´ on en e sis emas, m´ as que a suminis a con enido. Un ejemplo de aplicaci´ on es en los se ido es de no icias, como po ejemplo Slashdo y Ba apun o. El lis ado siguien e mues a lo que se ob iene si seleccio- namos una secci´ on de Ba apun o, en es e caso la secci´ on “La Espi al” y accedemos a la URL h p://ba apun o.com/laespi al. d (solo mos a emos la pa e inicial del lis ado, apenas pa a da una idea de como es) <?xml e sion="1.0" encoding="ISO-8859-1"?> < d :RDF xmlns: d ="h p://www.w3.o g/1999/02/22- d -syn ax-ns#" xmlns="h p://my.ne scape.com/ d /simple/0.9/"> <channel> < i le>Ba apun o: La Espi al</ i le> <link>h p://ba apun o.com/index.pl?sec ion=laespi al</link> <desc ip ion><La in o maci´ on que e in e esa!</desc ip ion> </channel> <image> < i le>Ba apun o</ i le> <u l>h p://ba apun o.com/images/ opics/ opicslash.gi </u l> <link>h p://ba apun o.com</link> </image> <i em> < i le><Woody se congela!</ i le> <link>h p://ba apun o.com/a icle.pl?sid=01/02/17/094222</link> </i em> <i em> < i le>En e is a a Wiche Akke man en Debian Plane </ i le> <link>h p://ba apun o.com/a icle.pl?sid=01/02/16/179236</link> </i em> Como se puede e , el esul ado es un documen o XML que usa el DTD RDF; ealmen e es una peque˜ na implemen aci´ on de RDF, llamada RSS (RDF Si e Summa y), pues RDF puede se mucho mas complexo. Es e iche o RDF se ´ a muy ´ acil de manipula con los p ocesado es de XML/XSL y pod ´ a se usado pa a ex ae po ejemplo los i ula es de las no icias en la secci´ on. Exis en a ios p og amas que ayudan a c ea o p ocesa RSS. En Debian el paque e libxml- ss-pe l ae un m´ odulo pe l que puede se usado pa a ese p op´ osi o. 7.4 Fiche os de con igu aci´ on XML es una muy buena opci´ on pa a esc ibi iche os de con igu aci´ on de p og amas. La exis- encia de lib e ´ ıas op imizadas pa a ex ae in o maci´ on y modi ica documen os XML acili a la a ea del p og amado . 7.5 Bases de da os 17 Un ejemplo ´ ıpico son los iche os de con igu aci´ on usados en Glade. Glade es un p og ama pa a cons ui in e aces g ´ a icas de usua io (GUI) que usen las lib e ´ ıas g ´ a icas GTK+. Glade iene una in e az g ´ a ica ´ acil de usa , donde se pueden de ini las en anas que usa ´ a el p og ama que se a a cons ui y se le pueden i colocando di e en es “widge s”. El esul ado despu´ es de de ini el GUI del p og ama se esume en un iche o XML con el nomb e del p og ama y con ex ensi´ on .glade. Si mas a de se quie e modi ica la in e az g ´ a ica del p og ama, glade lee ´ a ese iche o y analiz´ andolo ecupe a ´ a oda la in o maci´ on que necesi a pa a ol e a ep esen a la in e az g ´ a ica del p og ama. Veamos un ejemplo. Glade ae un ejemplo que consis e en un edi o de ex o. Las p ime as l´ ıneas del iche o edi o .glade son as´ ı: <?xml e sion="1.0"?> <GTK-In e ace> <p ojec > <name>Glade Tex Edi o </name> <p og am_name>glade-edi o </p og am_name> <di ec o y></di ec o y> <sou ce_di ec o y>s c</sou ce_di ec o y> <pixmaps_di ec o y>pixmaps</pixmaps_di ec o y> <language>C</language> <gnome_suppo >False</gnome_suppo > <ge ex _suppo >T ue</ge ex _suppo > N´ o ese que no ha sido usado ning´ un DTD. Cuando el iche o XML es c eado y modi icado po un p og ama, no malmen e no es necesa io alida lo con a un DTD, pues si el p og ama ya ha sido depu ado los iche os p oducidos end ´ an siemp e la es uc u a espe ada. 7.5 Bases de da os Los documen os XML son una buena in e az pa a p opo ciona da os a una base de da os, o pa a almacena copias de pa es del con enido de la base de da os, en iche os de ex o. Cada campo en una abla de la base de da os se puede hace co esponde al con enido de alguna ma ca XML. Veamos un ejemplo de una sub u ina pe l en la que se usa DOM pa a ex ae in o maci´ on de un iche o XML pa a ac ualiza una base de da os SQL: sub ac ualiza bd {use DBI; use XML::DOM; my ($id,$ iche o) = @_; my $bd = ’laespi al’; my $dbmas e = ’ illa e’; my $mibd = DBI->connec ("dbi:Pg:dbname=$bd",$dbmas e ,’’) o e u n "Base de da os inaccesible n$DBI::e s n"; my $sql = $mibd->p epa e(q{upda e ece as se i ulo=?, au o =?, } 7.6 P ocesamien o dis ibuido usando SOAP 18 . q{ echa=?, con enido=? whe e id=?}); my $pa se = new XML::DOM::Pa se ; my $doc = $pa se ->pa se ile ($ iche o); my $ i ulo = &ex ae ($doc->ge Elemen sByTagName (" i ulo")); my $au o = &ex ae ($doc->ge Elemen sByTagName ("au o ")); my $ echa = &ex ae ($doc->ge Elemen sByTagName (" echa")); my $con enido = &ex ae ($doc->ge Elemen sByTagName ("con enido")); $sql->execu e($ i ulo,$au o ,$ echa,$con enido,$id) o e u n " ece as::ac ualiza : E o ac ualizando ece a $id n" . "$DBI::e s n"; $mibd->disconnec ; e u n "La base de da os de ece as ha sido ac ualizada. n"; } sub ex ae {my (@elemen os) = @_; my $elemen o = $elemen os[0]-> oS ing; $elemen o =˜ s/ˆ[ˆ>]*> n?//; $elemen o =˜ s/ n? s*<[ˆ<]*$//; e u n $elemen o; } 7.6 P ocesamien o dis ibuido usando SOAP SOAP es el ac ´ onimo de Simple Objec Access P o ocol. Es un p o ocolo usado pa a ejecu a comandos en se ido es emo os. La in o maci´ on en iada al se ido emo o y el esul ado de la ejecuci´ on del comando se en ´ ıan en iche os XML. 8 Bibliog aphy 1. TheWo ldWideWebConso ium(W3C), h p://www.w3.o g/. Los c eado es de los es ´ anda es HTML, XML, XSL, XHTML y muchos o os; en es a p´ agina se encuen an las e siones mas ecien es de los es ´ anda es as´ ı como in o maci´ on adicional y enlaces a o as uen es de in o maci´ on. 2. Apache XML P ojec , h p://xml.apache.o g/ . Es e p oyec o ac ualmen e se subdi ide en sie e g upos muy impo an es: Xe ces, Xalan, Coccon, FOP, Xang, SOAP, Ba ik y C imson, con el obje i o de p oduci una soluci´ on li e y comple a basada en XML y el se ido h p de Apache. 3. The XML C lib a y o Gnome, h p://www.xmlso .o g/ . La p´ agina de las lib e ´ ıas XML c eadas po el p oyec o Gnome; incluye el p ocesado de XML/XSL xsl . 4. Sablo on 0.52, h p://www.ginge all.cz/ga/Sablo -0-52.h ml . Manual de Sablo on 0.52, un p ocesado de XML+XSL p og amado en C++. In oducci´ on al XML 19 5. P og amaci´ on en XML: el nue o lenguaje de In e ne . Los apun es de un cu so bas an e comple osob eXML, ealizado en G anada. h p://geneu a.ug .es/cu sos/xml/p og ama.sh ml . 6. xml.com, h p://www.xml.com . La p´ agina de O’Reilly dedicada al XML; all´ ı se encuen a mucha in o maci´ on sob e XML y XSL. 7. The XML Co e Pages, h p://www.oasis-open.o g/co e /sgml-xml.h ml . Un se ido del g upo OASIS, lleno de in o maci´ on ´ u il sob e XML/XSL y so wa e. 8. P´ agina pe sonal de No man Walsh, h p://www.nwalsh.com . Una uen e muy buena de in o maci´ on; bas an e ´ u iles especialmen e las anspa encias sob e XSL. 9. S . Lau en, S. y Bigga , R.. Inside XML DTD’s, McG aw-Hill, 1999, ISBN: 0-07-134621- X. 10. Na a o, A., Whi e, W. y Bu man, L. Mas e ing XML, SYBEX, 2000, ISBN: 0-7821-2266- 3. 11. Walsh, N. y L. Muellne . DocBook: The De ini i e Guide, 1a edic., O’Reilly & Associa es, Inc. oc ub e de 1999, ISBN: 156592-580-7. (disponible en h p://www.docbook.o g) 12. Villa e, J. E.. C eaci´ ondea ´ ıculosyp´ aginaswebusandoXML en Linux, h p://www.laespi al.o g/documen acion/a iculos/a iculos- COMO/ La Espi al, 22 de no iemb e de 2000. Manual de le-docxml, el sis ema XML/XSL usado pa a p oduci es e documen o. 13. Le ne , R. M.. In oducing SOAP, The Linux Jou nal, 83, ma zo de 2001. 14. TMX Fo ma , h p://www.lisa.unige.ch/ mx/ mx.h m . P´ agina del DTD T ansla ion Memo y Exchange, pa a ayuda en la aducci´ on de documen os.