Está en la página 1de 35

XML

(eXtensible Mark-up Language)

Introduccin
Qu es XML? Ventajas de XML

Construyendo documentos XML


Estructura jerrquica de elementos Algunas normas El prlogo Elementos Atributos Secciones CDATA Comentarios

SAX2 API

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 Muoz Molina</autor> <titulo>El Jinete Polaco</titulo> <precio moneda=EURO>20</precio> </libro>

Procesable por humanos y por software Separa la informacin o el contenido de su presentacin o formato

Ideal para transacciones B2B Permite poderosas tcnicas de extraccin de informacin y data-mining Fcil anlisis sintctico

El elemento y sus atributos


Nombre del atributo Contenido del elemento

<autor pais=ES>Antonio Muoz Molina</autor>


Nombre del elemento Valor del atributo Etiqueta de fin

XML bien-formado (well-formed)


Cumple una serie de reglas descritas en la especificacin oficial de XML v1.0 World Wide Web Consortium (W3C)

Los elementos deben seguir una estructura de rbol, es decir, estrctamente jerquica Los elementos deben estar correctamente anidados Los elementos no se pueden superponer entre ellos Slo puede haber un elemento raz, en el que estn contenidos todos los dems

XML errneo
<nombre>Topacio Jade<email> </nombre>topacio.jade@mail.com</email>

remitente

nombre: Topacio Jade email: topacio.jade@mail.com

destinatario mensaje

nombre: Esmeralda Turquesa email: eturquesa@gmail.com

asunto: Informe de ventas

texto

parrafo: Ya esta acabado el informe. parrafo: Lo he dejado en el servidor del departamento.

<?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>

