7a xml 3 esquemasconceptuales dtd
TRANSCRIPT
Documentos XML
a) Bien formados
b)Válidos
1 Esquemas Conceptuales
A PERSON WHO NEVER MADE A MISTAKE
NEVER TRIED ANYTHING NEW [ALBERT EINSTEIN]
RECORDANDO
Esquemas Conceptuales
2
Documentos XML
• a) Bien formados
• b) Válidos
3 Esquemas Conceptuales
Documentos XML
• a) Bien formados
• Se apegan a la sintaxis del lenguaje
• Requerimos Editores texto plano
Navegadores
4 Esquemas Conceptuales
Documentos XML
DTD
Define:
Elementos
Atributos
Entidades
Notación
b) Válidos según un esquema conceptual (estructura del documento, tipo de datos permitidos, repeticiones)
Esquemas XML
•Define
• Elementos, atributos
• Siguen sintaxis XML
• Permiten mayor expresividad: nuevos tipos de datos
5 Esquemas Conceptuales
Validación
6
DTD/XSD
DTD/ XSD
XML
XML
XML
XML
XML
DTD/XSD
XML
Diseño rígido, hay que apegarse a lo que dice la DTD
Diseño “flexible”, depende de la interpretación del XML por el diseñador
Esquemas Conceptuales
DTDs, Esquemas XML
Esquemas Conceptuales
7
DTD
Document Type Definition
Esquemas Conceptuales
8
DTD (Definición de Tipo de Documento )
• Es un conjunto de reglas que permiten describir la estructura (elementos, orden, atributos) y tipos de datos permitidos en un documento XML
• Usada como un mecanismo de “validación” de documentos.
Esquemas Conceptuales
9
DTD (Definición de Tipo de Documento )
• Define: – Elementos (ELEMENT)
– Atributos (ATTLIST)
– Entidades (ENTITY)
– Notaciones (NOTATION)
Sintaxis:
<! DOCTYPE nombre[
….
]>
Referenciado
en los
documentos
XML junto con
la URI que
indique donde
localizarla
Esquemas Conceptuales
10
DTD
ELEMENTOS
Esquemas Conceptuales
11
Elemento
• Los elementos de una DTD son los bloques primarios de todo documento XML.
Esquemas Conceptuales
12
Declaración Elemento
<!ELEMENT nombre (modelo de contenido)>
Contenido
permitido
P/e
•¿Cuántas repeticiones son permitidas para un
ELEMENTO?.
Identificador
Esquemas Conceptuales
13
Modelo de contenido
• Podemos tener:
• Tipos predefinidos : #PCDATA, EMPTY, MIXED, ANY
• Subelementos con determinados símbolos de frecuencia (+,*,?)
Esquemas Conceptuales
14
Ejemplo
DTD en un XML
Esquemas Conceptuales
15
Ejemplo1: Agenda.xml
<?xml version=“1.0”?>
<!DOCTYPE Agenda[
<!ELEMENT Agenda (persona+)>
<!ELEMENT persona
(nombreC,dirección,teléfono+,correo_e?)>
<!ELEMENT nombreC (nombrePila, apat, amat)>
<!ELEMENT nombrePila (#PCDATA)>
<!ELEMENT apat (#PCDATA)>
<!ELEMENT amat (#PCDATA)>
Subelementos
Esquemas Conceptuales
16
Ejemplo
<!ELEMENT dirección (#PCDATA)>
<!ELEMENT teléfono (#PCDATA)>
<!ELEMENT correo_e (#PCDATA)>
<!ATTLIST teléfono tipo
(Casa|fijo|celular)
#REQUIRED>
]>
<!-- Aquí vienen los datos -->
Esquemas Conceptuales
17
<Agenda>
<persona>
<nombreC>
<nombrePila>Rodrigo Eduardo</nombrePila>
<apat>Sanchez</apat>
<amat>Martinez</amat>
</nombreC>
<dirección>Juan Escutia numero 128 colonia Guadalupe del Moral, Deleg. Iztapalapa, México D.F.</dirección>
<teléfono tipo="casa">5556667</teléfono>
<teléfono tipo="celular">55667788</teléfono>
<correo_e>[email protected]</correo_e>
</persona> 18
<persona>
<nombreC>
<nombrePila>Amelie</nombrePila>
<apat>Poulain-Buzet</apat>
</nombreC>
<dirección>Juan Escutia numero 129 colonia Guadalupe del Moral, Deleg. Iztapalapa, México D.F.</dirección>
<teléfono tipo="casa">55566789</teléfono>
<teléfono tipo="celular">55990099</teléfono>
<correo_e>[email protected]</correo_e>
<persona>
</Agenda> 19
Ejemplo2: receta.xml
<!DOCTYPE receta[
<!ELEMENT receta (plato,autor?,ingredientes,
preparación, foto*)>
<!ELEMENT plato (#PCDATA)>
<!ELEMENT autor (nombre, apat, amat)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT apat (#PCDATA)>
<!ELEMENT amat (#PCDATA)>
Subelementos
Esquemas Conceptuales
20
Ejemplo
<!ELEMENT ingredientes (ingrediente+)>
<!ELEMENT ingrediente (#PCDATA)>
<!ELEMENT preparación (#PCDATA)>
<!ELEMENT foto EMPTY>
]>
<!-- Aquí vienen los datos -->
<receta>
<plato>huevos con jamón</plato>
<autor>
<nombre>Carolina</nombre>
Esquemas Conceptuales
21
<apat>Medina</apat>
<amat>Ramírez</amat>
</autor>
<ingredientes>
<ingrediente>huevos c/n </ingrediente>
<ingrediente>jamón c/n </ingrediente>
<ingrediente>aceite c/n </ingrediente>
</ingredientes>
<preparación>Poner en un sartén el aceite, freir el jamón, agregar el huevo batido, cocinar hasta que este cocido
</preparación>
</receta>
Esquemas Conceptuales
22
Modelos de contenido
• #PCDATA “Parser Character Data” <!ELEMENT plato (#PCDATA)>
plato debe contener un tipo de dato analizable
Otro elemento o elementos
<!ELEMENT clase (profesor, alumno, aula)>
<!ELEMENT profesor (#PCDATA)> Esquemas Conceptuales
23
Modelos de contenido
• EMPTY El elemento no tiene contenido y se
llama elemento vacío.
<!ELEMENT foto EMPTY>
Any
Indica que el elemento puede tener contenido variado: PCDATA, elementos, combinación de ambos, vacío.
Esquemas Conceptuales
24
Ejemplo
<!ELEMENT articulo ANY>
Esquemas Conceptuales
25
Modelos de contenido
• MIXED
Indica que el elemento puede tener caracteres de tipo dato o una mezcla de caracteres y subelementos.
Los contenidos deben estar debidamente
especificados.
<!ELEMENT enfasis (#PCDATA)>
<!ELEMENT parrafo (#PCDATA | enfasis)>
Esquemas Conceptuales
26
Modelos de contenido
Ejemplo:
<parrafo>Texto que tiene algo <enfasis>
enfatizado</enfasis>
</parrafo>
Esquemas Conceptuales
27
Símbolos de frecuencia
Símbolo Descripción Ninguno El elemento aparece
una sola vez [1]
+ Aparece una o más veces [1..n]
* Cero veces o puede aparecer muchas veces [0..n]
? Opcional y aparece sólo una vez [0,1]
Esquemas Conceptuales
28
DTD (Definición de Tipo de Documento )
Define: –Elementos (ELEMENT)
–Atributos (ATTLIST)
–Entidades (ENTITY)
–Notaciones (NOTATION)
Esquemas Conceptuales
29
Atributos
• Permite añadir información a los elementos de un documento.
• Un elemento puede tener: atributos *
• Se utiliza una lista (ATTLIST).
Esquemas Conceptuales
30
Atributos: ATTLIST
<!ATTLIST elemento nombre_del_atributo Tipo Palabra_Clave>
Identificador del
elemento
#FIXED
Obligatorio especificar el
atributo. Atributo opcional. Valor constante a lo
largo del documento
#IMPLIED #REQUIRED
CDATA NMTOKEN ID Enumeración
Esquemas Conceptuales
31
Ejemplos
<!ELEMENT texto (#PCDATA)>
<!ATTLIST texto idioma CDATA #REQUIRED>
Obligatorio especificar el
atributo.
Puede contener “casi”
cualquier carácter
Esquemas Conceptuales
32
Tipos de atributos
1. Cadenas CDATA (Datos de caracteres) Pueden ser cualquier secuencia de
caracteres a excepción de los símbolos con significado especial: <,> !, &, ´,”.
2. ID Indica que el atributo tiene un nombre
definido y un valor para cada instancia del elemento al que se aplica.
El valor debe ser único en todo el documento. Esquemas Conceptuales
33
Ejemplo: ID
<!ELEMENT empleado (#PCDATA)>
<!ATTLIST empleado nss ID #REQUIRED>
Indica que cada empleado tiene un nss y que dos
empleados no pueden tener el mismo
Esquemas Conceptuales
34
Tipos de atributos
3. IDREF
Representa un atributo cuyo valor debe coincidir con el de otro atributo del documento.
Esquemas Conceptuales
35
Ejemplo
<!ATTLIST autor codigo ID #REQUIRED>
<!ATTLIST autorPremiado codigo IDREF #REQUIRED>
. . .
<autor codigo="A21">...</autor>
<autor codigo="A45">...</autor>
...
<autorPremiado codigo="A45" />
Esquemas Conceptuales
36
Tipos de atributos
4. Enumeraciones Atributos que solo pueden contener un
valor de entre un número reducido de opciones proporcionados en una lista.
<!ELEMENT teléfono (#PCDATA)>
<!ATTLIST teléfono lugar
(oficina | celular |particular)
oficina>
Proporciona la localización de un
núm_tel. No se da, se asume (por
defecto) que es el de la oficina.
Esquemas Conceptuales
37
Tipos de atributos
5. NMTOKEN (Autentificaciones) • Imponen restricciones sobre los valores de los
atributos. • Sólo acepta cadenas de caracteres: (letras ,
números, puntos, guiones, y los :)
<!ELEMENT país EMPTY>
Nota:
“500 000” No aceptado
por la presencia del
espacio en blanco
<!ATTLIST país población NMTOKEN #REQUIRED>
En XML:
<país población=“500000”/>
Esquemas Conceptuales
38
Ejercicios
1. Definir el elemento <foto> con los siguientes
atributos: src (nombre de la foto), fecha (DD-MM-AA).
2. Dar un ejemplo en XML
Esquemas Conceptuales
39
Posibles soluciones
Podemos tener las siguientes estructuras:
a) <foto src=“acapulco.jpg” fecha=“12-01-09”/>
b) <foto src=“acapulco.jpg” fecha=“12-01-09”>Vacaciones
en Acapulco en el 2009</foto>
c)
<foto src=“acapulco.jpg” fecha=“12-01-09”>
<comentario autor=“Cmed”>Vacaciones en Acapulco en el 2009
</comentario>
</foto>
Esquemas Conceptuales 40
a) Vacío con atributos
<!ELEMENT foto EMPTY>
<!ATTLIST foto src CDATA #REQUIRED>
<!ATTLIST foto fecha CDATA #IMPLIED>
src: obligatorio
fecha: opcional sin
valor por defecto
Ejemplo: <foto src=“acapulco.jpg”/>
Esquemas Conceptuales
41
HACER LAS DEFINICIONES DE LOS INCISOS B) Y C)
Ejercicio
Esquemas Conceptuales
42
b) No vacío (texto) con atributos
<!ELEMENT foto (#PCDATA)>
<!ATTLIST foto src CDATA #REQUIRED>
<!ATTLIST foto fecha CDATA #IMPLIED>
b) <foto src=“acapulco.jpg” fecha=“12-01-09”>Vacaciones
en Acapulco en el 2009</foto>
Esquemas Conceptuales
43
c) Con subelemento y atributos
c) <foto src=“acapulco.jpg” fecha=“12-01-09”>
<comentario autor=“Cmed”>Vacaciones en Acapulco en el 2009
</comentario>
</foto>
<!ELEMENT foto (comentario)>
<!ELEMENT comentario (#PCDATA)>
<!ATTLIST foto src CDATA #REQUIRED
fecha CDATA #IMPLIED>
<!ATTLIST comentario autor CDATA #IMPLIED> Esquemas Conceptuales
44
EJEMPLOS
Esquemas Conceptuales
45
Ejemplo:vacío con atributo
<!ELEMENT código EMPTY>
<!ATTLIST código postal #FIXED “09340”>
Indica que 09340 es el único código postal a
utilizar
Esquemas Conceptuales
46
Ejemplo: no vacío con atributo
<!ELEMENT mensaje (de, a, texto)>
<!ATTLIST mensaje prioridad (normal | urgente) normal>
Valor normal o urgente
Por defecto es normal
Esquemas Conceptuales
47
ALGUNAS OBSERVACIONES
ELEMENTOS, ATRIBUTOS
Esquemas Conceptuales
48
Elementos vs atributos
• Muchos atributos hacen difícil de leer el documento XML.
• Los atributos son adecuados para representar información simple
• Datos -> elementos
• Metadatos-> atributos
Esquemas Conceptuales
49
DTD (Definición de Tipo de Documento )
Define: –Elementos (ELEMENT)
–Atributos (ATTLIST)
–Entidades (ENTITY)
–Notaciones (NOTATION)
Esquemas Conceptuales
50
ENTIDADES
• Permiten guardar un contenido que puede usarse varias veces.
• Con lo anterior, un documento grande puede descomponerse en contenidos más manejables.
Esquemas Conceptuales
51
ENTIDADES
• Una entidad tiene un nombre que sirve como referencia a ésta.
• Existen entidades
1. Internas
2. Externas
3. Generales
4. Paramétricas
Esquemas Conceptuales
52
1. ENTIDADES Internas
Esquemas Conceptuales
53
1. ENTIDADES internas • Son abreviaturas definidas en la DTD. • No se maneja ningún objeto físico diferente
al del propio documento. • Su contenido coincide con el dado en la
declaración.
<!ENTITY nombre “valor”>
Dónde:
nombre - nombre de la entidad
valor – es la cadena de sustitución correspondiente Esquemas Conceptuales
54
Ejemplo
<!ENTITY derechos “Copyright 2007”>
En una entidad interna:
•Se llama Texto de reemplazamiento al contenido de la
entidad.
•Después del reemplazamiento, el valor de la entidad
pasa a ser parte del documento y como tal es
analizada.
Esquemas Conceptuales
55
2. ENTIDADES Externas
Esquemas Conceptuales
56
2. ENTIDADES externas
• Su contenido está fuera de la DTD: otro sitio, archivo,...
• Se hace referencia a su contenido mediante una URI precedida de la palabra PUBLIC o SYSTEM.
Esquemas Conceptuales
57
Sintaxis
<!ENTITY nombre SYSTEM “URI”>
El Texto de reemplazamiento correspondiente al
nombre lo indica SYSTEM o PUBLIC para dirigirse al
recurso externo nombrado por el URI (valor de la
entidad).
Esquemas Conceptuales
58
Ejemplo
<!ENTITY sitio SYSTEM “uam.dtd”>
En el XML:
<sitio_uam>&sitio;</sitio_uam>
Esquemas Conceptuales
59
En la DTD uam.dtd debe estar definida la
entidad:
<!ENTITY sitio “http://www.uam.mx”>
3. ENTIDADES paramétricas
Esquemas Conceptuales
60
3. ENTIDADES paramétricas
• Permiten agrupar datos dentro de la DTD para escribirlos de forma abreviada.
• Diseñadas para contener listas de atributos y modelos de contenido.
• Se caracterizan por un nombre que comienza por %.
• Para referenciarla se coloca el nombre entre % y el ;. Esquemas
Conceptuales 61
Sintaxis <!ENTITY % nombre “contenido”>
Esquemas Conceptuales
62
Ejemplo
<!ENTITY % tallas “pequeña|mediana|grande”>
Esquemas Conceptuales
63
Ejemplo
<!ELEMENT calcetin (%tallas;)>
<!ELEMENT tobillera (%tallas;)>
<!ELEMENT media (%tallas;)>
Equivale a:
<!ELEMENT calcetin
(pequeña|mediana|grande)>
Esquemas Conceptuales
64
Entidades en Atributos
También podemos definir entidades para atributos.
Esquemas Conceptuales
65
Ejemplo
<!ELEMENT calcetin (%tallas;)>
<!ELEMENT tobillera (%tallas;)>
<!ELEMENT media (%tallas;)>
<!ATTLIST calcetin %att.comun;>
<!ENTITY % att.comun "color (rojo|negro|blanco) #IMPLIED
precio CDATA #REQUIRED "
>
Esquemas Conceptuales
66
67
Entidades especiales
< <
> >
& &
" “
' ‘
Esquemas Conceptuales
Entidades caracter
• Es posible definir una entidad caracter, para cualquier símbolo, utilizando el código hexadecimal del mismo.
• Sintaxis: <!ENTITY nom_entidad “&#codeHexadecimal;”>
Ejemplo: <!ENTITY ccedilla “�E7;”>
Esquemas Conceptuales
68
DTD INTERNA (EN DOCUMENTO XML)
Esquemas Conceptuales
69
DTD en documento XML <?xml version="1.0"?> <!DOCTYPE mensaje [ <!ELEMENT mensaje (para+,de, titulo,cuerpo)> <!ELEMENT para (#PCDATA)> <!ELEMENT de (#PCDATA)> <!ELEMENT titulo (#PCDATA)> <!ELEMENT cuerpo (#PCDATA)> ]> <mensaje> <para>[email protected]</para> <para>toñ[email protected]</para> <de>[email protected]</de> <titulo>Aviso</titulo> <cuerpo>La clase del miércoles esta disponible en el
aula virtual</cuerpo> </mensaje>
70
Agregar el atributo prioridad (urgente|normal) a mensaje
Esquemas Conceptuales
71
DTD en documento XML <?xml version="1.0"?> <!DOCTYPE mensaje [ <!ELEMENT mensaje (para+,de, titulo,cuerpo)> <!ELEMENT para (#PCDATA)> <!ELEMENT de (#PCDATA)> <!ELEMENT titulo (#PCDATA)> <!ELEMENT cuerpo (#PCDATA)> <!ATTLIST mensaje prioridad (urgente|normal) #IMPLIED
]> <mensaje> <para>[email protected]</para> <para>toñ[email protected]</para> <de>[email protected]</de> <titulo>Aviso</titulo> <cuerpo>La clase del miércoles esta disponible en el aula
virtual</cuerpo> </mensaje>
72
DTD EXTERNA
Esquemas Conceptuales
73
<?xml version="1.0"?> <!DOCTYPE mensaje SYSTEM “Estructura_mensaje.dtd"> <mensaje> <para>[email protected]</para> <de>Carolina</de> <titulo>Aviso</titulo> <cuerpo>La clase del miércoles esta disponible en el aula
virtual</cuerpo> </mensaje>
DTD fuera de documento XML
Esquemas Conceptuales 74
mensaje.dtd
<!ELEMENT mensaje (para+,de, titulo,cuerpo)>
<!ELEMENT para (#PCDATA)>
<!ELEMENT de (#PCDATA)>
<!ELEMENT titulo (#PCDATA)>
<!ELEMENT cuerpo (#PCDATA)>
<!ATTLIST mensaje prioridad (urgente|normal) #IMPLIED>
Esquemas Conceptuales
75
Ejercicio
XML-DTD
Esquemas Conceptuales
76
Dado el código XML siguiente, realizar las actividades:
1.- ¿Es un documento bien formado?
Si no lo es, haga las modificaciones correspondientes
2. Haga el árbol XML correspondiente a la estructura del documento
3. Proponga la DTD externa “planeacion.dtd”. Utilizar entidades.
Esquemas Conceptuales
77
Proponer la DTD para el XML siguiente <?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE planeacion SYSTEM "planeacion.dtd">
<planeacion trimestre="">
<datos_gral>
<datos_profesor>
<nom>
<nombre></nombre>
<apat></apat>
<amat></amat>
</nom>
<email></email>
<oficina></oficina>
<pageweb></pageweb>
78
<asesoria></asesoria> </datos_profesor> <datos_uea> <clave></clave> <objetivos> <objetivo></objetivo> </objetivos> <aulavirtual></aulavirtual> <horario_teoria> <dia></dia> <hora></hora> <lugar></lugar> </horario_teoria> <horario_practica> <dia></dia> <hora></hora> <lugar></lugar> </horario_practica> </datos_uea> </datos_gral> </planeacion trimestre>
Aquí su propuesta
Duración: 30-40 minutos
Esquemas Conceptuales
79
¿Bien formado?
Esquemas Conceptuales
80
2.-Sol. Árbol
81
planeación @trimestre
datos_gral
datos_profesor
email nom
datos_uea
asesoria pageweb oficina
completar
3.- Planeacion.dtd • Utilizar una entidad paramétrica
Esquemas Conceptuales
82