Introducción a XML Ricardo Markiewicz <rmarkie@fi.uba.ar> 7 de marzo del 2003 Índice 1. Lenguajes de Marcas 2. ¿Qué es XML? 2.1. Principales Características . . . 2.2. Herramientas complementarias 2.2.1. Contenidos . . . . . . . 2.2.2. Diseño (Hojas de estilo) 2.2.3. Programación . . . . . . 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3 3 3 3 4 3. Sintaxis XML 4 4. Bibliografía 5 1 1. Lenguajes de Marcas Los lenguajes de marcas son una tecnología que está presente en el mundo informático desde hacer más de 40 años, producto de necesidades concretas. La primer solución surgió en la década del ’70 cuando la gente de IBM se encontró con el problema de almacenar los grandes volúmenes de información que manejaban. Para resolver este problema crearon el lenguaje GML (General Markup Language, Lenguaje General de Marcas), que no era más que un archivo de texto ASCII con una estructura de marcas que definían el contenido del documento. El principal problema del tratamiento de contenidos hasta que apareció GML era que cada aplicación guardaba la información de una manera distinta y cuando era necesario compartir información entre distintos departamentos se debía tener en cuenta con que recursos contaba el destino del documento. El GML permitió a IBM definir la estructura para sus documentos, de manera tal que se pudiera compartir la información entre los distintos departamentos sin preocuparse por el formato, ya que lo importante era el contenido. Años más tarde, la gente de ISO puso mucho interés en el lenguaje de marcas GML y decidió normalizarlo, apareciendo así SGML (la “s” por Standar), que permitió al lenguaje un crecimiento mayor ya que cualquier aplicación que se adopte al estándar sería capaz de leer documentos SGML. Por el año ’89, con la inminente aparición de las redes como Internet, aparece el lenguaje HTML, una mutación de SGML a la que se le agregan enlaces de hipertexto. Este nuevo lenguaje fue muy útil durante muchos años y creció rápidamente debido a la competencia de distintas empresas por generar visores HTML cada vez más complejos, para lo que se fueron incorporando etiquetas propias que hacían, en muchos casos, difícil el diseño de páginas que fueran correctamente visualizadas. Otra problema del HTML es que violó el principal objetivo del SGML : la abstracción de la información. El HTML permite definir la forma de visualización de los datos junto con éstos. Para resolver los problemas del HTML en 1998 la W3C entra en acción, tratando de estandarizar HTML para lograr compatibilidad entre los distintos visores, lográndolo en gran parte. Sin embargo el problema de la abstracción de la información está presente aún hoy en día. 2. ¿Qué es XML? XML es una tecnología realmente muy sencilla que tiene a su alrededor un conjunto de herramientas más complejas que hacen de XML una herramienta muy poderosa. XML representa una manera distinta de hacer las cosas, más avanzada, cuya principal novedad consiste en permitir compartir información a cualquier nivel. Este lenguaje solo provee de un conjunto de reglas que nos permite definir etiquetas semánticas que nos permiten organizar nuestros datos. Desde 1998 XML a crecido mucho, bajo la lupa del W3C, quien define las características principales del lenguaje. Los objetivos planteados para su desarrollo son : XML debe ser directamente utilizable desde Internet, para poder aprovechar toda la tecnología actual. Debe soportar una amplia variedad de aplicaciones Debe ser compatible con SGML Debe ser fácil la escritura que procesen datos formateados en XML El número de características opcionales de XML debe ser lo más reducido posible, nulo en lo posible. Los documentos XML deben ser legibles por los humanos y razonablemente claros. 2 2.1. Principales Características La siguiente lista proporciona algunas de las características más relevantes del XML Es una arquitectura abierta y extensible. La integración de datos entre distintas tecnologías es muy fácil. Abstracción de la información. XML está diseñado para definir contenido, y no su manera de visualizarlo. Exportabilidad a otros formatos de publicaciones. Desde un archivo XML pueden generarse documentos HTML, PDF, PS, RTF, etc. Posee una estructura jerárquica para organizar los datos. 2.2. Herramientas complementarias Como se mencionó anteriormente XML no está solo. Existe un amplio conjunto de herramientas preparadas para dar soporte a XML, que podemos agrupar en 3 categorías : 1. Contenidos 2. Diseño 3. Programación 2.2.1. Contenidos Como se dijo los documentos XML están escritos mediante marcas, lo que lleva a hacernos la siguiente pregunta : ¿qué etiquetas puedo utilizar?, ¿en qué orden las debo tratar?. Este es un problema que se soluciona utilizando las hojas de contenido, que contienen la información de las etiquetas disponibles para un cierto documento XML, en que orden deben estar, que etiquetas pueden anidarse, etc. Hoy existen 2 alternativas para definir el formato del contenido : DTD (Document Type Definition) y las XML Schem. Las primeras aparecieron junto con SGML, y utilizan un formato propio, mientras que la segundo es una solución más reciente, que utiliza un conjunto de etiquetas XML no extensible para generar etiquetas nuevas para nuestro propio documento. 2.2.2. Diseño (Hojas de estilo) Por diseño se entiende la forma de visualizar un documento XML. Utilizar hojas de estilo permite que a partir de un documento XML se pueda generar distintas salidas, como ser HTML o PDF de forma independiente. La creación de hojas de estilo también tiene distintas opciones : las hojas CSS (Cascade Style Sheet) utilizadas actualmente en páginas web, y las XSL (XML Style Language). La primera son una simplificación de las hojas de estilo DSSSL aparecidas junto con GML, que no utilizan un formato parecido a XML. Las XSL son, al igual que las XML Schem, documento XML válidos donde es posible definir el formato del documento. Dependiendo de la forma de visualización que se desee, hay que crear una hoja de estilo para dicho formato. 3 2.2.3. Programación Si queremos realizar aplicaciones que utilicen archivos en formato XML por fortuna tenemos ya mucho trabajo resuelto. El W3C ha especificado dos mecanismos para acceder y trabajar con este tipo de documentos. Estas normas incluyen una jerarquía de objetos que poseen métodos y atributos con los que podremos trabajar y nos simplificarán el trabajo a la hora de programar. Estos mecanismos se denominan SAX y DOM. El primero se utiliza para realizar un recorrido secuencial de los elementos del documentos, y el segundo implica la creación de un árbol en memoria con la jerarquía, donde podemos hacer cualquier tipo de recorrido que necesitemos. Esta especificación es independiente del lenguaje de programación, solo debemos tener alguna biblioteca o soporte nativo implementado para poder utilizarlos. 3. Sintaxis XML Dicen que el XML es un 10 % del SGML y de verdad lo es, porque en realidad las normas que tiene son muy simples. Se escribe en un documento de texto ASCII, igual que el HTML y en la cabecera del documento se tiene que poner el texto <?xml version="1.0"?> En el resto del documento se deben escribir etiquetas encerradas entre “<” y “>”, y cada etiqueta debe tener su correspondiente etiqueta de cierre, que no es más que la misma etiqueta que la anterior pero esta vez encerrada entre “</” y “>”. Pueden ser las etiquetas que nosotros queramos, por eso el lenguaje se llama XML, lenguaje de etiquetas extendido. Más aún, XML no define ninguna etiqueta. Las etiquetas se escriben anidas, unas dentro de otras, lo que define la estructura jerárquica del documento, por ejemplo : <ETIQ1>...<ETIQ2>...</ETIQ2>...</ETIQ1> Cualquier etiqueta puede tener atributos. Le podemos poner los atributos que queramos, y se debe cuidar durante el diseño que si utilizamos atributos no se pierda flexibilidad en un futuro. (Ej : <ETIQ atributo1="valor1" atributo2="valor2"...>). Los comentarios de XML se escriben igual que los de HTML : <!– Comentario –> Y esto es todo lo que es el lenguaje XML en si, aunque tenemos que tener en cuenta que el XML tiene muchos otros lenguajes y tecnologías trabajando alrededor de él. Sin embargo, no cabe duda que la sintaxis XML es realmente reducida y sencilla. Para definir qué etiquetas y atributos debemos utilizar al escribir en XML tenemos que fijarnos en la manera de guardar la información de una forma estructurada y ordenada. Por ejemplo, si deseamos guardar la información relacionada con una base de datos de películas en un documento XML podríamos utilizar un esquema con las siguientes etiqueta : <?xml version="1.0"?> <PELICULA nombre="El Padrino" año=1985> <PERSONAL> <DIRECTOR nombre="Georgie Lucar" /> <INTERPRETE nombre="Marlon Brando" interpreta-a="Don Corleone" /> <INTERPRETE nombre="Al Pacino" interpreta-a="Michael Corleone" /> </PERSONAL> </ARGUMENTO descripción="Pelicula de mafias sicilianas en Estados Unidos"> </PELICULA> 4 Como puede verse en este primer ejemplo las etiquetas las he definido como más me gusto en el momento de escribir este texto. También se puede ver que muchas etiquetas se cierran sobre si mismas. Si bien el esquema anterior funciona bien y cumple su objetivo, no permite de manera fácil extenderla. Supongamos ahora que queremos agregar más datos sobre el director. Una solución podría ser agregar mas atributos a la etiqueta DIRECTOR, lo que haría más difícil su lectura. La solución más elegante sería algo como : <DIRECTOR ranking=”55”> <NOMBRE>Georgie Lucar</NOMBRE> <EDAD>55</EDAD> <NAC>EE.UU</NAC> <TRABAJOS> <FILM>Film 1</FILM> <FILM>FIlm 2</FILM> </TRABAJOS> </DIRECTOR> Puede verse ahora que nuestro documento toma una forma más clara y ordenada, así como también más flexible. También usé atributos, pero ahora no definen contenido (como era el nombre), sino alguna propiedad del director. 4. Bibliografía XML In a Nutshell (2do Edition) - Editorial O’Really 5