Está en la página 1de 40

Contenidos

Antecedentes

Lenguaje XML

XML
Jose Emilio Labra Gayo

Octubre 2006

Jose Emilio Labra Gayo


XML

DTDs

Espacios de nombres

Contenidos

Antecedentes

Contenidos
Antecedentes
Unicode y URIs
Lenguaje XML
DTDs
Espacios de nombres

Jose Emilio Labra Gayo


XML

Lenguaje XML

DTDs

Espacios de nombres

Contenidos

Antecedentes

Arquitectura de la Web

Jose Emilio Labra Gayo


XML

Lenguaje XML

DTDs

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Unicode y URIs

Unicode

Consorcio de empresas dedicadas a internacionalizacion

Objetivo: Representar los smbolos escritos en todos los


idiomas

Asocia un codigo u
nico a cada smbolo

Ejemplo: 2200 en hexadecimal =

Diversas codificaciones: UTF-8, UTF-16, UTF-32, etc.

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Unicode y URIs

URI

URI (Identificadores u
nicos de recursos)
I URI = URL + URN
I

URL (Locator) tiene doble funcionalidad:


I
I

Ejemplo: http://www.uniovi.es
URN: Nombre u
nico de recursos
I

Ejemplo: urn:isbn:0-395-36341-1

IRI (Internationalized Resource Identifier) permite incluir


caracteres Unicode

Jose Emilio Labra Gayo


XML

Identificar recursos
Protocolo de acceso

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

XML
I

XML es un lenguaje de marcado generalizado

Define una sintaxis com


un que permite definir vocabularios
especficos
Orgenes

I
I
I

SGML (70 ) permita definir vocabulrios


HTML fue un vocabulario de SGML para hipertexto
XML = SGML mas simple y adaptado a Internet

Gran exito industrial y adopcion en m


ultiples contextos
I
I

Parte fundamental de la arquitectura Web


Otras aplicaciones: Ficheros de Configuraci
on, vocabularios
especficos, etc.

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

XML

<html>
<head>< t i t l e >Poema</ t i t l e >
</ head>
<body l a n g= e s >
<h1>A l b a</ h1>
<h2> A b r i l de 1915 </ h2>
<h2>Granada</ h2>
<p>Mi c o r a z o n
o p r i m i d o</p>
<p> s i e n t e j u n t o a
l a a l b o r a d a</p>
</ body>
</ html>

<poema f e c h a= A b r i l 1915
l u g a r= Granada >
< t i t u l o>A l b a</ t i t u l o>
<v e r s o>Mi c o r a z o n
o p r i m i d o</ v e r s o>
<v e r s o> s i e n t e j u n t o a
l a a l b o r a d a</ v e r s o>
<v e r s o> e l d o l o r de s u s
amores . . . </ v e r s o>
</poema>

Ambos documentos tienen una sintaxis com


un
Jose Emilio Labra Gayo
XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Partes de un documento XML


Ejemplo de fichero XML

Declaracion XML: opcional

Declaracion de tipo de
documento (DTD): opcional

Contenidos

Jose Emilio Labra Gayo


XML

<? xml v e r s i o n= 1 . 0 ?>


<!DOCTYPE poema
SYSTEM poema . d t d >
<poema f e c h a= A b r i l 1915
l u g a r= Granada >
< t i t u l o>A l b a</ t i t u l o>
<v e r s o>Mi c o r a z o n
o p r i m i d o</ v e r s o>
<v e r s o> s i e n t e j u n t o a
l a a l b o r a d a</ v e r s o>
<v e r s o> e l d o l o r de s u s
amores . . . </ v e r s o>
</poema>

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Declaracion XML

<? xml v e r s i o n= 1 . 0 e n c o d i n g=UTF8 s t a n d a l o n e= y e s ?>

version indica la version.


I
I

encoding indica codificacion de caracteres


I
I

1.0 = version mas habitual


1.1 aumenta capacidad de soporte de Unicode
UTF-8= caracteres Unicode
iso-8859-1 = caracteres latinos

standalone
I
I

yes indica que puede haber declaraciones externas


no indica que no hay dichas declaraciones

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Cuerpo del documento XML


Formato de elemento
<e t i q u e t a a t r i b 1= v a l o r 1 a t r i b 2= v a l o r 2 . . . >
. . . contenidos . . .
</ e t i q u e t a>