<animal> Perro <raza tipo="Cocker Spaniel"> <animal> Vaca <raza tipo="Holstein"> <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>

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

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 lnea slo se tienen en cuenta cuando aparecen en el valor de un atributo, o cuando se indica su significancia.

Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan marcas (mark-up) y son las partes que el analizador sintctico (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 carcter inicial es & y el final ;

Es opcional La primera lnea permite especificar:


La versin de XML (de momento slo 1.0) La codificacin de carcter (US-ASCII, UTF-8, UTF7, UCS-2, EUC-JP, Big5, ISO-8859-1, etc.)

La segunda lnea 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 con contenido


<nombre>Fulano Mengnez</nombre>

<aviso tipo=emergencia gravedad=mortal> Que no cunda el pnico</aviso>

Elementos vacos
<identificador referencia=1234567890/> <linea-horizontal/>

Manera de incorporar caractersticas o propiedades a los elementos Pueden estar marcados entre comillas simples () o dobles ()
<verdura clase=zanahoria longitud=15 y media> <cita texto=Hola, buenos das, dijo l>

Un concepto se puede representar de diversas formas: consistencia


<gato><nombre>Micif</nombre><raza>Persa</raza></gato> <gato raza=Persa>Micif</gato> <gato raza=Persa nombre=Micif/>

En XML 1.0 se definen cinco entidades para representar caracteres especiales y que no se interpretan como marcado por el procesadr XML
Entidad &amp; &lt; &gt; &apos; &quot; Caracter & < >

Construccin en XML que permite especificar <ejemplo> datos, utilizando cualquier carcter, especial &lt;HTML&gt; o no, sin que se interprete como marcado &lt;HEAD&gt;&lt;TITLE&gt;Rock &amp; ROLL&lt;/TITLE&gt; XML. &lt;/HEAD&gt; La razn de esta construccin es que a veces </ejemplo> es necesario para los autores de documentos XML, poder leerlo facilmente sin tener que descifrar los cdigos de entidades. <ejemplo> Especialmente cuando son muchas.
<![CDATA[
<HTML> <HEAD><TITLE>Rock & Roll</TITLE></HEAD> ]]>

</ejemplo>

Insertados en el documento XML Ignorados por el procesado de la informacin y las reproducciones del documento Tienen el mismo formato que en HTML

Se pueden introducir en cualquier lugar de la instancia o del prlogo, pero nunca dentro de las declaraciones, etiquetas u otros comentarios.

Comienzan por <!-- y terminan con -->

DTD
(Document Type Definition)

Validacin y definicin de documentos


DTD: Document Type Definition

Declaraciones de tipo Elemento


Modelos de contenido

Declaraciones de lista de Atributos


Tipos de Atributos

Declaracin de Entidades

Es como definir nuestro propio lenguaje de marcado para una aplicacin especfica 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 declaracin de su prlogo. El documento XML que se ajusta a su DTD, se denomina valido bienformado

<!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>

Documento XML vlido de acuerdo al DTD anterior Deben empezar con <!ELEMENT seguidas <receta> por el identificador genrico del elemento <titulo>Arroz cocido</titulo> <ingredientes>Arroz</ingredientes> que se declara <procedimiento>Cocer el arroz</procedimiento> </receta> A continuacin tienen una especificacin del contenido Ejemplo:
<!ELEMENT receta (titulo, ingredientes, procedimiento)>

Documento XML no vlido


<receta>

<parrafo>La siguiente receta me la pas Alvaro</parrafo> <titulo>Arroz cocido</titulo> <ingredientes>Arroz</ingredientes> <procedimiento>Cocer el arroz</procedimiento> </receta>

EMPTY: No tiene contenido. ANY: Puede tener cualquier contenido. Es mejor no usarla y estructurar adecuadamente los documentos Mixed: Puede tener caracteres o una mezcla de caracteres y sub-elementos especificados Element: Slo puede contener subelementos especificados
<!ELEMENT enfasis (#PCDATA)> <!ELEMENT parrafo (#PCDATA|enfasis)*>

<!ELEMENT linea-horizontal EMPTY>

<!ELEMENT batiburrillo ANY>

<!ELEMENT mensaje (remite, texto)>

<!ELEMENT aviso (parrafo)>

<aviso> slo puede contener un <parrafo>


<aviso> debe contener un elemento <titulo> seguido de un elemento <parrafo> La barra vertical | indica opcin. El nmero de opciones no est limitado y se pueden agrupar usando parntesis <aviso> debe contener un <titulo> seguido de un <parrafo> o un <grafico>

<!ELEMENT aviso (titulo, parrafo>

<!ELEMENT aviso (parrafo | grafico)>

<!ELEMENT aviso (titulo, (parrafo | grafico))>

Indicador de frecuencia
Siguen directamente a un identificador general, una secuencia o una opcin No pueden ir precedidos por espacios en blanco

Indicador ? *
+

Frecuencia Opcional (0 1 vez) Opcional y repetible (0 ms veces) Necesario y repetible (1 ms veces)

<!ELEMENT aviso (titulo?, (parrafo+, grafico)*)>

<!ELEMENT mensaje (de, a, texto)> Aaden informacin adicional a los elementos <!ATTLIST mensaje prioridad (normal | urgente) normal> <!ELEMENT texto (#PCDATA)> Slo se pueden especificar una vez y en cualquier <!ATTLIST texto idioma CDATA #REQUIRED>

Atributos

<mensaje prioridad=urgente> <de>Topacio Jade</de> Empiezan con <!ATTLIST <a>Esmeralda Turquesa</a> <texto idioma=espaol Identificador del > elemento al que Hay que preparar los informes de junio Nombre del atributo </texto> Tipo </mensaje>

Declaracin

orden No pueden contener sub-atributos

se aplica

Valor por defecto

#REQUIRED: Es obligatorio especificar el atributo. No tiene valor por defecto. #IMPLIED: Se puede omitir el atributo, sin que se adopte automticamente un valor por defecto <!ATTLIST IMG URL CDATA #REQUIRED ALT CDATE #IMPLIED>

Atributos CDATA (character data): Pueden contener casi cualquier cosa

<!ATTLIST mensaje fecha CDATA #REQUIRED> < mensaje fecha=21 de Mayo de 2003>

Atributos enumerados: Slo pueden contener un valor de entre un nmero reducido de opciones

<!ATTLIST mensaje prioridad (normal | urgente) normal>

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 hipervnculos en un documento XML
<!ELEMENT <!ATTLIST <!ELEMENT <!ATTLIST enlace EMPTY> enlace destino IDREF #REQUIRED> capitulo (parrafo)*> capitulo referencia ID #IMPLIED>

La Entidades se utilizan para hacer referencia a objetos (ficheros, pginas Web, imgenes,...) que no deben ser analizados sintcticamente segn las reglas de XML Se declaran mediante <!ENTITY Puede usarse para declarar una abreviatura que se utiliza como una forma ms corta de algunos textos En otras ocasiones es una referencias a un objeto externo o local

Las entidades pueden ser:


Internas Externas Analizadas o No analizadas Generales o Parmetro

Entidades generales internas:


<!DOCTYPE texto[ <!ENTITY ovni Objeto Volador No Identificado> ]> <texto> <titulo> Durmiendo en clase, Topacio so con un &ovni; </titulo> </texto>

Son bsicamente abreviaturas definidas en la seccin del DTD del documento XML Son siempre entidades analizadas

Entidades generales externas analizadas


<!ENTITY intro SYSTEM http://www.tecnun.es/intro.xml>

Entidades no analizadas

Entidades parmetro Internas

<!ENTITY logo SYSTEM http://www.tecnun.es/logo.gif>

Entidades parmetro Externas

<!DOCTYPE texto[ <!ENTITY % elemento-alf !ELEMENT ALF (#PCDATA)>> %elemento-alf; ]>

<!DOCTYPE texto[ <!ENTITY % elemento-alf SYSTEM alf.ent> ... %elemento-alf; ]>

<?xml encoding=UTF-7?>
<!ELEMENT lista (persona)+> <!ELEMENT persona (nombre, email*, relacion?)> <!ATTLIST persona id ID #REQUIRED> <?xml version=1.0?> <!ATTLIST persona sexo (hombre | mujer) #IMPLIED> <!ELEMENT nombre <!DOCTYPE lista(#PCDATA)> SYSTEM Lista.dtd> <!ELEMENT email (#PCDATA)> <lista> <!ELEMENT relacion EMPTY> <persona sexo=hombre id=Topacio> <!ATTLIST relacion amigo-de IDREFS #IMPLIED <nombre>Topacio Jade</nombre> enemigo-de IDREFS #IMPLIED> <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>