Sei sulla pagina 1di 17

Lenguaje de Marcas

Tema 5: Validacin de XML. DTD


Manuel Quinto
http://manuelquinto.es
Contenido

Validacin de Documentos XML

DTD
Bloques
Elementos
Atributos
Entidades
Elementos Vs Atributos

Ejemplo
Validacin de XML

Un documento XML validado, adems


de estar bien formado, debe
cumplir cumplir un documento de
definicin de tipos.

Definicin de Tipos en XML


DTD: Document Type Definition.
XML Schema o XSD: XML Schema Definition

XSD es ms potente que DTD
DTD

DTD : Document Type Definition

Define la estructura y los elementos y


atributos que puede tener un documento XML

Se utilizan
Estandarizar el intercambio de datos en documentos XML
para validar documentos XML

Puede ser interno o externo al documento


XML
Es ms habitual que sea externo.

No soporta tipos de datos todo es texto


4
Manuel Quinto
DTD

<?xml version="1.0"?>
Fichero note.xml

<!DOCTYPE note [ <?xml version="1.0"?>

<!ELEMENT note (to,from,heading,body)> <!DOCTYPE note SYSTEM "note.dtd">

<!ELEMENT to (#PCDATA)> <note date="17/10/2017">

<!ELEMENT from (#PCDATA)> <to>Tove</to>

<!ELEMENT heading (#PCDATA)> <from>Jani</from>

<!ELEMENT body (#PCDATA)> <heading>Reminder</heading>

<!ATTLIST note date CDATA #REQUIRED> <body>Don't forget me this weekend!

]> </body>

<note date="17/10/2017"> </note>

<to>Tove</to>
Fichero note.dtd

<from>Jani</from> <!ELEMENT note (to,from,heading,body)>

<heading>Reminder</heading> <!ELEMENT to (#PCDATA)>

<body>Don't forget me this <!ELEMENT from (#PCDATA)>


weekend</body> <!ELEMENT heading (#PCDATA)>

</note> <!ELEMENT body (#PCDATA)>


<!ATTLIST note date CDATA #REQUIRED>

5
Manuel Quinto
DTD

Declaracin del DTD


Interna al documento XML: opcional. Justo despus de la
declaracin XML. Incluye las declaraciones de etiquetado.
Externa al documento. Referencia a un archivo que
contiene las declaraciones de etiquetado

DTD no publicado. Se especifica con la palabra SYSTEM seguida
de la URL con la ubicacin del documento:
<!DOCTYPE elemento_raiz SYSTEM archivo_declaraciones.dtd>

DTD publicado: PUBLIC seguida por el identificador pblico
asociado a este DTD. Sigue siendo necesario incluir la URL al
fichero DTD que solo ser utilizado en caso de fallar la
localizacin del fichero
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
6
Manuel Quinto
Bloques

Desde el punto de vista de DTD, todos los


documentos XML estn formados por los
siguientes bloques de construccin (building
blocks)
Elementos elementos principales de XML
Atributos proporcionan informacin extra sobre un elemento.
Entidades cdigos para caracteres especiales : <>
PCDATA parsed character data.

Caracteres que sern analizados valores de los elementos y atributos
CDATA character data

Caracteres que NO sern analizados nombre de elementos y
atributos

7
Manuel Quinto
Elementos

Declaracin de tipos de elementos: <!ELEMENT nombre


tipo_contenido>

Tipos de Elementos
Elementos Vacos: <!ELEMENT nombre_elemento EMPTY>

Estos elementos pueden contener atributos.
Elementos que Solo contienen datos:

<!ELEMENT nombre_elemento (#PCDATA)>
Elementos que pueden contener cualquier contenido

<!ELEMENT nombre_elemento ANY>
Elementos que solo contienen elementos (hijos)

Secuenciales: contiene todos los elementos en el orden establecido.
<!ELEMENT mensaje (remitente, destinatario, asunto, cuerpo)>

Alternativos: Cuando el elemento contiene uno y solo uno de los elementos hijos
especificados
<!ELEMENT persona (fsica | jurdica)>
8
Manuel Quinto
Elementos

Multiplicidad de los elementos (cuantas veces se


pueden repetir)

*: el elemento o grupo de elementos puede repetirse 0 o ms veces.

?: el elemento o grupo de elementos puede aparecer 0 o 1 veces.

+: el elemento o grupo de elementos puede repetirse 1 o ms veces.

Por defecto, si no ponemos nada, el elemento debe aparecer una vez.
Elementos mixtos.

este caso no suele utilizarse en XML,

Siempre en primer lugar PCDATA, una lista alternativa, no se puede
aplicar caracteres de repeticin a los elementos hijos y debe
especificarse obligatoriamente el carcter de repeticin * a todo el
grupo.

<!ELEMENT elem (#PCDATA|a|b|c)*>

9
Manuel Quinto
Atributos

Declaracin de tipos de atributos.


<!ATTLIST nom_elem nom_atrib, tipo_atrib
valor_atrib>
Una nica declaracin permite definir una lista
de atributos asociados a un elemento.

<!ATTLIST elemento atrib1 atrib2 atrib3 >

10
Manuel Quinto
Atributos

Tipos de Atributos
CDATA consiste en una cadena de caracteres. Esta cadena puede
incluir cualquier carcter a excepcin de los caracteres especiales,
incluidos los espacios en blanco

<!ATTLIST coche color CDATA>. color puede tomar cualquier valor.
NMTOKEN slo aceptan los caracteres vlidos para nombrar cosas
(letras, nmeros, puntos, guiones, subrayados y los dos puntos

<!ATTLIST mensaje fecha NMTOKEN>

<mensaje fecha="15-7-1999"> // no permite espacios
NMTOKENS lista de NMTOKEN separada por espacios.

<!ATTLIST coche color NMTOKENS>

<coche color=blanco negro gris>
Atributos enumerados el valor del atributo est restringido a un
conjunto de valores. carcter | para separar los valores.

<!ATTLIST coche color (blanco | negro | gris)>
11
Manuel Quinto
Atributos

Tipos de Atributos
Atributos ID e IDREF: definen un valor que
identifica de forma unvoca a un elemento.

<!ATTLIST coche matricula ID>

Como es un identificador nico permite que otros
elementos puedan hacer referencia a l se usa el
tipo IDREF (el ID tiene que estar previamente
declarado)
<!ATTLIST coche matricula ID>
<!ATTLIST multa matricula IDREF>

el tipo IDREFS no es ms que extender la definicin
de IDREF a una lista de valores
12
Manuel Quinto
Atributos

Valores de los Atributos


especifican cmo debe comportarse el parser ante la
presencia o ausencia de cierto atributo en un elemento del
documento
Valor Valor por defecto del atributo.
#REQUIRED. El atributo es de carcter obligatorio.
#IMPLIED. El atributo es opcional. Si no se especifica este es
el valor por defecto.
#FIXED. El atributo tiene un valor fijo declarado en el DTD.

<!ATTLIST coche matricula ID #REQUIRED>

<!ATTLIST coche color CDATA #IMPLIED>

<!ATTLIST coche color CDATA gris>

<!ATTLIST coche marca FIXED Ford>
13
Manuel Quinto
Entidades

Declaracin de Entidades
Una entidad se refiere a un objeto usado para guardar
informacin. Permite guardar contenido que puede ser utilizado
muchas veces y poder descomponer un documento grande en
subconjuntos ms manejables
cada documento tiene al menos la entidad del propio
documento

Entidad interna. Consiste en abreviaturas definidas en el DTD.
<!ENTITY derechos Copyright 2002>.
Al definir esta entidad, en el documento XML podemos utilizarla escribiendo
&derechos;. El parser cambiar la entidad por el valor asignado.

Entidad externa. El contenido no est dentro del DTD sino en cualquier
otro sitio del sistema. Se hace referencia a su contenido mediante una
URI precedida de la palabra SYSTEM o PUBLIC segn proceda
<!ENTITY intro SYSTEM http://www.miservidor.com/intro.xml>

14
Manuel Quinto
Elementos Vs Atributos

Algunos problemas con los Atributos


Los atributos no pueden contener multiples valores.
Los atributos son ms dificilmente ampliables
Los atributos no pueden definir estructuras
Los atributos son ms difciles de manipular por el cdigo.
El valor de los atributos no es fcil de comprobar con un
DTD

Ante la duda elementos.

Los metadatos deben guardarse en atributos


Ej: id o name en HTML

15
Manuel Quinto
Ejemplo

<?xml version="1.0" encoding="UTF-8" ?> <vehiculo>


<marca>ford</marca>
<oferta> <modelo color="rojo">focus</modelo>
<vehiculo> <motor combustible="diesel">duratorc
2.0</motor>
<marca>ford</marca>
<matricula>1235AAA</matricula>
<modelo color="gris">focus</modelo>
<kilometros>125000</kilometros>
<motor
combustible="gasolina">duratorc
<precio_inicial>10000</precio_inicial>
1.4</motor> <precio_oferta>9000</precio_oferta>
<matricula>1234AAA</matricula> <extra valor="250">pintura
metalizada</extra>
<kilometros>12500</kilometros>
<extra>spoiler trasero</extra>
<precio_inicial>12000</precio_inicial>
<extra valor="500">climatizador</extra>
<precio_oferta>10000</precio_oferta>
<extra>faros de xenon</extra>
<extra>pintura metalizada</extra>
<foto>11327.jpg</foto>
<extra valor="300">llantas</extra> <foto>11328.jpg</foto>
<foto>11325.jpg</foto> </vehiculo>
</vehiculo> </oferta>

16
Manuel Quinto
Ejemplo

<!ELEMENT oferta (vehiculo)*>


<!ELEMENT vehiculo (marca , modelo , motor , matricula , kilometros ,
precio_inicial , precio_oferta , extra* , foto*)>
<!ELEMENT marca (#PCDATA)>
<!ELEMENT modelo (#PCDATA)>
<!ATTLIST modelo color (blanco | negro | gris) #REQUIRED>
<!ELEMENT motor (#PCDATA)>
<!ATTLIST motor combustible (gasolina | diesel) #REQUIRED>
<!ELEMENT matricula (#PCDATA)>
<!ELEMENT kilometros (#PCDATA)>
<!ELEMENT precio_inicial (#PCDATA)>
<!ELEMENT precio_oferta (#PCDATA)>
<!ELEMENT extra (#PCDATA)>
<!ATTLIST extra valor CDATA #IMPLIED>
<!ELEMENT foto (#PCDATA)>
17
Manuel Quinto

Potrebbero piacerti anche