DTD Document Type Definitions Carlos Castillo [email_address] Departamento de Ciencias de la Computacion Facultad de Cienc...
XML (1/2) <ul><li>Formato para expresar todo tipo de documentos </li></ul><?xml version=”1.0”?> <pacientes> <paciente> <no...
XML (2/2) <ul><li>Flexible, OK si  faltan/sobran  elementos,  formatos </li></ul><?xml version=”1.0”?> <pacientes> <pacien...
DTD <ul><li>Especifica clases de documento </li></ul><?xml version=”1.0”?> <pacientes> <paciente> <nombre>Juan</nombre> <a...
Para que se usan las DTD ? <ul><li>Describir  un formato de datos </li></ul><ul><li>Usar un formato  comun  de datos entre...
Ejemplo simple 1/2 <!ELEMENT ejemplo (#PCDATA)> <!DOCTYPE ejemplo SYSTEM ejemplo.dtd> <ejemplo> Este es un ejemplo. </ejem...
Ejemplo simple 2/2 <!ELEMENT ejemplo (#PCDATA)> <!DOCTYPE ejemplo SYSTEM ejemplo.dtd> < inicioejemplo > Este es un ejemplo...
¿ Que describe una DTD ? <ul><li>Elementos </li></ul><ul><ul><li>Cuales son los tags permitidos </li></ul></ul><ul><ul><li...
Elementos con “contenido ELEMENT” <!ELEMENT  mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cue...
Elementos con “contenido TEXT” <!ELEMENT  mensaje (urgente?, asunto, cuerpo)> <!ELEMENT  asunto (#PCDATA)> <!ELEMENT  cuer...
Elementos con “contenido MIXED” <!ELEMENT  mensaje (urgente?, asunto, cuerpo)> <!ELEMENT  asunto (#PCDATA)> <!ELEMENT  cue...
Elementos con “contenido EMPTY” <!ELEMENT  mensaje (urgente?, asunto, cuerpo)> <!ELEMENT  asunto (#PCDATA)> <!ELEMENT  cue...
Ejemplos documentos 1/4 <!ELEMENT  mensaje (urgente?, asunto, cuerpo)> <!ELEMENT  asunto (#PCDATA)> <!ELEMENT  cuerpo (cit...
Ejemplos documentos 2/4 <!ELEMENT  mensaje (urgente?, asunto, cuerpo)> <!ELEMENT  asunto (#PCDATA)> <!ELEMENT  cuerpo (cit...
Ejemplos documentos 3/4 <!ELEMENT  mensaje (urgente?, asunto, cuerpo)> <!ELEMENT  asunto (#PCDATA)> <!ELEMENT  cuerpo (cit...
Ejemplos documentos 4/4 <!ELEMENT  mensaje (urgente?, asunto, cuerpo)> <!ELEMENT  asunto (#PCDATA)> <!ELEMENT  cuerpo (cit...
Orden e inclusion de elementos <!-- Uno o varios FirstName seguidos de  uno o varios LastName --> <!ELEMENT  nombre (First...
Orden de elementos, ejemplo <!ELEMENT  mensaje (urgente?|asunto|cuerpo)> <!ELEMENT  asunto (#PCDATA)> <!ELEMENT  cuerpo (c...
Atributos <!ELEMENT  lavadora EMPTY > <!ATTLIST lavadora carga NMTOKEN #IMPLIED marca CDATA #IMPLIED voltaje NMTOKENS #REQ...
Atributos, ejemplo <!ELEMENT  lavadora EMPTY > <!ATTLIST lavadora carga NMTOKEN #IMPLIED marca CDATA #IMPLIED voltaje NMTO...
Repeticion de elementos <!ELEMENT bib (libro|revista)+> <!ELEMENT libro ( titulo,autor )> <!ELEMENT revista ( titulo,autor...
Repeticion de atributos <!ELEMENT bib (libro|revista)+> <!ELEMENT libro EMPTY> <!ATTLIST libro titulo CDATA #REQUIRED edit...
Upcoming SlideShare
Loading in …5
×

Document type definitions (DTD)

1,959 views

Published on

Published in: Technology, News & Politics
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,959
On SlideShare
0
From Embeds
0
Number of Embeds
35
Actions
Shares
0
Downloads
52
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Document type definitions (DTD)

  1. 1. DTD Document Type Definitions Carlos Castillo [email_address] Departamento de Ciencias de la Computacion Facultad de Ciencias Fisicas y Matematicas Universidad de Chile
  2. 2. XML (1/2) <ul><li>Formato para expresar todo tipo de documentos </li></ul><?xml version=”1.0”?> <pacientes> <paciente> <nombre>Juan</nombre> <apellido>Perez</apellido> <edad>38</edad> </paciente> <paciente> <nombre>Carlos</nombre> <apellido>Avila</apellido> </paciente> </pacientes> doc1.xml <?xml version=”1.0”?> <lavadoras> <lavadora> <marca>Samsung</marca> <modelo>RX-1200</modelo> </lavadora> <lavadora> <marca>Phillips</marca> <modelo>9500 JX</modelo> <carga>Frontal</carga> </lavadora> </lavadoras> doc2.xml
  3. 3. XML (2/2) <ul><li>Flexible, OK si faltan/sobran elementos, formatos </li></ul><?xml version=”1.0”?> <pacientes> <paciente> <nombre>Juan</nombre> <apellido>Perez</apellido> <edad>38</edad> </paciente> <paciente> <nombre>Carlos</nombre> <apellido>Avila</apellido> </paciente> </pacientes> doc1.xml <?xml version=”1.0”?> <lavadoras> <lavadora> <marca>Samsung</marca> <modelo> RX-1200 </modelo> </lavadora> <lavadora> <marca>Phillips</marca> <modelo> 9500 JX </modelo> <carga>Frontal</carga> </lavadora> </lavadoras> doc2.xml
  4. 4. DTD <ul><li>Especifica clases de documento </li></ul><?xml version=”1.0”?> <pacientes> <paciente> <nombre>Juan</nombre> <apellido>Perez</apellido> <edad>38</edad> </paciente> ... </pacientes> doc1.xml <?xml version=”1.0”?> <lavadoras> <lavadora> <marca>Samsung</marca> <modelo>RX-1200</modelo> </lavadora> ... </lavadoras> doc2.xml pacientes.dtd lavadoras.dtd
  5. 5. Para que se usan las DTD ? <ul><li>Describir un formato de datos </li></ul><ul><li>Usar un formato comun de datos entre aplicaciones </li></ul><ul><li>Verificar los datos al intercambiarlos </li></ul><ul><li>Verificar uno mismo un conjunto de datos </li></ul>
  6. 6. Ejemplo simple 1/2 <!ELEMENT ejemplo (#PCDATA)> <!DOCTYPE ejemplo SYSTEM ejemplo.dtd> <ejemplo> Este es un ejemplo. </ejemplo> ok1.xml ejemplo.dtd <!DOCTYPE ejemplo SYSTEM ejemplo.dtd> <ejemplo/> ok2.xml
  7. 7. Ejemplo simple 2/2 <!ELEMENT ejemplo (#PCDATA)> <!DOCTYPE ejemplo SYSTEM ejemplo.dtd> < inicioejemplo > Este es un ejemplo. </ finejemplo > (NO ESTA BIEN FORMADO ) malo1.xml ejemplo.dtd <!DOCTYPE ejemplo SYSTEM ejemplo.dtd> < example > Este es un ejemplo. </ example > (NO ES VALIDO ) malo2.xml
  8. 8. ¿ Que describe una DTD ? <ul><li>Elementos </li></ul><ul><ul><li>Cuales son los tags permitidos </li></ul></ul><ul><ul><li>Cual es el contenido de cada tag </li></ul></ul><ul><li>Estructura </li></ul><ul><ul><li>En que orden van los tags en el documento </li></ul></ul><ul><li>Anidamiento </li></ul><ul><ul><li>Cuales tags van dentro de cuales </li></ul></ul>
  9. 9. Elementos con “contenido ELEMENT” <!ELEMENT mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> ejemplo.dtd <ul><li>Un elemento tiene contenido ELEMENT , si solo puede contener a otros elementos, opcionalmente separados por espacios en blanco. </li></ul>
  10. 10. Elementos con “contenido TEXT” <!ELEMENT mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> ejemplo.dtd <ul><li>Un elemento tiene contenido TEXT, si solo puede contener texto </li></ul><ul><li>(PCDATA = printable character data) </li></ul>
  11. 11. Elementos con “contenido MIXED” <!ELEMENT mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> ejemplo.dtd <ul><li>Un elemento tiene contenido MIXED , si puede contener texto u otros elementos </li></ul>
  12. 12. Elementos con “contenido EMPTY” <!ELEMENT mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> ejemplo.dtd <ul><li>Un elemento tiene contenido EMPTY , si no puede contener otros elementos </li></ul>
  13. 13. Ejemplos documentos 1/4 <!ELEMENT mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> ejemplo.dtd <?xml version=”1.0”?> <!DOCTYPE mensaje SYSTEM “asunto.dtd”> <mensaje> <urgente/> <asunto> Agenda del curso </asunto> <cuerpo> <cita> Por favor enviar agenda </cita> Te envio la agenda ahora </cuerpo> </mensaje> ok1.xml
  14. 14. Ejemplos documentos 2/4 <!ELEMENT mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> ejemplo.dtd <?xml version=”1.0”?> <!DOCTYPE mensaje SYSTEM “asunto.dtd”> <mensaje> <asunto> Agenda del curso </asunto> <cuerpo> Te envio la agenda ahora </cuerpo> </mensaje> ok2.xml
  15. 15. Ejemplos documentos 3/4 <!ELEMENT mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> ejemplo.dtd <?xml version=”1.0”?> <!DOCTYPE mensaje SYSTEM “asunto.dtd”> <mensaje> <urgente>Si</urgente> <asunto/> <cita>Enviar</cita> <cuerpo> Te envio la agenda ahora </cuerpo> </mensaje> malo1.xml
  16. 16. Ejemplos documentos 4/4 <!ELEMENT mensaje (urgente?, asunto, cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> ejemplo.dtd <?xml version=”1.0”?> <!DOCTYPE mensaje SYSTEM “asunto.dtd”> <mensaje> <cuerpo> Te envio la agenda ahora </cuerpo> <asunto>Test</asunto> </mensaje> malo2.xml
  17. 17. Orden e inclusion de elementos <!-- Uno o varios FirstName seguidos de uno o varios LastName --> <!ELEMENT nombre (FirstName+, LastName+)> <!-- Cero o varios FirstName seguidos de uno o varios LastName --> <!ELEMENT nombre (FirstName*, LastName+)> <!-- cheque O BIEN efectivo O BIEN tarjeta --> <!ELEMENT pago (cheque|efectivo|tarjeta)> <!-- Carta con o sin fecha --> <!ELEMENT carta (fecha?, cuerpo)> ejemplo.dtd
  18. 18. Orden de elementos, ejemplo <!ELEMENT mensaje (urgente?|asunto|cuerpo)> <!ELEMENT asunto (#PCDATA)> <!ELEMENT cuerpo (cita|#PCDATA)*> <!ELEMENT cita (#PCDATA)> <!ELEMENT urgente EMPTY> msj.dtd <?xml version=”1.0”?> <!DOCTYPE mensaje SYSTEM “msj.dtd”> <mensaje> <cuerpo/> <asunto/> </mensaje> ok.xml
  19. 19. Atributos <!ELEMENT lavadora EMPTY > <!ATTLIST lavadora carga NMTOKEN #IMPLIED marca CDATA #IMPLIED voltaje NMTOKENS #REQUIRED> <!-- #IMPLIED=opcional --> lavadora.dtd <ul><li>CDATA: </li></ul><ul><li>texto </li></ul><ul><li>NMTOKEN: </li></ul><ul><li>“abc...z0123..9-_:.” </li></ul><ul><li>NMTOKENS: </li></ul><ul><li>NMTOKEN + espacios </li></ul><ul><li>ID: empezar con letra </li></ul><ul><li>IDREF: ser un ID </li></ul>
  20. 20. Atributos, ejemplo <!ELEMENT lavadora EMPTY > <!ATTLIST lavadora carga NMTOKEN #IMPLIED marca CDATA #IMPLIED voltaje NMTOKENS #REQUIRED> lavadora.dtd <?xml version=”1.0”?> <!DOCTYPE lavadora SYSTEM “lavadora.dtd”> <lavadora carga=”frontal” marca=”Samsung 10XE” voltaje=”210V 110V”/> lavadora.xml
  21. 21. Repeticion de elementos <!ELEMENT bib (libro|revista)+> <!ELEMENT libro ( titulo,autor )> <!ELEMENT revista ( titulo,autor )> <!ELEMENT titulo (#PCDATA)> <!ELEMENT autor (#PCDATA)> biblioteca1.dtd <!ELEMENT bib (libro|revista)+> <!ENTITY % bibelem “ titulo,autor”> <!ELEMENT libro ( %bibelem; ) > <!ELEMENT revista ( %bibelem; ) > <!ELEMENT titulo (#PCDATA)> <!ELEMENT autor (#PCDATA)> biblioteca2.dtd
  22. 22. Repeticion de atributos <!ELEMENT bib (libro|revista)+> <!ELEMENT libro EMPTY> <!ATTLIST libro titulo CDATA #REQUIRED editorial CDATA #REQUIRED autor CDATA #REQUIRED> <!ATTLIST revista titulo CDATA #REQUIRED editorial CDATA #REQUIRED numero NMTOKEN #REQUIRED> biblioteca1.dtd <!ELEMENT bib (libro|revista)+> <!ENTITY % bibattrs “ titulo CDATA #REQUIRED editorial CDATA #REQUIRED“ > <!ELEMENT libro EMPTY> <!ATTLIST libro %bibattrs; autor CDATA #REQUIRED> <!ELEMENT revista EMPTY> <!ATTLIST revista %bibattrs; numero CDATA #REQUIRED> biblioteca2.dtd

×