SlideShare una empresa de Scribd logo
1 de 22
DTDs 
Declaraciones de tipo de 
documentos en XML 
Jose Emilio Labra Gayo 
Departamento de Informática 
Universidad de Oviedo
<?xml version="1.0" ?> 
<pedido> 
<producto codigo="RX2"> 
<nombre>Rotulador RX2</nombre> 
<cantidad>20</cantidad> 
</producto> 
<producto codigo="L23"> 
<nombre>Grapadora Lin</nombre> 
<cantidad>2</cantidad> 
</producto> 
</pedido> 
Jose Emilio Labra Gayo – Universidad de Oviedo 
Documento válido 
Se puede incluir una declaración del tipo de documento 
Documento válido 
pedido.dtd 
<!ELEMENT pedido (producto*) > 
<!ELEMENT producto (nombre,cantidad)> 
<!ELEMENT nombre (#PCDATA)> 
<!ELEMENT cantidad (#PCDATA)> 
<!ATTLIST producto codigo CDATA #REQUIRED> 
Está bien formado y 
La estructura encaja con la declaración del tipo de documento
Jose Emilio Labra Gayo – Universidad de Oviedo 
Declaración Tipo Documento 
DTD 
La DTD permite especificar la estructura del 
documento 
La DTD puede estar separada del documento 
Emisor 
DTD 
Documento 
autodescrito 
valida 
Receptor
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD interna 
DTD interna: dentro del mismo documento XML 
<?xml version="1.0" ?> 
<!DOCTYPE pedido [ 
<!ELEMENT pedido (producto*) > 
<!ELEMENT producto (nombre,cantidad)> 
<!ELEMENT nombre (#PCDATA)> 
<!ELEMENT cantidad (#PCDATA)> 
]> 
<pedido> 
<producto> 
<nombre>Rotulador RX2</nombre> 
<cantidad>20</cantidad> 
</producto> 
<producto> 
<nombre>Grapadora Lin</nombre> 
<cantidad>2</cantidad> 
</producto> 
</pedido>
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD externa 
DTD externa: Haciendo referencia a una URI 
<?xml version="1.0" ?> 
<!DOCTYPE pedido SYSTEM "http://www.ej.org/pedidos.dtd"> 
<pedido> 
<producto> 
<nombre>Rotulador RX2</nombre> 
<cantidad>20</cantidad> 
</producto> 
<producto> 
<nombre>Grapadora Lin</nombre> 
<cantidad>2</cantidad> 
</producto> 
</pedido> 
http://www.ej.org/pedidos.dtd 
<!ELEMENT pedido (producto*) > 
<!ELEMENT producto (nombre,cantidad)> 
<!ELEMENT nombre (#PCDATA)> 
<!ELEMENT cantidad (#PCDATA)>
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD pública 
Hace referencia a un identificador público 
Se puede disponer de un catálogo de identificadores públicos 
No sería necesario buscar la DTD en Internet 
<?xml version="1.0"?> 
<!DOCTYPE HTML PUBLIC 
"-//W3C//DTD HTML 4.0//EN" 
"http://www.w3c.org/TR/REC-html/strict.dtd"> 
<HTML> 
<HEAD><TITLE>Ejemplo HTML</TITLE></HEAD> 
<BODY> 
<H1>HTML de ejemplo</H1> 
</BODY> 
</HTML>
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD mixta 
Es posible añadir nuevas definiciones a la 
validación externa 
<?xml version="1.0" ?> 
<!DOCTYPE pedido SYSTEM "http://www.ej.org/pedidos.dtd" [ 
<!ATTLIST producto fecha CDATA #IMPLIED > 
]> 
<pedido> 
<producto> 
<nombre>Rotulador RX2</nombre> 
<cantidad>20</cantidad> 
</producto> 
<producto fecha="Julio"> 
<nombre>Grapa</nombre> 
<cantidad>2</cantidad> 
</producto> 
</pedido>
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD 
Tipos de declaraciones 
ELEMENT 
Elementos del documento XML 
ATTLIST 
Lista de atributos de un elemento 
ENTITY 
Entidades (variables o macros) 
NOTATION 
Definen tipos de contenidos 
Facilitan la inclusión de formatos binarios (imágenes, sonidos, ...)
Contenido de Elementos 
(?) = 0, 1 elemento 
(*) = 0 ó más elementos 
(+) = 1 ó más elementos 
(|) = alternativa 
(,) = secuencia 
EMPTY = vacío 
ANY = cualquier estructura de subelementos 
#PCDATA = cadena de caracteres analizados 
<!ELEMENT pizza (ingrediente*, inventor?)> 
<!ELEMENT servicio (domicilio | restaurante) > 
<!ELEMENT ingrediente EMPTY> 
<!ELEMENT inventor (#PCDATA)> 
<!ELEMENT sección (título, (contenido | sección+))> 
Jose Emilio Labra Gayo – Universidad de Oviedo 
Recursividad
Jose Emilio Labra Gayo – Universidad de Oviedo 
Ejercicio 
Definir una DTD para validar el documento 
<libro> 
<titulo>La Primavera</titulo> 
<autor>Juan Flores</autor> 
<seccion> 
<nombre>Introduccion</nombre> 
<contenido> 
<parrafo>Esta es la Introduccion</parrafo> 
</contenido> 
</seccion> 
<seccion> 
<nombre>Conclusiones</nombre> 
<contenido> 
<parrafo>Las flores salen</parrafo> 
<parrafo>La sangre se altera</parrafo> 
</contenido> 
</seccion> 
</libro> 
Disponible en http://www.di.uniovi.es/~labra/cursos/XML/libro.xml
Jose Emilio Labra Gayo – Universidad de Oviedo 
Contenido mixto 
Contenido que puede mezclar texto con 
elementos 
Ejemplo: 
<comentario> 
Este texto está relacionado con el 
<enlace href=“http://www.quijote.com”>Quijote</enlace> y ha sido 
realizado por <persona>Leopoldo Alas Clarín</persona> 
</comentario> 
<!ELEMENT comentario (#PCDATA | enlace | persona)* > 
<!ELEMENT enlace (#PCDATA)> 
<!ELEMENT persona (#PCDATA)> 
<!ATTLIST enlace href CDATA #REQUIRED>
Tipos de datos en atributos 
CDATA = Cadena de caracteres 
NMTOKEN = Palabra (sin espacios) 
NMTOKENS = Lista de palabras 
Enumeración separada por | 
Jose Emilio Labra Gayo – Universidad de Oviedo 
Atributos 
Valor de los Atributos 
#REQUIRED Obligatorio 
#IMPLIED Opcional 
#FIXED Constante 
Valor Valor por defecto 
<!ATTLIST pizza nombre CDATA #REQUIRED> 
<!ATTLIST ingrediente nombre CDATA #REQUIRED 
calorías CDATA #IMPLIED> 
<!ATTLIST precio moneda (euros|dólares) #REQUIRED 
valor CDATA #REQUIRED> 
<!ATTLIST impuesto tipo CDATA #FIXED “IVA”> 
<pizza nombre=“4 estaciones” > 
<ingrediente nombre=“Jamón” /> 
<precio moneda=“euros” valor=“7” /> 
</pizza>
Jose Emilio Labra Gayo – Universidad de Oviedo 
Ejercicio 
¿Cuál de los siguientes documentos XML validaría 
con esta DTD? 
<!ELEMENT d (p*)> 
<!ELEMENT p (#PCDATA|v)* > 
<!ELEMENT v (#PCDATA)> 
<!ATTLIST d m CDATA #IMPLIED> 
<d> 
<p m=“3"><v>x</v></p> 
</d> 
<d m=“3”> 
<p><v>x</v>=2+<v>y</v></p> 
</d> 
<d> 
<p>x</p>=2+<v>y</v> 
</d> 
<d m=“3”> 
<p>x=2+<v>y</v> 
</d> 
1 
2 
3 
4
Integridad referencial 
ID e IDREF permiten definir integridad referencial básica para 
valores de atributos 
ID = Nombre único (sin duplicados) 
No puede empezar por dígito 
IDREF = Su valor debe apuntar a un ID ya existente 
<!ATTLIST persona código ID #REQUIRED> 
<!ATTLIST dueño código IDREF #REQUIRED> 
<persona código=“23” nombre =“Juan” /> 
<persona código=“35” nombre =“Pepe” /> 
<persona código=“37” nombre =“Luis” /> 
<dueño código=“35” /> 
Jose Emilio Labra Gayo – Universidad de Oviedo
<!ENTITY pm “Pizza Margarita”> 
<!ENTITY queso “<ingrediente nombre=‘queso’ />” > 
Entidades numéricas: Código numérico del carácter 
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD 
Entidades Generales 
Entidades: Asignan nombres a elementos (similar a macros) 
Se denotan por &entidad; 
<pizza nombre=”&pm;" precio=”7"> 
&queso; 
</pizza> 
<pizza nombre=”Pizza Margarita" precio=”7"> 
<ingrediente nombre=‘queso’ /> 
</pizza> 
&#x2200;  &#8707;  
Entidades predefinidas: Permiten caracteres especiales sin analizar 
&lt; < &quot; “ &apos; ‘ 
&gt; > &amp; &
Jose Emilio Labra Gayo – Universidad de Oviedo 
Ejercicio 
¿A qué documento 
equivale? 
<!DOCTYPE prueba [ 
<!ENTITY p1 "Hola" > 
<!ENTITY p2 "&p1; &p1;" > 
<!ENTITY p3 "&p2; &p2;" > 
<!ENTITY p4 "&p3; &p3;" > 
<!ENTITY p5 "&p4; &p4;" > 
<!ENTITY p6 "&p5; &p5;" > 
<!ENTITY p7 "&p6; &p6;" > 
<!ENTITY p8 "&p7; &p7;" > 
<!ENTITY p9 "&p8; &p8;" > 
<!ENTITY p10 "&p9; &p9;" > 
<!ENTITY p11 "&p10; &p10;" > 
<!ENTITY p12 "&p11; &p11;" > 
<!ENTITY p13 "&p12; &p12;" > 
<!ENTITY p14 "&p13; &p13;" > 
<!ENTITY p15 "&p14; &p14;" > 
]> 
<prueba> 
&p15; 
</prueba>
pizzas.xml 
establecimiento.dtd 
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD 
Entidades externas 
Permiten usar archivos externos (Incluir otros documentos XML) 
<pizzas> 
<pizza nombre=”4 Quesos" precio=”7"> 
<ingrediente nombre=“Jamón” /> 
<ingrediente nombre=“Queso” /> 
</pizza> 
. . . 
</pizzas> 
personal.xml 
<personal> 
<trabajador 
nombre=” Benito Alcaparra" > 
. . . 
</trabajador> 
. . . 
</personal> 
establecimiento.xml 
<establecimiento 
nombre=“Pizzería Al Capone”> 
&personal; 
&pizzas; 
</establecimiento> 
<!ELEMENT establecimiento ANY> 
<!ENTITY personal SYSTEM “personal.xml”> 
<!ENTITY pizzas SYSTEM “pizzas.xml”>
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD 
Entidades externas 
Las entidades externas combinadas con 
notaciones permiten incluir archivos externos 
con datos binarios 
<!NOTATION gif SYSTEM “gifEditor.exe”> 
<!ENTITY dibujo SYSTEM “logotipo.gif” NDATA gif> 
<información> 
<logotipo>&dibujo;</logotipo> 
</información>
Permiten dar nombres a partes de un DTD 
Se denotan por %entidad; 
<!ENTITY establecimiento (nombre,dueño?,calle,número?,ciudad,país,códigoPostal) > 
<!ENTITY persona (dni, nombre, calle,número?,ciudad,país,códigoPostal) > 
Jose Emilio Labra Gayo – Universidad de Oviedo 
DTD 
Entidades Parámetro 
<!ENTITY %localización “calle,número?,ciudad,país,códigoPostal” > 
<!ENTITY establecimiento (nombre,dueño?,%localización;)> 
<!ENTITY persona (dni, nombre, %localización;)> 
Entidades externas: Permiten incluir elementos externos en una DTD 
Aplicación: Dividir la definición de una DTD en varios documentos 
<!ENTITY %persona SYSTEM “persona.dtd”> 
<!ENTITY %establecimiento SYSTEM “establecimiento.dtd”> 
%persona; 
%establecimiento;
Jose Emilio Labra Gayo – Universidad de Oviedo 
Características de DTD’s 
Especifican estructura del documento: 
Elementos, atributos, anidamientos, etc. 
Integridad referencial mínima (ID, IDREF) 
Mecanismo sencillo de abstracción 
Entidades  Macros 
Inclusión de documentos externos 
Integrados en XML (Parte de la especificación) 
Sencillos de comprender ( Expresiones 
regulares)
Jose Emilio Labra Gayo – Universidad de Oviedo 
Limitaciones de DTD’s 
La Sintaxis no es XML (difíciles de manipular) 
No dan buen soporte a Espacios de nombres 
No permiten especificar tipos de datos (por ejemplo: enteros, flotantes, 
fechas, etc. 
No permiten especificar secuencias no ordenadas 
((e1,e2,e3)|(e1,e3,e2)|(e2,e1,e3)|...(e3,e2,e1)) 
Soporte limitado para Referencias cruzadas, no es posible formar claves a 
partir de varios atributos o de elementos 
No son extensibles (una vez definido, no es posible añadir nuevos 
vocabularios a un DTD) 
Otras posibilidades: XML Schema, Schematron, Relax NG, etc.
Jose Emilio Labra Gayo – Universidad de Oviedo 
Fin de la Presentación

Más contenido relacionado

La actualidad más candente

Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTMLAjay Khatri
 
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationSouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationClaus Ibsen
 
Querying XML: XPath and XQuery
Querying XML: XPath and XQueryQuerying XML: XPath and XQuery
Querying XML: XPath and XQueryKatrien Verbert
 
Introducción al desarrollo web frontend
Introducción al desarrollo web frontendIntroducción al desarrollo web frontend
Introducción al desarrollo web frontendMax Kraszewski
 
HTML Introduction, HTML History, HTML Uses, HTML benifits
HTML Introduction, HTML History, HTML Uses, HTML benifitsHTML Introduction, HTML History, HTML Uses, HTML benifits
HTML Introduction, HTML History, HTML Uses, HTML benifitsPro Guide
 
Html5 y css3: Introducción y aplicación desde hoy
Html5 y css3: Introducción y aplicación desde hoyHtml5 y css3: Introducción y aplicación desde hoy
Html5 y css3: Introducción y aplicación desde hoyParadigma Digital
 
HTML + CSS Examples
HTML + CSS ExamplesHTML + CSS Examples
HTML + CSS ExamplesMohamed Loey
 
Python functions
Python functionsPython functions
Python functionsAliyamanasa
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Modelchomas kandar
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable CodeBaidu, Inc.
 
Html5 and-css3-overview
Html5 and-css3-overviewHtml5 and-css3-overview
Html5 and-css3-overviewJacob Nelson
 

La actualidad más candente (20)

Introduction to HTML
Introduction to HTMLIntroduction to HTML
Introduction to HTML
 
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integrationSouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
SouJava May 2020: Apache Camel 3 - the next generation of enterprise integration
 
Querying XML: XPath and XQuery
Querying XML: XPath and XQueryQuerying XML: XPath and XQuery
Querying XML: XPath and XQuery
 
Apuntes de XSD
Apuntes de XSDApuntes de XSD
Apuntes de XSD
 
Introducción al desarrollo web frontend
Introducción al desarrollo web frontendIntroducción al desarrollo web frontend
Introducción al desarrollo web frontend
 
Web services SOAP
Web services SOAPWeb services SOAP
Web services SOAP
 
PHP Web Programming
PHP Web ProgrammingPHP Web Programming
PHP Web Programming
 
C# Strings
C# StringsC# Strings
C# Strings
 
JavaScript Basic
JavaScript BasicJavaScript Basic
JavaScript Basic
 
HTML Introduction, HTML History, HTML Uses, HTML benifits
HTML Introduction, HTML History, HTML Uses, HTML benifitsHTML Introduction, HTML History, HTML Uses, HTML benifits
HTML Introduction, HTML History, HTML Uses, HTML benifits
 
Html5 y css3: Introducción y aplicación desde hoy
Html5 y css3: Introducción y aplicación desde hoyHtml5 y css3: Introducción y aplicación desde hoy
Html5 y css3: Introducción y aplicación desde hoy
 
Protocol Buffers
Protocol BuffersProtocol Buffers
Protocol Buffers
 
HTML + CSS Examples
HTML + CSS ExamplesHTML + CSS Examples
HTML + CSS Examples
 
Json
JsonJson
Json
 
Ficheros Php
Ficheros PhpFicheros Php
Ficheros Php
 
Python functions
Python functionsPython functions
Python functions
 
Document Object Model
Document Object ModelDocument Object Model
Document Object Model
 
Protocol Buffers
Protocol BuffersProtocol Buffers
Protocol Buffers
 
The Art Of Readable Code
The Art Of Readable CodeThe Art Of Readable Code
The Art Of Readable Code
 
Html5 and-css3-overview
Html5 and-css3-overviewHtml5 and-css3-overview
Html5 and-css3-overview
 

Destacado

XML's validation - DTD
XML's validation - DTDXML's validation - DTD
XML's validation - DTDvidede_group
 
2 dtd - validating xml documents
2   dtd - validating xml documents2   dtd - validating xml documents
2 dtd - validating xml documentsgauravashq
 
Base de datos de una pizzeria
Base de datos de una pizzeriaBase de datos de una pizzeria
Base de datos de una pizzeriaLupithaa Guerrero
 
XML, DTD & XSD Overview
XML, DTD & XSD OverviewXML, DTD & XSD Overview
XML, DTD & XSD OverviewPradeep Rapolu
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorJose Emilio Labra Gayo
 

Destacado (8)

XML's validation - DTD
XML's validation - DTDXML's validation - DTD
XML's validation - DTD
 
Introducción a XML Schema
Introducción a XML SchemaIntroducción a XML Schema
Introducción a XML Schema
 
Dtd
DtdDtd
Dtd
 
2 dtd - validating xml documents
2   dtd - validating xml documents2   dtd - validating xml documents
2 dtd - validating xml documents
 
Base de datos de una pizzeria
Base de datos de una pizzeriaBase de datos de una pizzeria
Base de datos de una pizzeria
 
Chuleta de XML
Chuleta de XMLChuleta de XML
Chuleta de XML
 
XML, DTD & XSD Overview
XML, DTD & XSD OverviewXML, DTD & XSD Overview
XML, DTD & XSD Overview
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el Servidor
 

Similar a XML y DTDs (20)

XML y JAVA
XML y JAVAXML y JAVA
XML y JAVA
 
Php
PhpPhp
Php
 
Protocolo xml
Protocolo xmlProtocolo xml
Protocolo xml
 
Xml
XmlXml
Xml
 
HTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas SemanticasHTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas Semanticas
 
DNI
DNIDNI
DNI
 
iDay Feb 2017 - Marcado de datos estructurados. Pónselo fácil a Google
iDay Feb 2017 - Marcado de datos estructurados. Pónselo fácil a GoogleiDay Feb 2017 - Marcado de datos estructurados. Pónselo fácil a Google
iDay Feb 2017 - Marcado de datos estructurados. Pónselo fácil a Google
 
Tecnologia Web - HTML
Tecnologia Web - HTMLTecnologia Web - HTML
Tecnologia Web - HTML
 
Presentación en Aspgems html5
Presentación en Aspgems html5Presentación en Aspgems html5
Presentación en Aspgems html5
 
HTML
HTMLHTML
HTML
 
Software de Búsqueda
Software de BúsquedaSoftware de Búsqueda
Software de Búsqueda
 
Tag s
Tag sTag s
Tag s
 
Guiapractica de bd completa
Guiapractica de bd completaGuiapractica de bd completa
Guiapractica de bd completa
 
05introduccionhtml 100901142734-phpapp02
05introduccionhtml 100901142734-phpapp0205introduccionhtml 100901142734-phpapp02
05introduccionhtml 100901142734-phpapp02
 
Jacqueline nuñez pacco
Jacqueline nuñez paccoJacqueline nuñez pacco
Jacqueline nuñez pacco
 
Jacqueline nuñez pacco
Jacqueline nuñez paccoJacqueline nuñez pacco
Jacqueline nuñez pacco
 
Htm ltlalti
Htm ltlaltiHtm ltlalti
Htm ltlalti
 
Apuntes de DTD
Apuntes de DTDApuntes de DTD
Apuntes de DTD
 
Taller Wordpress Nivel II
Taller Wordpress Nivel IITaller Wordpress Nivel II
Taller Wordpress Nivel II
 
Presentación CSS y HTML en Gummurcia
Presentación CSS y HTML en GummurciaPresentación CSS y HTML en Gummurcia
Presentación CSS y HTML en Gummurcia
 

Más de Jose Emilio Labra Gayo

Introducción a la investigación/doctorado
Introducción a la investigación/doctoradoIntroducción a la investigación/doctorado
Introducción a la investigación/doctoradoJose Emilio Labra Gayo
 
Challenges and applications of RDF shapes
Challenges and applications of RDF shapesChallenges and applications of RDF shapes
Challenges and applications of RDF shapesJose Emilio Labra Gayo
 
Legislative data portals and linked data quality
Legislative data portals and linked data qualityLegislative data portals and linked data quality
Legislative data portals and linked data qualityJose Emilio Labra Gayo
 
Validating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesValidating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesJose Emilio Labra Gayo
 
Legislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesLegislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesJose Emilio Labra Gayo
 
Como publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosComo publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosJose Emilio Labra Gayo
 

Más de Jose Emilio Labra Gayo (20)

Publicaciones de investigación
Publicaciones de investigaciónPublicaciones de investigación
Publicaciones de investigación
 
Introducción a la investigación/doctorado
Introducción a la investigación/doctoradoIntroducción a la investigación/doctorado
Introducción a la investigación/doctorado
 
Challenges and applications of RDF shapes
Challenges and applications of RDF shapesChallenges and applications of RDF shapes
Challenges and applications of RDF shapes
 
Legislative data portals and linked data quality
Legislative data portals and linked data qualityLegislative data portals and linked data quality
Legislative data portals and linked data quality
 
Validating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectivesValidating RDF data: Challenges and perspectives
Validating RDF data: Challenges and perspectives
 
Wikidata
WikidataWikidata
Wikidata
 
Legislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologiesLegislative document content extraction based on Semantic Web technologies
Legislative document content extraction based on Semantic Web technologies
 
ShEx by Example
ShEx by ExampleShEx by Example
ShEx by Example
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
Introducción a la Web Semántica
Introducción a la Web SemánticaIntroducción a la Web Semántica
Introducción a la Web Semántica
 
RDF Data Model
RDF Data ModelRDF Data Model
RDF Data Model
 
2017 Tendencias en informática
2017 Tendencias en informática2017 Tendencias en informática
2017 Tendencias en informática
 
RDF, linked data and semantic web
RDF, linked data and semantic webRDF, linked data and semantic web
RDF, linked data and semantic web
 
Introduction to SPARQL
Introduction to SPARQLIntroduction to SPARQL
Introduction to SPARQL
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
Como publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazadosComo publicar datos: hacia los datos abiertos enlazados
Como publicar datos: hacia los datos abiertos enlazados
 
16 Alternativas XML
16 Alternativas XML16 Alternativas XML
16 Alternativas XML
 
XSLT
XSLTXSLT
XSLT
 
XPath
XPathXPath
XPath
 
RDF validation tutorial
RDF validation tutorialRDF validation tutorial
RDF validation tutorial
 

Último

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 

Último (8)

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 

XML y DTDs

  • 1. DTDs Declaraciones de tipo de documentos en XML Jose Emilio Labra Gayo Departamento de Informática Universidad de Oviedo
  • 2. <?xml version="1.0" ?> <pedido> <producto codigo="RX2"> <nombre>Rotulador RX2</nombre> <cantidad>20</cantidad> </producto> <producto codigo="L23"> <nombre>Grapadora Lin</nombre> <cantidad>2</cantidad> </producto> </pedido> Jose Emilio Labra Gayo – Universidad de Oviedo Documento válido Se puede incluir una declaración del tipo de documento Documento válido pedido.dtd <!ELEMENT pedido (producto*) > <!ELEMENT producto (nombre,cantidad)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT cantidad (#PCDATA)> <!ATTLIST producto codigo CDATA #REQUIRED> Está bien formado y La estructura encaja con la declaración del tipo de documento
  • 3. Jose Emilio Labra Gayo – Universidad de Oviedo Declaración Tipo Documento DTD La DTD permite especificar la estructura del documento La DTD puede estar separada del documento Emisor DTD Documento autodescrito valida Receptor
  • 4. Jose Emilio Labra Gayo – Universidad de Oviedo DTD interna DTD interna: dentro del mismo documento XML <?xml version="1.0" ?> <!DOCTYPE pedido [ <!ELEMENT pedido (producto*) > <!ELEMENT producto (nombre,cantidad)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT cantidad (#PCDATA)> ]> <pedido> <producto> <nombre>Rotulador RX2</nombre> <cantidad>20</cantidad> </producto> <producto> <nombre>Grapadora Lin</nombre> <cantidad>2</cantidad> </producto> </pedido>
  • 5. Jose Emilio Labra Gayo – Universidad de Oviedo DTD externa DTD externa: Haciendo referencia a una URI <?xml version="1.0" ?> <!DOCTYPE pedido SYSTEM "http://www.ej.org/pedidos.dtd"> <pedido> <producto> <nombre>Rotulador RX2</nombre> <cantidad>20</cantidad> </producto> <producto> <nombre>Grapadora Lin</nombre> <cantidad>2</cantidad> </producto> </pedido> http://www.ej.org/pedidos.dtd <!ELEMENT pedido (producto*) > <!ELEMENT producto (nombre,cantidad)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT cantidad (#PCDATA)>
  • 6. Jose Emilio Labra Gayo – Universidad de Oviedo DTD pública Hace referencia a un identificador público Se puede disponer de un catálogo de identificadores públicos No sería necesario buscar la DTD en Internet <?xml version="1.0"?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3c.org/TR/REC-html/strict.dtd"> <HTML> <HEAD><TITLE>Ejemplo HTML</TITLE></HEAD> <BODY> <H1>HTML de ejemplo</H1> </BODY> </HTML>
  • 7. Jose Emilio Labra Gayo – Universidad de Oviedo DTD mixta Es posible añadir nuevas definiciones a la validación externa <?xml version="1.0" ?> <!DOCTYPE pedido SYSTEM "http://www.ej.org/pedidos.dtd" [ <!ATTLIST producto fecha CDATA #IMPLIED > ]> <pedido> <producto> <nombre>Rotulador RX2</nombre> <cantidad>20</cantidad> </producto> <producto fecha="Julio"> <nombre>Grapa</nombre> <cantidad>2</cantidad> </producto> </pedido>
  • 8. Jose Emilio Labra Gayo – Universidad de Oviedo DTD Tipos de declaraciones ELEMENT Elementos del documento XML ATTLIST Lista de atributos de un elemento ENTITY Entidades (variables o macros) NOTATION Definen tipos de contenidos Facilitan la inclusión de formatos binarios (imágenes, sonidos, ...)
  • 9. Contenido de Elementos (?) = 0, 1 elemento (*) = 0 ó más elementos (+) = 1 ó más elementos (|) = alternativa (,) = secuencia EMPTY = vacío ANY = cualquier estructura de subelementos #PCDATA = cadena de caracteres analizados <!ELEMENT pizza (ingrediente*, inventor?)> <!ELEMENT servicio (domicilio | restaurante) > <!ELEMENT ingrediente EMPTY> <!ELEMENT inventor (#PCDATA)> <!ELEMENT sección (título, (contenido | sección+))> Jose Emilio Labra Gayo – Universidad de Oviedo Recursividad
  • 10. Jose Emilio Labra Gayo – Universidad de Oviedo Ejercicio Definir una DTD para validar el documento <libro> <titulo>La Primavera</titulo> <autor>Juan Flores</autor> <seccion> <nombre>Introduccion</nombre> <contenido> <parrafo>Esta es la Introduccion</parrafo> </contenido> </seccion> <seccion> <nombre>Conclusiones</nombre> <contenido> <parrafo>Las flores salen</parrafo> <parrafo>La sangre se altera</parrafo> </contenido> </seccion> </libro> Disponible en http://www.di.uniovi.es/~labra/cursos/XML/libro.xml
  • 11. Jose Emilio Labra Gayo – Universidad de Oviedo Contenido mixto Contenido que puede mezclar texto con elementos Ejemplo: <comentario> Este texto está relacionado con el <enlace href=“http://www.quijote.com”>Quijote</enlace> y ha sido realizado por <persona>Leopoldo Alas Clarín</persona> </comentario> <!ELEMENT comentario (#PCDATA | enlace | persona)* > <!ELEMENT enlace (#PCDATA)> <!ELEMENT persona (#PCDATA)> <!ATTLIST enlace href CDATA #REQUIRED>
  • 12. Tipos de datos en atributos CDATA = Cadena de caracteres NMTOKEN = Palabra (sin espacios) NMTOKENS = Lista de palabras Enumeración separada por | Jose Emilio Labra Gayo – Universidad de Oviedo Atributos Valor de los Atributos #REQUIRED Obligatorio #IMPLIED Opcional #FIXED Constante Valor Valor por defecto <!ATTLIST pizza nombre CDATA #REQUIRED> <!ATTLIST ingrediente nombre CDATA #REQUIRED calorías CDATA #IMPLIED> <!ATTLIST precio moneda (euros|dólares) #REQUIRED valor CDATA #REQUIRED> <!ATTLIST impuesto tipo CDATA #FIXED “IVA”> <pizza nombre=“4 estaciones” > <ingrediente nombre=“Jamón” /> <precio moneda=“euros” valor=“7” /> </pizza>
  • 13. Jose Emilio Labra Gayo – Universidad de Oviedo Ejercicio ¿Cuál de los siguientes documentos XML validaría con esta DTD? <!ELEMENT d (p*)> <!ELEMENT p (#PCDATA|v)* > <!ELEMENT v (#PCDATA)> <!ATTLIST d m CDATA #IMPLIED> <d> <p m=“3"><v>x</v></p> </d> <d m=“3”> <p><v>x</v>=2+<v>y</v></p> </d> <d> <p>x</p>=2+<v>y</v> </d> <d m=“3”> <p>x=2+<v>y</v> </d> 1 2 3 4
  • 14. Integridad referencial ID e IDREF permiten definir integridad referencial básica para valores de atributos ID = Nombre único (sin duplicados) No puede empezar por dígito IDREF = Su valor debe apuntar a un ID ya existente <!ATTLIST persona código ID #REQUIRED> <!ATTLIST dueño código IDREF #REQUIRED> <persona código=“23” nombre =“Juan” /> <persona código=“35” nombre =“Pepe” /> <persona código=“37” nombre =“Luis” /> <dueño código=“35” /> Jose Emilio Labra Gayo – Universidad de Oviedo
  • 15. <!ENTITY pm “Pizza Margarita”> <!ENTITY queso “<ingrediente nombre=‘queso’ />” > Entidades numéricas: Código numérico del carácter Jose Emilio Labra Gayo – Universidad de Oviedo DTD Entidades Generales Entidades: Asignan nombres a elementos (similar a macros) Se denotan por &entidad; <pizza nombre=”&pm;" precio=”7"> &queso; </pizza> <pizza nombre=”Pizza Margarita" precio=”7"> <ingrediente nombre=‘queso’ /> </pizza> &#x2200;  &#8707;  Entidades predefinidas: Permiten caracteres especiales sin analizar &lt; < &quot; “ &apos; ‘ &gt; > &amp; &
  • 16. Jose Emilio Labra Gayo – Universidad de Oviedo Ejercicio ¿A qué documento equivale? <!DOCTYPE prueba [ <!ENTITY p1 "Hola" > <!ENTITY p2 "&p1; &p1;" > <!ENTITY p3 "&p2; &p2;" > <!ENTITY p4 "&p3; &p3;" > <!ENTITY p5 "&p4; &p4;" > <!ENTITY p6 "&p5; &p5;" > <!ENTITY p7 "&p6; &p6;" > <!ENTITY p8 "&p7; &p7;" > <!ENTITY p9 "&p8; &p8;" > <!ENTITY p10 "&p9; &p9;" > <!ENTITY p11 "&p10; &p10;" > <!ENTITY p12 "&p11; &p11;" > <!ENTITY p13 "&p12; &p12;" > <!ENTITY p14 "&p13; &p13;" > <!ENTITY p15 "&p14; &p14;" > ]> <prueba> &p15; </prueba>
  • 17. pizzas.xml establecimiento.dtd Jose Emilio Labra Gayo – Universidad de Oviedo DTD Entidades externas Permiten usar archivos externos (Incluir otros documentos XML) <pizzas> <pizza nombre=”4 Quesos" precio=”7"> <ingrediente nombre=“Jamón” /> <ingrediente nombre=“Queso” /> </pizza> . . . </pizzas> personal.xml <personal> <trabajador nombre=” Benito Alcaparra" > . . . </trabajador> . . . </personal> establecimiento.xml <establecimiento nombre=“Pizzería Al Capone”> &personal; &pizzas; </establecimiento> <!ELEMENT establecimiento ANY> <!ENTITY personal SYSTEM “personal.xml”> <!ENTITY pizzas SYSTEM “pizzas.xml”>
  • 18. Jose Emilio Labra Gayo – Universidad de Oviedo DTD Entidades externas Las entidades externas combinadas con notaciones permiten incluir archivos externos con datos binarios <!NOTATION gif SYSTEM “gifEditor.exe”> <!ENTITY dibujo SYSTEM “logotipo.gif” NDATA gif> <información> <logotipo>&dibujo;</logotipo> </información>
  • 19. Permiten dar nombres a partes de un DTD Se denotan por %entidad; <!ENTITY establecimiento (nombre,dueño?,calle,número?,ciudad,país,códigoPostal) > <!ENTITY persona (dni, nombre, calle,número?,ciudad,país,códigoPostal) > Jose Emilio Labra Gayo – Universidad de Oviedo DTD Entidades Parámetro <!ENTITY %localización “calle,número?,ciudad,país,códigoPostal” > <!ENTITY establecimiento (nombre,dueño?,%localización;)> <!ENTITY persona (dni, nombre, %localización;)> Entidades externas: Permiten incluir elementos externos en una DTD Aplicación: Dividir la definición de una DTD en varios documentos <!ENTITY %persona SYSTEM “persona.dtd”> <!ENTITY %establecimiento SYSTEM “establecimiento.dtd”> %persona; %establecimiento;
  • 20. Jose Emilio Labra Gayo – Universidad de Oviedo Características de DTD’s Especifican estructura del documento: Elementos, atributos, anidamientos, etc. Integridad referencial mínima (ID, IDREF) Mecanismo sencillo de abstracción Entidades  Macros Inclusión de documentos externos Integrados en XML (Parte de la especificación) Sencillos de comprender ( Expresiones regulares)
  • 21. Jose Emilio Labra Gayo – Universidad de Oviedo Limitaciones de DTD’s La Sintaxis no es XML (difíciles de manipular) No dan buen soporte a Espacios de nombres No permiten especificar tipos de datos (por ejemplo: enteros, flotantes, fechas, etc. No permiten especificar secuencias no ordenadas ((e1,e2,e3)|(e1,e3,e2)|(e2,e1,e3)|...(e3,e2,e1)) Soporte limitado para Referencias cruzadas, no es posible formar claves a partir de varios atributos o de elementos No son extensibles (una vez definido, no es posible añadir nuevos vocabularios a un DTD) Otras posibilidades: XML Schema, Schematron, Relax NG, etc.
  • 22. Jose Emilio Labra Gayo – Universidad de Oviedo Fin de la Presentación