7a XML 3 EsquemasConceptuales DTD

Preview:

Citation preview

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>lr@gmail.com</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>apb@gmail.com</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

&lt; <

&gt; >

&amp; &

&quot; “

&apos; ‘

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 “&#00E7;”>

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>juan.perez@gmail.com</para> <para>toño.lopez@gmail.com</para> <de>Carolina@gmail.com</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>juan.perez@gmail.com</para> <para>toño.lopez@gmail.com</para> <de>Carolina@gmail.com</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>juan.perez@gmail.com</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

Ejercicios adicionales

Esquemas Conceptuales

83

Recommended