1 Introducción a XML Introducción (I)! Qué es XML?! Últimamente todo el mundo habla sobre XML!! Dicen que es un lenguaje etiquetado...es decir: Es un lenguaje como HTML, pero con nuevas etiquetas?! Dicen que con XML se facilita la transmisión de datos... es un protocolo?! Es un lenguaje de programación? 2001 Borja Sotomayor 1
Introducción (II)! Respuesta a esas tres preguntas: NO! XML no es exactamente un lenguaje etiquetado (es un metalenguaje). No es un lenguaje como HTML con una serie de etiquetas predefinidas (<body>, <table>, etc.)! XML no es un protocolo.! XML no es un lenguaje de programación. Ni puede ejecutarse ni puede obtenerse código ejecutable a partir del XML.! Pero entonces... Qué es??? Introducción (III)! XML es un metalenguaje etiquetado.! Un lenguaje para crear nuevos lenguajes! Los lenguajes que permite crear son lenguajes etiquetados (p.ej. HTML es un lenguaje etiquetado)! Con XML podemos crear fácilmente nuevos lenguajes etiquetados a medida. A estos nuevos lenguajes se les suele llamar:! Dialecto XML! Aplicación XML 2001 Borja Sotomayor 2
Introducción (IV)! Para que sirven los dialectos XML? Nos permiten almacenar datos utilizando un lenguaje etiquetado.! Por qué deberíamos molestarnos en utilizar un lenguaje etiquetado para almacenar nuestros datos? Si quiero almacenar datos sobre unas listas de distribución, podría hacerlo con una sintaxis ad hoc de la siguiente manera: [ESIDE-TIM] (Lista de TiM) 1jolopez@rigel.deusto.es 3jugonza@rigel.deusto.es [AMIGOS] (Lista de amigos) colegui@mixmail.com compi@hotmail.com amiguete@wanadoo.es Documento de Texto Formato inventado (ad hoc) Por qué debería hacerlo con un lenguaje etiquetado? <listas> <lista nombre= ESIDE-TIM desc= Lista de TiM > <subs mail= 1jolopez@rigel.deusto.es /> <subs mail= 3jugonza@rigel.deusto.es /> </lista> <lista nombre= AMIGOS desc= Lista de amigos > <subs mail= colegui@mixmail.com /> <subs mail= compi@hotmail.com /> <subs mail= amiguete@wanadoo.es /> </lista> </listas> XML 2001 Borja Sotomayor 3
Introducción (V)! Por qué? " XML es un lenguaje prácticamente estándar. Es muy fácil acceder a los datos contenidos en documentos XML (independientemente del dialecto que hayamos creado) puesto que existe mucho software para leer (parsear) documentos XML.! Si utilizamos un formato ad hoc (o no estándar), solamente nosotros podemos leer nuestro documento.! Si utilizamos XML, será muy fácil intercambiar documentos. Introducción (VI)! Además, si nuestros datos están almacenados en XML (en un dialecto XML), podremos realizar muchas operaciones que son posibles con XML:! Transformaciones! Estilos! Procesar el documento a través de un modelo de objetos.! Etc. 2001 Borja Sotomayor 4
Introducción (VII)! Ojo! XML es un lenguaje orientado al contenido. A diferencia de una etiqueta HTML (<h1>, por ejemplo) una etiqueta XML no se visualiza de ninguna manera especial.! No tendremos más remedio que aplicar estilos o transformaciones. Introducción (VII)! Las dos preguntas del millón:! Cómo distinguimos entre un documento XML y un documento que no es XML? " well-formedness! Cómo definimos los dialectos? " validity 2001 Borja Sotomayor 5
Well-Formedness (I)! Para que un documento XML sea considerado como tal tiene que cumplir las rígidas normas de sintaxis de XML.! Cuando un documento cumple estas normas de sintaxis, se dice que está bien formado (well formed document)! Si no, resultará imposible parsearlo. Well-Formedness (II)! En XML una etiqueta empieza por el símbolo menor que < y termina con el símbolo mayor que >! Justo después del símbolo < se encuentra el nombre de la etiqueta. <listas> <lista> <subs> 2001 Borja Sotomayor 6
Well-Formedness (III)! Hay dos tipos de etiquetas:! Non-Empty o contenedora : Contienen algo. Tiene que haber una etiqueta de comienzo y una etiqueta de fin. En la etiqueta de fin, el símbolo < siempre va seguido del símbolo / <lista>...... </lista> Well-Formedness (IV)! Empty o singular: No contienen nada. El símbolo > debe ir siempre precedido del símbolo / <subs mail= compi@hotmail.com /> También se admite la forma: <subs mail= compi@hotmail.com ></subs> 2001 Borja Sotomayor 7
Well-Formedness (V)! Las etiquetas pueden tener atributos. Estos atributos indican opciones de la etiqueta. <subs mail= compi@hotmail.com />! Los atributos tienen la siguiente sintaxis: nombre_atributo= valor Well-Formedness (VI)! Si hay mas de un atributo, tienen que ir separados por espacios.! Si la etiqueta es contenedora, los atributos sólo se escriben en la etiqueta de comienzo. 2001 Borja Sotomayor 8
Well-Formedness (VII)! Toda etiqueta de comienzo debe tener etiqueta de fin.! Las etiquetas no deben solaparse.! Debe haber una única etiqueta en la raíz del documento (<listas>).! Los valores de los atributos deben ir entre comillas (dobles o simples)! Una etiqueta no puede tener dos atributos con el mismo nombre. Validity (I)! Cualquier fichero que esté bien formado es parseable y puede considerarse un documento XML.! Podemos acceder a el desde un modelo de objetos.! Podemos aplicarle estilos.! Podemos aplicarle transformaciones.! Sin embargo, a veces nos puede interesar definir formalmente el dialecto XML, para comprobar que el documento no sólo está bien formado, sino que además cumple las reglas de ese dialecto. 2001 Borja Sotomayor 9
<listas> <lista nombre= ESIDE-TIM desc= Lista de TiM > <subs mail= 1jolopez@rigel.deusto.es /> <subs mail= 3jugonza@rigel.deusto.es /> </lista> <lista nombre= AMIGOS desc= Lista de amigos > <subs mail= colegui@mixmail.com /> <subs mail= compi@hotmail.com /> <subs mail= amiguete@wanadoo.es /> </lista> </listas> Normas del Dialecto ListaML Hay tres tipos de etiquetas listas (contenedora) RAIZ lista (contenedora) Atributo nombre (texto) Atributo desc (texto) subs (singular) Atributo mail (texto) Listas puede contener 0 o más etiquetas lista Lista puede contener 0 o más etiquetas subs Está bien formado? Si Es válido? Si No No Validity (II)! El documento anterior es válido? SI " Cumple todas las normas del dialecto.! Y el siguiente? <listas> <subs mail= 1jolopez@rigel.deusto.es /> </listas>! NO " listas no puede contener subs. Solo puede contener lista. 2001 Borja Sotomayor 10
Validity (III)! A esta recopilación de normas que definen cómo debe ser el documento se le llama el DTD.! Document Type Definition! Se compone con una sintaxis concreta.! El DTD de este documento sería: Validity (IV) <!ELEMENT lista (subs*)> <!ATTLIST lista nombre CDATA #REQUIRED desc CDATA #REQUIRED > <!ELEMENT listas (lista*)> <!ELEMENT subs EMPTY> <!ATTLIST subs mail CDATA #REQUIRED > 2001 Borja Sotomayor 11
Validity (V)! Además, antes de que empiece el documento XML, hay que insertar la siguiente línea: <!DOCTYPE listas SYSTEM "listaml.dtd">! El elemento raiz es listas! El dtd está almacenado en el fichero listaml.dtd (que reside en el mismo directorio que el documento XML) Validity (VI)! Con el <!DOCTYPE> le indicamos al parseador de XML que, si quiere comprobar la validez del fichero, tiene que hacerlo utilizando el DTD que le indicamos ahí. 2001 Borja Sotomayor 12
Tecnologías XML (I)! XSLT: extensible Style Sheet Transforms. Permite transformar un documento XML en otro documento XML de otro dialecto, o en otro formato distinto.! XSL-FO: extensible Style Sheet Formatting Objects. Permite aplicarle formato a un documento XML. Tecnologías XML (II)! XPath: (Muy relacionado con XSLT) Permite referencias partes de un documento XML.! XLink: Enlaces en documentos XML.! DOM: Document Object Model. API orientada a objetos para acceder al contenido de un documento XML. 2001 Borja Sotomayor 13
Tecnologías XML (III)! SAX: Simple API for XML. API orientada a eventos para acceder al contenido de un documento. Aplicaciones (I)! Y todo esto el XML... Para que sirve?! Aunque no lo parezca, poder almacenar nuestros datos en un formato! Portable! Extensible! Fácilmente accesible desde lenguajes de programación (ya tenemos APIs). es una gran ventaja. 2001 Borja Sotomayor 14
Aplicaciones (II)! Es como almacenar nuestros datos en el Esperanto de Internet. Podemos intercambiarlos fácilmente.! Es un formato universal de datos. La plataforma.net de Microsoft utiliza XML exhaustivamente para el intercambio de datos.! Además, podemos utilizar toda la gama existente de tecnologías XML, sobre todo las transformaciones.! Con XSLT es muy fácil transformar un documento XML de un dialecto a otro, o a un formato no-xml si queremos. Documento XML <alumno dni="12345678" nombre="fulanito" apellidos="pí"> <titulacion nombre="filología ARAMEA" cod="123-4"> <asignaturas curso="3"> <asignatura nombre="fonología ARAMEA II" cal="8" /> <asignatura nombre="literatura PERSA III" cal="6" /> <asignatura nombre="introducción A LA LINGUISTICA" cal="9" /> <asignatura nombre="pronunciación" cal="7" /> </asignaturas> </titulacion> </alumno> Transformación Transformación Transformación Mot 2000 El alumno FULANITO PÍ, de 3er curso de FILOLOGÍA ARAMEA, ha obtenido las siguientes calificaciones: FONOLOGÍA ARAMEA II (8) LITERATURA PERSA III (6) Navegador de Internet Base de Datos Procesador de Textos 2001 Borja Sotomayor 15
Dialectos XML Existentes (I)! SMIL: Synchronized Multimedia Integration Language! SVG: Scalable Vector Graphics! CML: Chemical Markup Language! MathML: Mathematical Markup Language! XHTML: extensible Hypertext Markup Language Dialectos XML Existentes (II)! SOAP: Simple Object Access Protocol 2001 Borja Sotomayor 16