• No se han encontrado resultados

Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres XML. Jose Emilio Labra Gayo. Octubre Jose Emilio Labra Gayo XML

N/A
N/A
Protected

Academic year: 2021

Share "Contenidos Antecedentes Lenguaje XML DTDs Espacios de nombres XML. Jose Emilio Labra Gayo. Octubre Jose Emilio Labra Gayo XML"

Copied!
40
0
0

Texto completo

(1)

XML

Jose Emilio Labra Gayo

(2)

Contenidos

Antecedentes

Unicode y URIs

Lenguaje XML

DTDs

Espacios de nombres

(3)
(4)

Unicode

I

Consorcio de empresas dedicadas a internacionalizaci´

on

I

Objetivo: Representar los s´ımbolos escritos en todos los

idiomas

I

Asocia un c´

odigo ´

unico a cada s´ımbolo

I

Ejemplo: 2200 en hexadecimal =

I

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

(5)

URI

URI (

Identificadores ´

unicos de recursos

)

I

URI = URL + URN

I

URL (

Locator

) tiene doble funcionalidad:

I

Identificar recursos

I

Protocolo de acceso

Ejemplo:

http://www.uniovi.es

I

URN: Nombre ´

unico de recursos

I

Ejemplo:

urn:isbn:0-395-36341-1

I

IRI (

Internationalized Resource Identifier

) permite incluir

caracteres Unicode

(6)

XML

I

XML es un lenguaje de marcado generalizado

I

Define una sintaxis com´

un que permite definir vocabularios

espec´ıficos

I

Or´ıgenes

I

SGML (70 ) permit´ıa definir vocabulrios

I

HTML fue un vocabulario de SGML para hipertexto

I

XML = SGML m´

as simple y adaptado a Internet

Gran ´

exito industrial y adopci´

on en m´

ultiples contextos

I

Parte fundamental de la arquitectura Web

I

Otras aplicaciones: Ficheros de Configuraci´

on, vocabularios

espec´ıficos, etc.

(7)

XML

<h t m l> <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>G r a n a d a</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> </h t m l> <poema f e c h a=” A b r i l 1915 ” l u g a r=” G r a n a d a ”> <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 a m o r e s . . .</v e r s o> </poema>

(8)

Partes de un documento XML

I

Declaraci´

on XML: opcional

I

Declaraci´

on de tipo de

documento (DTD): opcional

I

Contenidos

Ejemplo de fichero 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=” G r a n a d a ”> <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 a m o r e s . . .</v e r s o> </poema>

(9)

Declaraci´

on XML

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

I

version

indica la versi´

on.

I

1.0 = versi´

on m´

as habitual

I

1.1 aumenta capacidad de soporte de Unicode

I

encoding

indica codificaci´

on de caracteres

I

UTF-8= caracteres Unicode

I

iso-8859-1

= caracteres latinos

I

standalone

I

yes

indica que puede haber declaraciones externas

I

no

indica que no hay dichas declaraciones

(10)

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 ” . . .> . . . c o n t e n i d o s . . .

</e t i q u e t a>

I

El cuerpo del documento est´

a formado por un elemento

I

Un elemento consta de:

I

Una etiqueta inicial que puede contener una lista de atributos

y valores

I

Los contenidos del elemento (puede estar vac´ıo)

I

La etiqueta final

I

Los contenidos del elemento pueden ser otros subelementos

I

Es necesario cerrar todas las etiquetas

I

XML es sensible a may´

usculas/min´

usculas

(11)

Elementos vac´ıos

Elemento vac´ıo 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 vac´ıo puede simplificarse como:

Elemento vac´ıo simplificado

(12)

Anidamiento

Las etiquetas que se abran deben cerrarse sin que se produzcan

anidamientos

Correcto

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

Incorrecto

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

(13)

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=” G r a n a d a ”> <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 a m o r e s . . .</v e r s o> </poema>

(14)

Arbol XML

Dibujar el ´

arbol DOM para el siguiente documento

<h t m l> <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> </h t m l>

(15)

Atributos

<poema f e c h a=” A b r i l 1915 ”

l u g a r=” G r a n a d a ”> . . .

</poema>

I

El orden de los atributos no es significativo

I

No puede haber nombres de atributos repetidos

I

Hay varios atributos predefinidos. Por ejemplo:

I

xml:lang

especifica el c´

odigo del idioma:

en

(ingl´

es),

sp

(espa˜

nol), etc.

I

xml:space

especifica c´

omo tratar el espacio en blanco:

I

preserve

= mantenerlo

I

default

= dejar libertar a la aplicaci´

on para tratarlo como

quiera

(16)

Comentarios

Los comentarios indican porciones del documento que no ser´

an

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 h a y v e r s o s −−> </poema>

Dentro de los comentarios no pueden aparecer los caracteres

(17)

Caracteres especiales

Existen 5 caracteres especiales:

I

&lt;

=

<

I

&gt;

=

>

I

&amp;

=

&

I

&quot;

=

"

I

&apos;

=

Cualquier car´

acter Unicode puede indicarse mediante & seguido del

umero y acabado por

;

(18)

Secciones CDATA

Suelen utilizarse para incluir porciones de texto sin analizar. Por

ejemplo c´

odigo fuente

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>

Ejemplo sin CDATA

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

(19)

Instrucciones de Procesamiento

Permiten indicar al procesador que ejecute una aplicaci´