I
I

El cuerpo del documento esta formado por un elemento


Un elemento consta de:
I

I
I

I
I
I

Una etiqueta inicial que puede contener una lista de atributos


y valores
Los contenidos del elemento (puede estar vaco)
La etiqueta final

Los contenidos del elemento pueden ser otros subelementos


Es necesario cerrar todas las etiquetas
XML es sensible a may
usculas/min
usculas

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Elementos vacos
Elemento vaco sin simplificar
<e t i q u e t a a t r i b 1= v a l o r 1 a t r i b 2= v a l o r 2 . . . >
</ e t i q u e t a>

Un elemento vaco puede simplificarse como:


Elemento vaco simplificado
<e t i q u e t a a t r i b 1= v a l o r 1 a t r i b 2= v a l o r 2 . . . />

Jose Emilio Labra Gayo


XML

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Anidamiento

Las etiquetas que se abran deben cerrarse sin que se produzcan


anidamientos
Correcto
Incorrecto
<e x t e r n o>
<i n t e r n o>
texto
</ i n t e r n o>
</ e x t e r n o>

Jose Emilio Labra Gayo


XML

<e x t e r n o>
<i n t e r n o>
texto
</ e x t e r n o>
</ i n t e r n o>

Contenidos

Antecedentes

Lenguaje XML

DTDs

XML tiene estructura de arbol


Cada documento XML puede representarse como un arbol
<poema f e c h a= A b r i l 1915
l u g a r= Granada >
< t i t u l o>A l b a</ t i t u l o>
<v e r s o>Mi c o r a z o n
o p r i m i d o</ v e r s o>
<v e r s o> s i e n t e j u n t o a
l a a l b o r a d a</ v e r s o>
<v e r s o> e l d o l o r de s u s
amores . . . </ v e r s o>
</poema>

Jose Emilio Labra Gayo


XML

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Arbol XML

Dibujar el arbol DOM para el siguiente documento


<html>
<head>< t i t l e >P a g i n a</ t i t l e ></ head>
<body>
<h1>E j e m p l o</ h1>
<p>E s t e t e x t o t i e n e un
<a h r e f= h t t p : / /www . u n i o v i . e s >e n l a c e</ a>
y un t e x t o <em> e n f a t i z a d o</em></p>
</ body>
</ html>

Jose Emilio Labra Gayo


XML

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Atributos
<poema f e c h a= A b r i l 1915
l u g a r= Granada >
...
</poema>

I
I
I

El orden de los atributos no es significativo


No puede haber nombres de atributos repetidos
Hay varios atributos predefinidos. Por ejemplo:
I

xml:lang especifica el c
odigo del idioma: en (ingles), sp
(espa
nol), etc.
xml:space especifica c
omo tratar el espacio en blanco:
I
I

Jose Emilio Labra Gayo


XML

preserve = mantenerlo
default = dejar libertar a la aplicaci
on para tratarlo como
quiera

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Comentarios
Los comentarios indican porciones del documento que no seran
analizadas por el procesador
Comienzan por <-- y finalizan por -->
<! E s t e poema r e q u i e r e
c o m e n t a r i o s >
<poema>
< t i t u l o>La f e a l d a d</ t i t u l o>
<! No hay v e r s o s >
</poema>

Dentro de los comentarios no pueden aparecer los caracteres --

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Caracteres especiales

Existen 5 caracteres especiales:


I

&lt; = <

&gt; = >

&amp; = &

&quot; = "

&apos; =

Cualquier caracter Unicode puede indicarse mediante & seguido del


n
umero y acabado por ;

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Secciones CDATA

Suelen utilizarse para incluir porciones de texto sin analizar. Por


ejemplo codigo fuente
Ejemplo sin CDATA
Ejemplo sin CDATA
<c o d i g o>
i f ( x & l t ; 3 &amp;&amp ;
x &g t ; 4 )
p r i n t f (& q u o t ; H o l a&q u o t ; ) ;
</ c o d i g o>

Jose Emilio Labra Gayo


XML

<c o d i g o>
<! [CDATA[
i f ( x < 3 && x > 4 )
p r i n t f ( Hola ) ;
] ]>
</ c o d i g o>

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Instrucciones de Procesamiento

