Post on 26-Jan-2020
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
XML
Jose Emilio Labra Gayo
Octubre 2006
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Contenidos
AntecedentesUnicode y URIs
Lenguaje XML
DTDs
Espacios de nombres
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Arquitectura de la Web
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Unicode y URIs
Unicode
I Consorcio de empresas dedicadas a internacionalizacion
I Objetivo: Representar los sımbolos escritos en todos losidiomas
I Asocia un codigo unico a cada sımbolo
I Ejemplo: 2200 en hexadecimal = ∀I 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 unicos de recursos)I URI = URL + URN
I URL (Locator) tiene doble funcionalidad:I Identificar recursosI Protocolo de acceso
Ejemplo: http://www.uniovi.esI URN: Nombre unico de recursos
I Ejemplo: urn:isbn:0-395-36341-1
I IRI (Internationalized Resource Identifier) permite incluircaracteres Unicode
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
XML
I XML es un lenguaje de marcado generalizado
I Define una sintaxis comun que permite definir vocabulariosespecıficos
I OrıgenesI SGML (70 ) permitıa definir vocabulriosI HTML fue un vocabulario de SGML para hipertextoI XML = SGML mas simple y adaptado a Internet
Gran exito industrial y adopcion en multiples contextosI Parte fundamental de la arquitectura WebI Otras aplicaciones: Ficheros de Configuracion, vocabularios
especıficos, 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 lang=” es ”><h1>Alba</h1><h2>Ab r i l de 1915 </h2><h2>Granada</h2><p>Mi corazon
opr im ido</p><p>s i e n t e j un t o a
l a a l bo r ada</p></body></html>
<poema fecha=” Ab r i l 1915”l u g a r=”Granada”>
< t i t u l o>Alba</ t i t u l o><ve r so>Mi corazon
op r im ido</ ve r so><ve r so>s i e n t e j un t o a
l a a l bo r ada</ ve r so><ve r so>e l d o l o r de su s
amores . . .</ ve r so></poema>
Ambos documentos tienen una sintaxis comun
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Partes de un documento XML
I Declaracion XML: opcional
I Declaracion de tipo dedocumento (DTD): opcional
I Contenidos
Ejemplo de fichero XML
<?xml v e r s i o n=” 1 .0 ” ?><!DOCTYPE poema
SYSTEM ”poema . dtd ”><poema fecha=” Ab r i l 1915”
l u g a r=”Granada”>< t i t u l o>Alba</ t i t u l o><ve r so>Mi corazon
op r im ido</ ve r so><ve r so>s i e n t e j un t o a
l a a l bo r ada</ ve r so><ve r so>e l d o l o r de su s
amores . . .</ ve r so></poema>
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Declaracion XML
<?xml v e r s i o n=” 1 .0 ” encod ing=”UTF−8” s tanda lone=” yes ” ?>
I version indica la version.I 1.0 = version mas habitualI 1.1 aumenta capacidad de soporte de Unicode
I encoding indica codificacion de caracteresI UTF-8= caracteres UnicodeI iso-8859-1 = caracteres latinos
I standaloneI yes indica que puede haber declaraciones externasI 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 que 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 ” . . .>. . . c o n t e n i d o s . . .
</ e t i que t a>
I El cuerpo del documento esta formado por un elementoI Un elemento consta de:
I Una etiqueta inicial que puede contener una lista de atributosy valores
I Los contenidos del elemento (puede estar vacıo)I La etiqueta final
I Los contenidos del elemento pueden ser otros subelementosI Es necesario cerrar todas las etiquetasI XML es sensible a mayusculas/minusculas
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Elementos vacıos
Elemento vacıo sin simplificar
<e t i que 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 que t a>
Un elemento vacıo puede simplificarse como:
Elemento vacıo simplificado
<e t i que 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
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Anidamiento
Las etiquetas que se abran deben cerrarse sin que se produzcananidamientos
Correcto
<exte rno>< i n t e r n o>
t e x t o</ i n t e r n o>
</ exte rno>
Incorrecto
<exte rno>< i n t e r n o>
t e x t o</ exte rno>
</ i n t e r n o>
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
XML tiene estructura de arbol
Cada documento XML puede representarse como un arbol
<poema fecha=” Ab r i l 1915”l u g a r=”Granada”>
< t i t u l o>Alba</ t i t u l o><ve r so>Mi corazon
opr im ido</ ve r so><ve r so>s i e n t e j un t o a
l a a l bo r ada</ ve r so><ve r so>e l d o l o r de su s
amores . . .</ ve r so></poema>
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Arbol XML
Dibujar el arbol DOM para el siguiente documento
<html><head>< t i t l e>Pagina</ t i t l e></head><body><h1>Ejemplo</h1><p>Este t e x t o t i e n e un
<a h r e f=” ht tp : //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
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Atributos
<poema fecha=” Ab r i l 1915”l u g a r=”Granada”>
. . .</poema>
I El orden de los atributos no es significativoI No puede haber nombres de atributos repetidosI Hay varios atributos predefinidos. Por ejemplo:
I xml:lang especifica el codigo del idioma: en (ingles), sp(espanol), etc.
I xml:space especifica como tratar el espacio en blanco:I preserve = mantenerloI default = dejar libertar a la aplicacion para tratarlo como
quiera
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Comentarios
Los comentarios indican porciones del documento que no serananalizadas por el procesadorComienzan por <-- y finalizan por -->
<!−− Este poema r e q u i e r ecomenta 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 < = <
I > = >
I & = &
I " = "
I ' = ’
Cualquier caracter Unicode puede indicarse mediante & seguido delnumero 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. Porejemplo codigo fuente
Ejemplo sin CDATA
<cod igo>i f ( x &l t ; 3 && ;
x > ; 4)p r i n t f (" ; Hola" ; ) ;
</ cod igo>
Ejemplo sin CDATA
<cod igo><! [CDATA[i f ( x < 3 && x > 4)p r i n t f (” Hola ” ) ;
] ]></ cod igo>
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Instrucciones de Procesamiento
Permiten indicar al procesador que ejecute una aplicacion externaFormato: <?aplicacion ...datos... ?>Los tipos de aplicaciones externas no estan definidosAlgunos ejemplos:
I <?xml version=’1.0’ ?>
I <?xsl-stylesheet type=’text/xsl’ href=’...’ ?>
I <?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 reglasanterioresUna condicion basica para trabajar con un documento XML es queeste bien formado
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Validacion
I Es posible limitar la estructura de los documentosI Varias alternativas:
I DTDsI XML SchemaI Relax NGI Schematron
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Validacion mediante DTDs
Ejemplo XML con DTD
<poemafecha=” Ab r i l 1915”l u g a r=”Granada”>
<!DOCTYPE poemaSYSTEM ”poema . dtd ”>
< t i t u l o>Alba</ t i t u l o><ve r so>Mi corazon
opr im ido</ ve r so><ve r so>s i e n t e j un t o a
l a a l bo r ada</ ve r so><ve r so>e l d o l o r de su s
amores . . .</ ve r so></poema>
Ejemplo de DTD
<!ELEMENT poema( t i t u l o , ve r so ∗)>
<!ELEMENT t i t u l o (#PCDATA)><!ELEMENT ver so (#PCDATA)><!ATTLIST poema
fecha CDATA #REQUIREDluga r CDATA #IMPLIED>
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
DTDs internas vs externas
Las DTDs pueden definirse dentro del documento XML
<!DOCTYPE htmlPUBLIC ”−//W3C//DTD XHTML 1 .0 S t r i c t //EN”
” h t t p : //www.w3 . org /TR/ xhtml1 /DTD/xhtml1− s t r i c t . dtd ”>
Tambien pueden residir en otro documento:
<!DOCTYPE htmlPUBLIC ”−//W3C//DTD XHTML 1 .0 S t r i c t //EN”
” h t t p : //www.w3 . org /TR/ xhtml1 /DTD/xhtml1− s t r i c t . dtd ”>
Algunas DTDs pueden tener identificadores publicos
<!DOCTYPE htmlPUBLIC ”−//W3C//DTD XHTML 1 .0 S t r i c t //EN”
” h t t p : //www.w3 . org /TR/ xhtml1 /DTD/xhtml1− s t r i c t . dtd ”>Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Tipos de declaraciones
I ELEMENT = elementos del documento
I ATTLIST = lista de atributos de un elemento
I ENTITY = entidades (similares a las macros)
I 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 regularesI ? = 0,1 elemento
I * = 0 o mas elementos
I + = 1 o mas elementos
I | = alternativa
I , = secuencia
I EMPTY = vacıo
I ANY = cualquier cosa
I #PCDATA = texto
<!ELEMENT poema ( t i t u l o ,autor ? ,ve r so ∗ ) >
<!ELEMENT l i b r o ( poema| p ro sa ) >
<!ELEMENT autor EMPTY><!ELEMENT t i t u l o (#PCDATA)><!ELEMENT s e c ( t i t u l o ,
( p | s e c +))>
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Modelo de contenido mixto
<p>Este t e x t o t i e n e un<a h r e f=” r e f . html ”>e n l a c e</a>y a l go <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
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Atributos
I Tipos de datos:I CDATA = cadenaI NMTOKEN = nombreI NMTOKENS = lista de nombres
I Valor de atributos:I #REQUIRED obligatorioI #IMPLIED opcionalI #FIXED fijoI Valor = valor por defecto
<!ATTLIST poema fecha CDATA #REQUIREDluga r CDATA #IMPLIED>
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Valores ID e IDREF
I ID representa un atributo cuyo valor debe ser unico en todo eldocumento
I IDREF representa un atributo cuyo valor debe coincidir con elde otro atributo del documento
<!ATTLIST autor cod igo ID #REQUIRED><!ATTLIST autorPremiado cod igo IDREF #REQUIRED>. . .
<autor cod igo=”A21”> . . .</ autor><autor cod igo=”A45”> . . .</ autor>. . .
<autorPremiado cod igo=”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”<au to r cod igo=”23”>Leopo ldo A la s C l a r i n </autor>”>
. . .< l i b r o>< t i t u l o>La Regenta</ 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 Regenta</ t i t u l o><au to r cod igo=”23”>Leopo ldo A la s C l a r i n</ au to 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 au t o r e s SYSTEM ” au 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>&au 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 % au t o r e s SYSTEM ” au t o r e s . dtd ” ><!ELEMENT % e d i t o r i a l e s SYSTEM ” e d i t o r i a l e s . dtd ” >
%au to r e s ;%e d i t o r i a l e s ;
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Entidades parametro externas
Permiten incluir otras DTDs en una DTD
<!ELEMENT % au t o r e s SYSTEM ” au t o r e s . dtd ” ><!ELEMENT % e d i t o r i a l e s SYSTEM ” e d i t o r i a l e s . dtd ” >
%au to r e s ;%e d i t o r i a l e s ;
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Espacios de nombres
El problema de la homonimia
<p a i s nombre=” F r anc i a ”><c a p i t a l>Pa 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>
¿Como juntarlo todo en un mismo documento?
< i n v e r s i o n e s><p a i s nombre=” F r anc i a ”>
<c a p i t a l>Pa 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 La solucion consistira en asociar a cada etiqueta una URI queidentificara el espacio de nombres al que pertenece
I La URI sirve simplemente para evitar ambiguedad =identificador global unico
I Conceptualmente se representarıa como:
Representacion conceptual de Espacio de nombres
< [ h t t p : //www. bo 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 ] :nombre=” F r an c i a ”>< [ h t t p : //www. geog . e s ] : c a p i t a l>Pa r i s</ [ h t t p : //www. geog . e s ] : c a p i t a l>< [ h t t p : //www. bo l s a . com ] : c a p i t a l>1200</ [ h t t p : //www. bo l s a . com ] : c a p i t a l>
</ [ h t t p : //www. bo l s a . com ] : p a i s>. . .
</ [ h t t p : //www. bo 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 atributoxmlns:alias="...URI..."
Espacio de nombres
<b : i n v e r s i o n e s xmlns :b=” h t t p : //www. bo l s a . com”xmlns : geo=” h t t p : //www. geo . e s ”>
<g e o : p a i s geo:nombre=” F r anc i a ”><g e o : c a p i t a l>Pa 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 deldocumento
Espacio de nombres
<b : i n v e r s i o n e s xmlns :b=” h t t p : //www. bo l s a . com”><g e o : p a i s xm ln s : geo=” h t t p : //www. geo . e s ”
geo:nombre=” F r anc i a ”><g e o : c a p i t a l>Pa 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 Puede definirse un espacio de nombres por defecto
I Para ello, se utiliza el atributo xmlns="...URI..."
Espacio de nombres
< i n v e r s i o n e s xmlns=” h t t p : //www. bo l s a . com”><g e o : p a i s xm ln s : geo=” h t t p : //www. geo . e s ”
geo:nombre=” F r anc i a ”><g e o : c a p i t a l>Pa 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
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Algunos espacios de nombres populares
I http://www.w3.org/1999/xhtml: XHTML
I http://www.w3.org/1999/XSL/Transform: XSLT
I http://www.w3.org/2000/svg: SVG
I http://www.w3.org/1999/xlink: XLink
I http://www.w3.org/1999/xlink: XLink
I http://www.w3.org/1999/02/22-rdf-syntax-ns#: RDF
I http://purl.org/dc/elements/1.1/: Dublin Core
I http://www.w3.org/2005/Atom: Formato Atom
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Combinacion de Espacios de nombres
Ejemplo de combinacion
<html xmlns=” ht tp : //www.w3 . org /1999/ xhtml ”xmlns : x l i n k=” ht tp : //www. w3 . org /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>
<svg xmlns=” ht tp : //www.w3 . org /2000/ svg ”width=”300” he igh t=”200”>
<a x l i n k : h r e f=” ht tp : //www. u n i o v i . e s ”>< c i r c l e cx=”150” cy=”100” r=”50” />
</a></ svg>
</body></html>
Jose Emilio Labra Gayo
XML
Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres
Validacion de Espacios de nombres con DTDs
Los espacios de nombres fueron posteriores a los DTDsDe 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
xmlns CDATA #FIXED ” h t t p : //www. bo l s a . com”><!ATTLIST g : p a i s
g:nombre CDATA #REQUIREDxmlns : g CDATA #FIXED ” h t t p : //www. geog . e s ”>
]>
Jose Emilio Labra Gayo
XML