on externa

Formato:

<?aplicaci´

on ...datos... ?>

Los tipos de aplicaciones externas no est´

an definidos

Algunos ejemplos:

I

<?xml version=’1.0’ ?>

I

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

(20)

Documento bien formado

Un documento XML est´

a bien formado si cumple las reglas

anteriores

Una condici´

on b´

asica para trabajar con un documento XML es que

est´

e bien formado

(21)

Validaci´

on

I

Es posible limitar la estructura de los documentos

I

Varias alternativas:

I

DTDs

I

XML Schema

I

Relax NG

I

Schematron

(22)

Validaci´

on mediante DTDs

Ejemplo XML con DTD

<poema f e c h a=” A b r i l 1915 ” l u g a r=” G r a n a d a ”> <!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 a m o r e s . . .</v e r s o> </poema>

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>

(23)

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/ x h t m l 1−s t r i c t . d t d ”>

Tambi´

en 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/ x h t m l 1−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”

(24)

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 inclusi´

on de formatos binarios

(25)

Modelo de contenido de elementos

Se utiliza un modelo basado en expresiones regulares

I

?

= 0,1 elemento

I

*

= 0 ´

o m´

as elementos

I

+

= 1 ´

o m´

as elementos

I

|

= alternativa

I

,

= secuencia

I

EMPTY

= vac´ıo

I

ANY

= cualquier cosa

I

#PCDATA

= texto

<!ELEMENT poema (t i t u l o , a u t o r? , v e r s o∗ ) > <!ELEMENT l i b r o ( poema | p r o s a ) > <!ELEMENT a u t o r EMPTY> <!ELEMENT t i t u l o (#PCDATA)> <!ELEMENT s e c (t i t u l o , ( p | s e c +)) >

(26)

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 validaci´

on puede realizarse mediante:

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

<!ELEMENT em (#PCDATA)>

(27)

Atributos

I

Tipos de datos:

I

CDATA = cadena

I

NMTOKEN = nombre

I

NMTOKENS = lista de nombres

I

Valor de atributos:

I

#REQUIRED

obligatorio

I

#IMPLIED

opcional

I

#FIXED

fijo

I

Valor

= valor por defecto

<!ATTLIST poema f e c h a CDATA#REQUIRED l u g a r CDATA#IMPLIED>

(28)

Valores ID e IDREF

I

ID

representa un atributo cuyo valor debe ser ´

unico en todo el

documento

I

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

(29)

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>

(30)

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>

(31)

Entidades par´

ametro

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 ;

(32)

Entidades par´

ametro 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 ;

(33)

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>

(34)

Espacios de Nombres

I

La soluci´

on consistir´

a en asociar a cada etiqueta una URI que

identificar´

a el espacio de nombres al que pertenece

I

La URI sirve simplemente para evitar ambig¨

uedad =

identificador global ´

unico

I

Conceptualmente se representar´ıa como:

Representaci´

on 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 . g e o g . e s ] : p a i s [ h t t p : //www . g e o g . e s ] : n o m b r e=” F r a n c i a ”> <[ h t t p : //www . g e o g . e s ] : c a p i t a l>P a r i s </ [ h t t p : //www . g e o g . 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

(35)

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 . g e o . 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>

(36)

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 . g e o . 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>

(37)

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 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 . g e o . 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>

(38)

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

(39)

Combinaci´

on de Espacios de nombres

Ejemplo de combinaci´

on

<h t m l x m l n s=” h t t p : / /www . w3 . o r g / 1 9 9 9 / x h t m l ” x m l n s: x l i n k =” h t t p : / /www . w3 . o r g / 1 9 9 9 / x l i n k ”> <head> <t i t l e>HTML + SVG</t i t l e> </head> <body> <h1>Una i m a g e n</h1> <s v g x m l n s=” h t t p : / /www . w3 . o r g / 2 0 0 0 / 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> </h t m l>

(40)

Validaci´

on de Espacios de nombres con DTDs

Los espacios de nombres fueron posteriores a los DTDs

De todas formas, es posible realizar la validaci´

on

<!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 . g e o g . e s ”> ]>

Referencias

Documento similar

Así atributos como la suavidad y flexibilidad psicoemocionalmente van tener una estrecha relación con el confort, el descanso y el placer, cualidad que puede ser aprovechada

Los campos Número de resolución, ítem, tipo de documento y número de identificación conforman una llave única para este formato, la cual no debe repetirse para

Así en el caso de la imagen, se tiene que evaluar la recordación de imagen, sin embargo, los atributos para evaluar la imagen, la asociación de esos atributos con la imagen, comparar

Por consiguiente, persona, cualquiera que sea su naturaleza, significa lo que es distinto en aquella naturaleza, y así, en la naturaleza humana significa esta carne,

Y además por que por otro lado sin embargo, - y sin ignorar lo anterior - consideramos que identificando estas dos clases de atributos será posible manejar los atributos de manera

Madrid digital era una aplicaci´ on de mapeo de atributos, con la que conect´ andose a una base de datos, se pod´ıan seleccionar ciertas entidades de la base de datos y verbos

Se puede suponer de este modo que XML constituye la capa más baja dentro del nivel de aplicación, sobre el que se puede montar cualquier estructura de tratamiento de

Salazar (1994) sostiene que los componentes de una estrategia de marketing electoral son básicamente tres: a) el mercado político electoral, que es aquel que debe