340 likes | 481 Views
XML (eXtensible Mark-up Language). 27 de Mayo de 2004. Fernando Alonso Blázquez. Índice. Introducción ¿Qué es XML? Ventajas de XML Construyendo documentos XML Estructura jerárquica de elementos Algunas normas El prólogo Elementos Atributos Secciones CDATA Comentarios SAX2 API.
E N D
XML (eXtensible Mark-up Language) 27 de Mayo de 2004 Fernando Alonso Blázquez
Índice • Introducción • ¿Qué es XML? • Ventajas de XML • Construyendo documentos XML • Estructura jerárquica de elementos • Algunas normas • El prólogo • Elementos • Atributos • Secciones CDATA • Comentarios • SAX2 API
Introducción • Webs de asignaturas de la Escuela • Informática 3 • Intercambio de Información B2B • Almacenamiento de Información • Producción automática de Libros, Artículos, Manuales... • Explotación de los Metadatos • Keywords, Indexing, Annotations, Interdocument linking...
¿Qué es XML? • Es un subconjunto de SGML (Standard Generalized Mark-up Language), simplificado y adaptado a Internet • XML (eXtensible Mark-up Language) no es un lenguaje de marcado • XML es un meta-lenguaje que permite definir lenguajes de marcado adecuados a usos determinados <libro> <autor>Antonio Muñoz Molina</autor> <titulo>El Jinete Polaco</titulo> <precio moneda=“EURO”>20</precio> </libro>
Ventajas de XML • Procesable por humanos y por software • Separa la información o el contenido de su presentación o formato • Ideal para transacciones B2B • Permite poderosas técnicas de extracción de información y data-mining • Fácil análisis sintáctico
Construyendo documentos XML • El elemento y sus atributos <autor pais=“ES”>Antonio Muñoz Molina</autor> • XML “bien-formado” (well-formed) • Cumple una serie de reglas descritas en la especificación oficial de XML v1.0 • World Wide Web Consortium (W3C) Contenido del elemento Nombre del atributo Nombre del elemento Etiqueta de fin Valor del atributo
Estructura jerárquica de elementos • Los elementos deben seguir una estructura de “árbol”, es decir, estríctamente jeráquica • Los elementos deben estar correctamente anidados • Los elementos no se pueden superponer entre ellos • Sólo puede haber un elemento raíz, en el que están contenidos todos los demás XML erróneo <nombre>Topacio Jade<email> </nombre>topacio.jade@mail.com</email>
Estructura jerárquica de elementos remitente nombre: Topacio Jade email: topacio.jade@mail.com destinatario nombre: Esmeralda Turquesa mensaje email: eturquesa@gmail.com asunto: Informe de ventas texto parrafo: Ya esta acabado el informe. parrafo: Lo he dejado en el servidor del departamento.
Estructura jerárquica de elementos <?xml version="1.0" encoding="UTF-7"?> <!DOCTYPE mensaje SYSTEM “mensaje.dtd”> <mensaje> <remitente> <nombre>Topacio Jade</nombre> <email>topacio.jade@mail.com</email> </remitente> <destinatario> <nombre>Esmeralda Turquesa</nombre> <email>eturquesa@gmai.com</email> </destinatario> <asunto>Informe de ventas</asunto> <texto> <parrafo> Ya esta acabado el informe. </parrafo> <parrafo> Lo he dejado en el servidor del departamento. </parrafo> </texto> </mensaje>
Algunas normas <animal> Perro <raza tipo="Cocker Spaniel"> <animal> Vaca <raza tipo="Holstein"> • Todas las etiquetas tienen que estar debidamente “cerradas” • etiqueta de cierre que se corresponda con la de apertura • Las etiquetas sin contenido tienen una sintaxis especial <animal> Perro <raza tipo="Cocker Spaniel"> </animal> <animal> Vaca <raza tipo="Holstein"> </animal> <animal> Perro <raza tipo="Cocker Spaniel" /> </animal> <animal> Vaca <raza tipo="Holstein" /> </animal>
Algunas normas • Un nombre de elemento, atributo, entidad, etc., debe empezar siempre por una letra. • Las letras “XML” (o “xml” o “xMl”,etc.) no pueden usarse como caracteres iniciales de un nombre de elemento, atributo, etc. • XML es “case-sensitive”: <autor><Autor> • El uso del espacio en blanco y los saltos de línea sólo se tienen en cuenta cuando aparecen en el valor de un atributo, o cuando se indica su significancia.
Marcado y datos • Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan “marcas” (mark-up) y son las partes que el analizador sintáctico (parser) espera comprender • El resto del documento, que se encuentra entre las “marcas”, son los datos que resultan entendibles por las personas • Marcas en un documento XML son aquellas que comienzan con “<“ y terminan con “>” • En el caso de referencias de entidad, el carácter inicial es “&” y el final “;”
El prólogo • Es opcional • La primera línea permite especificar: • La versión de XML (de momento sólo 1.0) • La codificación de carácter (US-ASCII, UTF-8, UTF-7, UCS-2, EUC-JP, Big5, ISO-8859-1, etc.) • La segunda línea define el tipo de documento, especificando qué DTD (Document Type Definitions) valida y define los datos que contiene <?xml version="1.0" encoding="UTF-7”?> <!DOCTYPE mensaje SYSTEM “mensaje.dtd”> <?xml version="1.0" encoding=“ISO-8859-1”?> <!DOCTYPE HTML PUBLIC “-/ /W3C/ /DTD HTML 3.2 Final/ /EN”> <?xml version="1.0" encoding=“Big5”?>
Elementos • Elementos con contenido • Elementos vacíos <nombre>Fulano Mengánez</nombre> <aviso tipo=“emergencia” gravedad=“mortal”> Que no cunda el pánico</aviso> <identificador referencia=“1234567890”/> <linea-horizontal/>
Atributos • Manera de incorporar características o propiedades a los elementos • Pueden estar marcados entre comillas simples (‘) o dobles (“) • Un concepto se puede representar de diversas formas: consistencia <verdura clase=“zanahoria” longitud=’15” y media’> <cita texto=“’Hola, buenos días’, dijo él”> <gato><nombre>Micifú</nombre><raza>Persa</raza></gato> <gato raza=“Persa”>Micifú</gato> <gato raza=“Persa” nombre=“Micifú”/>
Entidades predefinidas • En XML 1.0 se definen cinco entidades para representar caracteres especiales y que no se interpretan como marcado por el procesadr XML
Secciones CDATA • Construcción en XML que permite especificar datos, utilizando cualquier carácter, especial o no, sin que se interprete como marcado XML. • La razón de esta construcción es que a veces es necesario para los autores de documentos XML, poder leerlo facilmente sin tener que descifrar los códigos de entidades. Especialmente cuando son muchas. <ejemplo> <HTML> <HEAD><TITLE>Rock & ROLL</TITLE> </HEAD> </ejemplo> <ejemplo> <![CDATA[ <HTML> <HEAD><TITLE>Rock & Roll</TITLE></HEAD> ]]> </ejemplo>
Comentarios • Insertados en el documento XML • Ignorados por el procesado de la información y las reproducciones del documento • Tienen el mismo formato que en HTML • Comienzan por “<!--” y terminan con “-->” • Se pueden introducir en cualquier lugar de la instancia o del prólogo, pero nunca dentro de las declaraciones, etiquetas u otros comentarios.
DTD (Document Type Definition) 27 de Mayo de 2004 Fernando Alonso Blázquez
Índice • Validación y definición de documentos • DTD: Document Type Definition • Declaraciones de tipo Elemento • Modelos de contenido • Declaraciones de lista de Atributos • Tipos de Atributos • Declaración de Entidades
Document Type Definition (DTD) • Es como definir nuestro propio lenguaje de marcado para una aplicación específica • Define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos • Puede residir en un fichero externo y ser compartido por varios documentos XML. • O bien puede estar contenido en el propio documento XML, como parte de su declaración de su prólogo. • El documento XML que se ajusta a su DTD, se denomina “valido” ”bien-formado”
Ejemplos de DTD <!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>Topacio Jade</nombre> <calle>Minas de Moria, 13</calle> <ciudad>Azanulbizar</ciudad> <pais>Khuzdul</pais> <codigo>78125</codigo> </etiqueta> <!DOCTYPE coche SYSTEM “http://www.tecnun.es/coche.dtd”> <coche> <modelo>...</modelo> ... </coche>
Declaraciones de tipo Elemento Documento XML válido de acuerdo al DTD anterior <receta> <titulo>Arroz cocido</titulo> <ingredientes>Arroz</ingredientes> <procedimiento>Cocer el arroz</procedimiento> </receta> • Deben empezar con “<!ELEMENT” seguidas por el identificador genérico del elemento que se declara • A continuación tienen una especificación del contenido • Ejemplo: • <!ELEMENT receta (titulo, ingredientes, procedimiento)> Documento XML no válido <receta> <parrafo>La siguiente receta me la pasó Alvaro</parrafo> <titulo>Arroz cocido</titulo> <ingredientes>Arroz</ingredientes> <procedimiento>Cocer el arroz</procedimiento> </receta>
Especificación de contenido • EMPTY: No tiene contenido. <!ELEMENT linea-horizontal EMPTY> • ANY: Puede tener cualquier contenido. Es mejor no usarla y estructurar adecuadamente los documentos <!ELEMENT batiburrillo ANY> • Mixed: Puede tener caracteres o una mezcla de caracteres y sub-elementos especificados <!ELEMENT enfasis (#PCDATA)> <!ELEMENT parrafo (#PCDATA|enfasis)*> • Element: Sólo puede contener sub-elementos especificados <!ELEMENT mensaje (remite, texto)>
Modelos de contenido • <!ELEMENT aviso (parrafo)> • <aviso> sólo puede contener un <parrafo> • <!ELEMENT aviso (titulo, parrafo> • <aviso> debe contener un elemento <titulo> seguido de un elemento <parrafo> • <!ELEMENT aviso (parrafo | grafico)> • La barra vertical “|” indica opción. El número de opciones no está limitado y se pueden agrupar usando paréntesis • <!ELEMENT aviso (titulo, (parrafo | grafico))> • <aviso> debe contener un <titulo> seguido de un <parrafo> o un <grafico>
Modelos de contenido • Indicador de frecuencia • Siguen directamente a un identificador general, una secuencia o una opción • No pueden ir precedidos por espacios en blanco <!ELEMENT aviso (titulo?, (parrafo+, grafico)*)>
Declaración de lista de Atributos <!ELEMENT mensaje (de, a, texto)> <!ATTLIST mensaje prioridad (normal | urgente) normal> <!ELEMENT texto (#PCDATA)> <!ATTLIST texto idioma CDATA #REQUIRED> • Atributos • Añaden información adicional a los elementos • Sólo se pueden especificar una vez y en cualquier orden • No pueden contener sub-atributos • Declaración • Empiezan con “<!ATTLIST” • Identificador del elemento al que se aplica • Nombre del atributo • Tipo • Valor por defecto <mensaje prioridad=“urgente”> <de>Topacio Jade</de> <a>Esmeralda Turquesa</a> <texto idioma=“español”> Hay que preparar los informes de junio </texto> </mensaje>
Declaración de lista de Atributos • #REQUIRED: Es obligatorio especificar el atributo. No tiene valor por defecto. • #IMPLIED: Se puede omitir el atributo, sin que se adopte automáticamente un valor por defecto <!ATTLIST IMG URL CDATA #REQUIRED ALT CDATE #IMPLIED>
Tipos de Atributos • Atributos CDATA (character data): Pueden contener casi cualquier cosa <!ATTLIST mensaje fecha CDATA #REQUIRED> < mensaje fecha=“21 de Mayo de 2003”> • Atributos enumerados: Sólo pueden contener un valor de entre un número reducido de opciones <!ATTLIST mensaje prioridad (normal | urgente) normal>
Tipos de Atributos • 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 • Permite implementar un sistema de hipervínculos en un documento XML <!ELEMENT enlace EMPTY> <!ATTLIST enlace destino IDREF #REQUIRED> <!ELEMENT capitulo (parrafo)*> <!ATTLIST capitulo referencia ID #IMPLIED>
Declaración de Entidades • La Entidades se utilizan para hacer referencia a objetos (ficheros, páginas Web, imágenes,...) que no deben ser analizados sintácticamente según las reglas de XML • Se declaran mediante “<!ENTITY” • Puede usarse para declarar una abreviatura que se utiliza como una forma más corta de algunos textos • En otras ocasiones es una referencias a un objeto externo o local
Tipos de Entidades • Las entidades pueden ser: • Internas – Externas • Analizadas o No analizadas • Generales o Parámetro • Entidades generales internas: • Son básicamente abreviaturas definidas en la sección del DTD del documento XML • Son siempre entidades analizadas <!DOCTYPE texto[ <!ENTITY ovni “Objeto Volador No Identificado”> ]> <texto> <titulo> Durmiendo en clase, Topacio soñó con un &ovni; </titulo> </texto>
Tipos de Entidades • Entidades generales externas analizadas <!ENTITY intro SYSTEM “http://www.tecnun.es/intro.xml> • Entidades no analizadas <!ENTITY logo SYSTEM “http://www.tecnun.es/logo.gif> • Entidades parámetro Internas <!DOCTYPE texto[ <!ENTITY % elemento-alf “!ELEMENT ALF (#PCDATA)>”> %elemento-alf; ]> • Entidades parámetro Externas <!DOCTYPE texto[ <!ENTITY % elemento-alf SYSTEM “alf.ent”> ... %elemento-alf; ]>
Ejemplo de DTD <?xml encoding=“UTF-7”?> <!ELEMENT lista (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> <?xml version=“1.0”?> <!DOCTYPE lista SYSTEM “Lista.dtd”> <lista> <persona sexo=“hombre” id=“Topacio”> <nombre>Topacio Jade</nombre> <email>topacio.jade@mail.com</email> <relacion amigo-de=“esmeralda”> </persona> <persona sexo=“mujer” id=“esmeralda”> <nombre>Esmeralda Turquesa</nombre> <email>eturquesa@gmail.com</email> </persona> </lista>