Está en la página 1de 34

XML

(eXtensible Mark-up Language)


27 de Mayo de 2004

Fernando Alonso Blzquez

ndice
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

Introduccin
Webs de asignaturas de la Escuela
Informtica 3

Intercambio de Informacin B2B


Almacenamiento de Informacin

Produccin automtica de Libros, Artculos,


Manuales...

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

Ventajas de XML
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

Construyendo documentos XML


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)

Estructura jerrquica de elementos


Los elementos deben seguir una estructura
de rbol, es decir, estrctamente
jerquica
Los elementos deben estar correctamente
XML errneo
anidados
<nombre>Topacio Jade<email>
Los elementos
no se pueden superponer
</nombre>topacio.jade@mail.com</email>
entre ellos
Slo puede haber un elemento raz, en el
que estn contenidos todos los dems

Estructura jerrquica 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 jerrquica 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

Todas
etiquetas
tienen que estar
<raza las
tipo="Cocker
Spaniel">
debidamente
cerradas
<animal>
Vaca

<raza
etiqueta
de cierre que se corresponda con la de
tipo="Holstein">
<animal> Perro
apertura
<raza tipo="Cocker Spaniel">

Las
etiquetas sin contenido tienen una
</animal>
sintaxis
<animal> especial
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
lnea slo 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 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 ;

El prlogo
Es opcional
version="1.0" encoding="UTF-7?>
<?xml
La
primera
lnea permite especificar:
<!DOCTYPE mensaje SYSTEM mensaje.dtd>

La versin de XML (de momento slo 1.0)


La codificacin de carcter (US-ASCII, UTF-8,
UTF-7,
UCS-2, EUC-JP,
Big5, ISO-8859-1, etc.)
<?xml
version="1.0"
encoding=ISO-8859-1?>
<!DOCTYPE HTML PUBLIC -/ /W3C/ /DTD HTML 3.2 Final/ /EN>

La segunda lnea define el tipo de


documento, especificando qu DTD
<?xml version="1.0" encoding=Big5?>
(Document Type Definitions) valida y
define los datos que contiene

Elementos
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/>

Atributos
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/>

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
Entidad
&amp;

Caracter
&

&lt;

<

&gt;

>

&apos;

&quot;

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

Comentarios
Insertados en el documento XML
Ignorados por el procesado de la informacin
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 prlogo, pero nunca dentro de
las declaraciones, etiquetas u otros
comentarios.

DTD
(Document Type Definition)
27 de Mayo de 2004

Fernando Alonso Blzquez

ndice
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

Document Type Definition (DTD)


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 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 vlido de acuerdo al DTD anterior

<receta>
Deben empezar con <!ELEMENT
<titulo>Arroz cocido</titulo>
seguidas por el identificador genrico del
<ingredientes>Arroz</ingredientes>
<procedimiento>Cocer
el
arroz</procedimiento>
Documento XML
no
vlido
elemento
que
se
declara
</receta>
<receta>
A continuacin tienen una especificacin
<parrafo>La siguiente receta me la pas Alvaro</parrafo>
del
contenido
<titulo>Arroz
cocido</titulo>
<ingredientes>Arroz</ingredientes>
Ejemplo:
<procedimiento>Cocer el arroz</procedimiento>
</receta>

<!ELEMENT receta (titulo, ingredientes, procedimiento)>

Especificacin 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: Slo puede contener sub-elementos


especificados
<!ELEMENT mensaje (remite, texto)>

Modelos de contenido
<!ELEMENT aviso (parrafo)>

<aviso> slo 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 opcin. El nmero de


opciones no est limitado y se pueden agrupar
usando parntesis

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

Declaracin de lista de Atributos


<!ELEMENT
Atributos
mensaje

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

orden
No pueden contener sub-atributos

Declaracin

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

Valor por defecto

se aplica

Declaracin 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 automticamente 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: Slo pueden contener


un valor de entre un nmero 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 hipervnculos
en un documento XML
<!ELEMENT
<!ATTLIST
<!ELEMENT
<!ATTLIST

enlace EMPTY>
enlace destino IDREF #REQUIRED>
capitulo (parrafo)*>
capitulo referencia ID #IMPLIED>

Declaracin de Entidades
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

Tipos de Entidades
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

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 parmetro Internas


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

Entidades parmetro 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>
<?xml version=1.0?>
<!ATTLIST
persona sexo (hombre | mujer) #IMPLIED>
<!ELEMENT nombre (#PCDATA)>
<!DOCTYPE lista 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>

También podría gustarte