Permiten indicar al procesador que ejecute una aplicacion externa


Formato: <?aplicaci
on ...datos... ?>
Los tipos de aplicaciones externas no estan definidos
Algunos ejemplos:
I

<?xml version=1.0 ?>

<?xsl-stylesheet type=text/xsl href=... ?>

<?php ... ?>

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Documento bien formado

Un documento XML esta bien formado si cumple las reglas


anteriores
Una condicion basica para trabajar con un documento XML es que
este bien formado

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Validacion

I
I

Es posible limitar la estructura de los documentos


Varias alternativas:
I
I
I
I

DTDs
XML Schema
Relax NG
Schematron

Jose Emilio Labra Gayo


XML

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Validacion mediante DTDs


Ejemplo XML con DTD
<poema
f e c h a= A b r i l 1915
l u g a r= Granada >
<!DOCTYPE poema
SYSTEM poema . d t d >
< t i t u l o>A l b a</ t i t u l o>
<v e r s o>Mi c o r a z o n
o p r i m i d o</ v e r s o>
<v e r s o> s i e n t e j u n t o a
l a a l b o r a d a</ v e r s o>
<v e r s o> e l d o l o r de s u s
amores . . . </ v e r s o>
</poema>

Jose Emilio Labra Gayo


XML

Ejemplo de DTD
<!ELEMENT poema
( t i t u l o , v e r s o )>
<!ELEMENT t i t u l o (#PCDATA)>
<!ELEMENT v e r s o (#PCDATA)>
<! ATTLIST poema
f e c h a CDATA #REQUIRED
l u g a r CDATA #IMPLIED>

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

DTDs internas vs externas


Las DTDs pueden definirse dentro del documento XML
<!DOCTYPE h t m l
PUBLIC //W3C//DTD XHTML 1 . 0 S t r i c t //EN
h t t p : //www . w3 . o r g /TR/ x h t m l 1 /DTD/ xhtml1 s t r i c t . d t d >

Tambien pueden residir en otro documento:


<!DOCTYPE h t m l
PUBLIC //W3C//DTD XHTML 1 . 0 S t r i c t //EN
h t t p : //www . w3 . o r g /TR/ x h t m l 1 /DTD/ xhtml1 s t r i c t . d t d >

Algunas DTDs pueden tener identificadores p


ublicos
<!DOCTYPE h t m l
PUBLIC //W3C//DTD XHTML 1 . 0 S t r i c t //EN
h t t p : //www . w3 . o r g /TR/ x h t m l 1 /DTD/ xhtml1 s t r i c t . d t d >
Jose Emilio Labra Gayo
XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Tipos de declaraciones

ELEMENT = elementos del documento

ATTLIST = lista de atributos de un elemento

ENTITY = entidades (similares a las macros)

NOTATION = permite definir otros tipos de contenidos,


facilitando la inclusion de formatos binarios

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Modelo de contenido de elementos


Se utiliza un modelo basado en expresiones regulares
I ? = 0,1 elemento
I

* = 0 o mas elementos

+ = 1 o mas elementos

| = alternativa

<!ELEMENT

, = secuencia

EMPTY = vaco

<!ELEMENT
<!ELEMENT
<!ELEMENT

ANY = cualquier cosa

#PCDATA = texto

Jose Emilio Labra Gayo


XML

<!ELEMENT poema

( titulo ,
autor ? ,
verso ) >
libro
( poema
| prosa ) >
a u t o r EMPTY>
t i t u l o (#PCDATA)>
sec
( titulo ,
( p | s e c +))
>

Contenidos

Antecedentes

Lenguaje XML

Modelo de contenido mixto

<p>E s t e t e x t o t i e n e un
<a h r e f= r e f . h t m l >e n l a c e</ a>
y a l g o <em> e n f a t i z a d o</em>
</p>

La validacion puede realizarse mediante:


<!ELEMENT p (#PCDATA | a | em ) >
<!ELEMENT a (#PCDATA)>
<!ELEMENT em (#PCDATA)>

Jose Emilio Labra Gayo


XML

DTDs

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

Atributos
I

Tipos de datos:
I
I
I

CDATA = cadena
NMTOKEN = nombre
NMTOKENS = lista de nombres

Valor de atributos:
I
I
I
I

#REQUIRED obligatorio
#IMPLIED opcional
#FIXED fijo
Valor = valor por defecto

<! ATTLIST poema f e c h a CDATA #REQUIRED


l u g a r CDATA #IMPLIED>

Jose Emilio Labra Gayo


XML

DTDs

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Valores ID e IDREF
I

ID representa un atributo cuyo valor debe ser u


nico en todo el
documento

IDREF representa un atributo cuyo valor debe coincidir con el


de otro atributo del documento

<! ATTLIST a u t o r
c o d i g o ID #REQUIRED>
<! ATTLIST a u t o r P r e m i a d o c o d i g o IDREF #REQUIRED>
. . .
<a u t o r c o d i g o=A21> . . . </ a u t o r>
<a u t o r c o d i g o=A45> . . . </ a u t o r>
...
<a u t o r P r e m i a d o c o d i g o=A45 />

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Entidades generales
Permiten definir macros
<! ENTITY c l a r i n
<a u t o r c o d i g o= 23 >L e o p o l d o A l a s C l a r i n </a u t o r >>
. . .
< l i b r o>
< t i t u l o>La R e g e n t a</ t i t u l o>
&c l a r i n ;
</ l i b r o>

equivale a:
< l i b r o>
< t i t u l o>La R e g e n t a</ t i t u l o>
<a u t o r c o d i g o= 23 >L e o p o l d o A l a s C l a r i n</ a u t o r>
</ l i b r o>

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Entidades externas

Permiten incluir documentos externos en el documento actual


<!DOCTYPE l i b r o s [
<!ENTITY a u t o r e s
SYSTEM a u t o r e s . xml >
<! ENTITY e d i t o r i a l e s SYSTEM e d i t o r i a l e s . xml >
]>
< l i b r o s>
&a u t o r e s ;
&e d i t o r i a l e s ;
</ l i b r o s>

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Entidades parametro

Permiten crear macros dentro de las definiciones de las DTDs


<!ELEMENT % a u t o r e s
SYSTEM a u t o r e s . d t d >
<!ELEMENT % e d i t o r i a l e s SYSTEM e d i t o r i a l e s . d t d >
%a u t o r e s ;
%e d i t o r i a l e s ;

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Entidades parametro externas

Permiten incluir otras DTDs en una DTD


<!ELEMENT % a u t o r e s
SYSTEM a u t o r e s . d t d >
<!ELEMENT % e d i t o r i a l e s SYSTEM e d i t o r i a l e s . d t d >
%a u t o r e s ;
%e d i t o r i a l e s ;

Jose Emilio Labra Gayo


XML

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Espacios de nombres
El problema de la homonimia
< p a i s nombre= F r a n c i a >
< c a p i t a l>P a r i s</ c a p i t a l>
</ p a i s>

< i n v e r s i o n>
< c a p i t a l>7000</ c a p i t a l>
</ i n v e r s i o n>

C
omo juntarlo todo en un mismo documento?
< i n v e r s i o n e s>
< p a i s nombre= F r a n c i a >
< c a p i t a l>P a r i s</ c a p i t a l>
< c a p i t a l>1200</ c a p i t a l>
</ p a i s>
. . .
</ i n v e r s i o n e s>

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Espacios de Nombres
I
I
I

La solucion consistira en asociar a cada etiqueta una URI que


identificara el espacio de nombres al que pertenece
La URI sirve simplemente para evitar ambig
uedad =
identificador global u
nico
Conceptualmente se representara como:

Representacion conceptual de Espacio de nombres


< [ h t t p : //www . b o l s a . com ] : i n v e r s i o n e s>
< [ h t t p : //www . geog . e s ] : p a i s
[ h t t p : //www . geog . e s ] : n o m b r e= F r a n c i a >
< [ h t t p : //www . geog . e s ] : c a p i t a l>P a r i s
</ [ h t t p : //www . geog . e s ] : c a p i t a l>
< [ h t t p : //www . b o l s a . com ] : c a p i t a l>1200
</ [ h t t p : //www . b o l s a . com ] : c a p i t a l>
</ [ h t t p : //www . b o l s a . com ] : p a i s>
. . .
</ [ h t t p : //www . b o l s a . com ] : i n v e r s i o n e s>
Jose Emilio Labra Gayo
XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Sintaxis de Espacio de nombres


I

Para abreviar la sintaxis se asocian alias mediante el atributo


xmlns:alias="...URI..."

Espacio de nombres
< b : i n v e r s i o n e s x m l n s : b= h t t p : //www . b o l s a . com
x m l n s : g e o= h t t p : //www . geo . e s >
< g e o : p a i s g e o : n o m b r e= F r a n c i a >
< g e o : c a p i t a l>P a r i s< g e o : c a p i t a l>
< b : c a p i t a l>1200</ b : c a p i t a l>
</ g e o : p a i s>
. . .
</ b : i n v e r s i o n e s>

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Sintaxis de Espacio de nombres


I

No es necesario asociar todos los alias al comienzo del


documento

Espacio de nombres
< b : i n v e r s i o n e s x m l n s : b= h t t p : //www . b o l s a . com>
< g e o : p a i s x m l n s : g e o= h t t p : //www . geo . e s
g e o : n o m b r e= F r a n c i a >
< g e o : c a p i t a l>P a r i s< g e o : c a p i t a l>
< b : c a p i t a l>1200</ b : c a p i t a l>
</ g e o : p a i s>
. . .
</ b : i n v e r s i o n e s>

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Sintaxis de Espacio de nombres


I

Puede definirse un espacio de nombres por defecto

Para ello, se utiliza el atributo xmlns="...URI..."

Espacio de nombres
< i n v e r s i o n e s x m l n s= h t t p : //www . b o l s a . com>
< g e o : p a i s x m l n s : g e o= h t t p : //www . geo . e s
g e o : n o m b r e= F r a n c i a >
< g e o : c a p i t a l>P a r i s< g e o : c a p i t a l>
< c a p i t a l>1200</ c a p i t a l>
</ g e o : p a i s>
. . .
</ i n v e r s i o n e s>

Jose Emilio Labra Gayo


XML

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Espacios de nombres

Algunos espacios de nombres populares

http://www.w3.org/1999/xhtml: XHTML

http://www.w3.org/1999/XSL/Transform: XSLT

http://www.w3.org/2000/svg: SVG

http://www.w3.org/1999/xlink: XLink

http://www.w3.org/1999/xlink: XLink

http://www.w3.org/1999/02/22-rdf-syntax-ns#: RDF

http://purl.org/dc/elements/1.1/: Dublin Core

http://www.w3.org/2005/Atom: Formato Atom

Jose Emilio Labra Gayo


XML

Contenidos

Antecedentes

Lenguaje XML

DTDs

Combinacion de Espacios de nombres


Ejemplo de combinacion
<html xmlns= h t t p : / /www . w3 . o r g /1999/ x h t m l
xmlns : x l i n k= h t t p : / /www . w3 . o r g /1999/ x l i n k >
<head>
< t i t l e >HTML + SVG</ t i t l e >
</ head>
<body>
<h1>Una imagen</ h1>
<s v g xmlns= h t t p : / /www . w3 . o r g /2000/ s v g
w i d t h= 300 h e i g h t= 200 >
<a x l i n k : h r e f= h t t p : / /www . u n i o v i . e s >
< c i r c l e c x= 150 c y= 100 r= 50 />
</ a>
</ s v g>
</ body>
</ html>
Jose Emilio Labra Gayo
XML

Espacios de nombres

Contenidos

Antecedentes

Lenguaje XML

DTDs

Validacion de Espacios de nombres con DTDs


Los espacios de nombres fueron posteriores a los DTDs
De todas formas, es posible realizar la validacion
<!DOCTYPE i n v e r s i o n e s [
<!ELEMENT i n v e r s i o n e s ( g : p a i s )>
<!ELEMENT g : p a i s ( g : c a p i t a l , c a p i t a l ) >
<!ELEMENT g : c a p i t a l (#PCDATA)>
<!ELEMENT c a p i t a l (#PCDATA)>
<! ATTLIST i n v e r s i o n e s
x m l n s CDATA #FIXED h t t p : //www . b o l s a . com>
<! ATTLIST g : p a i s
g : n o m b r e CDATA #REQUIRED
x m l n s : g CDATA #FIXED h t t p : //www . geog . e s >
]>

Jose Emilio Labra Gayo


XML

Espacios de nombres