Está en la página 1de 9

DTD (Document Type Definition)

1. DTD DTD es un estndar que nos permite definir una gramtica que deben cumplir nuestros documentos XML para considerarlos vlidos. Una definicin DTD para n documentos XML especifica: Qu elementos pueden existir en un documento XML, Qu atributos pueden tener stos, Qu elementos pueden o deben aparecer contenidos en otros elementos y en qu orden. < !ml version"#$.%# & <Receta> <Nombre>Tortilla de patatas</Nombre> <Descripcin> La tradicional ' t(pica tortilla de patatas, tal como la )acen todas las madres. </Descripcin> <Ingredientes> <*n+rediente& <,antidad unidad"#pie-a#&.</,antidad& <*tem&0atata</*tem& </*n+rediente& <*n+rediente& <,antidad unidad"#pie-a#&1</,antidad& <*tem&2uevos</*tem& </*n+rediente& <*n+rediente& <,antidad unidad"#litro#&%.$</,antidad& <*tem&3ceite</*tem& </*n+rediente& </Ingredientes> <Instrucciones> <0aso& 0elar ' cortar la patata en roda4as </0aso& <0aso& 0oner aceite en una paella </0aso& <566 7 as( se+uimos... 66& </Instrucciones> </Receta> 8eamos un posible DTD para la receta del e4emplo que nos definir la forma que deben tener las recetas escritas en 9ecetaXML: <!-- DTD de ejemplo para RecetaXML --> <!ELEMENT Receta (Nombre, Descripcion?, n!redientes?, nstr"cciones?#> <!ELEMENT Nombre ($%&D'T'#> <!ELEMENT Descripcion ($%&D'T'#> <!ELEMENT n!redientes ( n!rediente(#>

<!ELEMENT n!rediente (&antidad, tem#> <!ELEMENT &antidad ($%&D'T'#> <!'TTL )T &antidad "nidad &D'T' $RE*+ RED> <!ELEMENT tem ($%&D'T'#> <!'TTL )T tem opcional &D'T' ,-. /e!etariano &D'T' ,si.> <!ELEMENT nstr"cciones (%aso0#> <!ELEMENT %aso ($%&D'T'#> De este documento DTD podemos inferir una descripcin de las re+las de valide- que sea un poco ms le+ible: Una receta consta de un nombre :obli+atorio;, una descripcin :opcional;, unos in+redientes :opcionales; ' unas instrucciones :opcionales;. <l nombre ' la descripcin pueden contener caracteres alfanum=ricos :0,D3T3 corresponde a Parsed Character Data;. Los in+redientes son una lista de elementos ingrediente. Un in+rediente consta de un (tem ' la cantidad. La cantidad es un valor alfanum=rico, teniendo la etiqueta un atributo, unidad que nos describe qu= unidad de medida estamos utili-ando. Un (tem de la receta consta del nombre :un valor alfanum=rico; ' puede tener dos atributos: opcional :si el in+rediente es o no obli+atorio; ' ve+etariano :si el in+rediente es apto para ve+etarianos;. Las instrucciones de elaboracin son una lista de pasos. Un paso consta de un te!to alfanum=rico descriptivo del paso.

2 !"structura de un D#D
<l dtd puede aparecer inte+rado en el propio documento XML, en un arc)ivo independiente:con e!tensin dtd; e incluso puede tener una parte interna ' otra e!terna.La opcin del documento e!terno permitir reutili-ar el mismo DTD para distintos documentos XML, facilitando las posibles modificaciones . >iempre que se quiera declarar un DTD se )ar al comien-o del documento XML. Las re+las que lo constitu'en son las que podrn aparecer a continuacin de la declaracin : dentro del propio documento XML; o en un arc)ivo independiente. Declaracin del DTD: <$D%&#'("> <s la instruccin donde se indica qu= DTD validar el XML. 3parece al comien-o del documento XML. "l primer dato que aparece es el nombre del elemento raz del documento XML. <n funcin del tipo de DTD la sinta!is var(a. Las caracter(sticas que definen el tipo son: Ubicacin :donde se locali-an las re+las del DTD *nterno: las re+las aparecen en el propio documento XML <!terno: las re+las aparecen en un arc)ivo independiente. Mi!to: me-cla de los anteriores. Las re+las aparecen en ambos lu+ares .Las re+las internas tienen prioridad sobre las e!ternas. ,arcter. >i es un DTD para uso privado o p?blico 0ara uso privado: se identifica con la palabra >7>T<M

0ara uso p?blico: >e identifica con la palabra 0U@L*,. Debe ir acompaAado del B0*:Bormal public *dentifier:*dentificador 0?blico Bormal;,una etiqueta que identifica al DTD de manera CuniversalD.

Las distintas combinaciones son:

>inta!is
<5DE,T70< <5DE,T70< <5DE,T70< <5DE,T70< <5DE,T70< elementoFrai- :re+las;& elementoFrai- >7>T<M U9L& elementoFrai- >7>T<M U9L :re+las;& elementoFrai- 0U@L*, B0* U9L & elementoFrai- 0U@L*, B0* U9L :re+las;&

Tipo de DTD *nterno :lue+o privado; <!terno ' privado Mi!to ' privado <!terno ' public Mi!to ' p?blico

La combinacin interno ' public no tiene sentido, 'a que el )ec)o de ser public fuer-a que el DTD est= en un documento independiente. )tributos Gombre del elemento ra(- del documento XML: aparece 4usto a continuacin de la palabra DE,T70<. Declaracin de privacidad/publicidad: aparece a continuacin del nombre del elemento ra(- e indica si el DTD es de uso p?blico:0U@L*,; o de uso interno de la or+ani-acin que lo desarrolla:>7>T<M; *dentificador: slo e!iste cuando el dtd es public e indica el fpi por el que se conoce el DTD Url :solo e!iste cuando el DTD : en parte o en su totalidad; se encuentra declarado en un arc)ivo e!terno ,del que da su ubicacin .:0uede darse el caso que un DTD est= definido en parte en un arc)ivo e!terno ' en parte en el documento XML; "structura del *(I <st compuesto de H campos separados por el carcter //. Primer campo: norma formal o no formal >i el DTD no )a sido aprobado por una norma formal, como por e4emplo, un DTD escrito por uno mismo, se escribe un si+no menos :6; >i )a sido aprobado por un or+anismo no oficial, se escribe un si+no ms :I; >i )a sido aprobado por un or+anismo oficial, se escribe directamente una referencia al estndar. Segundo campo: nombre del or+anismo responsable del estndar Tercer campo: tipo de documento que se describe, suele incluir un n?mero de versin. Cuarto campo: idioma del DTD "+emplo >e va a declarar un DTD respecto a un documento XML cu'o elemento ra(- se llama )tml ' es de carcter publico <5DE,T70< )tml 0U@L*, ,!/ /-.&/ / DTD X2TML $.% Transitional / /"ND )ttp://JJJ.J..or+/T9/!)tml$/DTD/!)tml$6transitinal.dtd&

/ )l aparceer un signo menos 0!1 signi2ica que el D#D no 3a sido aprobado por una norma 2ormal / "l nombre del organismo responsable del D#D es el -.& / "l tipo de documento es el 45#67 #ransicional8en su 9ersin : ; /"l idioma del D#D es en ingls 0"N1 "+emplo< >e declara el tipo de un documento XML cu'o elemento ra(- se llama <planetas&.se trata de un DTD de uso privado :>7>T<M; ' la ubicacin de las re+las del DTD es e!terna ,en un arc)ivo llamado planetas .dtd que se encuentra en el mismo directotrio que el arc)ivo XML. <5DE,T70< planetas >7>T<M Cplanetas.dtdD& "+emplo< Un DTD mi!to ' privado tendr sus re+las repartidas entre la cabecera del documento XML ' un arc)ivo e!terno. "l documento 467, c3arlas xml ser: < !ml versin "D$.%D encodin+"Diso6KKLM6$D standalone"DnoD & <5DE,T70< c)arlas >7>T<M Cc)arlas.dtdDN &5<L<M<GT c)arlas :c)arla;I& <5<L<M<GT c)arla :nombre, lu+ar, despedida;& <5<GT*T7 despedida*n+lesa CT)anO 'ou,+ood b'e5D& <5<GT*T7 despedidaBrancesa CMerci,au revoir5D P& <c)arlas& QQQQ.. QQQQ. </c)arlas& "l arc3i9o de reglas externo , c3arlas dtd ser: <5<L<M<GT nombre :R0,D3T3;& <5<L<M<GT lu+ar :R0,D3T3;& <5<L<M<GT despedida :R0,D3T3;& <l arc)ivo e!terno no inclu'e la declaracin del tipo de documento :DE,T70<;,'a que solo aparece en la cabecera del documento XML.

<l atributo standalone de la instruccin de procesamiento < !mlQ & tiene el valor no ,lo que si+nifica que para el correcto procesado del documento necesitamos del uso de otros documentos e!ternos : en este caso c)arlas.dtd;

2.-Componentes del dtd


2a' cuatro posibles componentes que se pueden declarar en un DTD: "lemento )tributo "ntidad Notacin

2.1.- Declaracin de tipos de elementos


<n el DTD )a' que incluir la declaracin de cada elemento que forma parte del documento. <4.: <5<L<M<GT 9eceta :Gombre, Descripcion , *n+redientes , *nstrucciones ;& Define la etiqueta 9eceta, especificando qu= contienen las subetiquetas: Gombre, Descripcin, *n+redientes e *nstrucciones, ' a+re+ando que estas tres ?ltimas son opcionales :como indica el s(mbolo ;. 7a de2inicin de "7"6"N# es la siguiente< <5<L<M<GT nombre cate+or(a& <5<L<M<GT nombre :contenido;&

2.2.-Convenciones sintcticas de DTD Como hemos visto, la sintaxis de DTD no resulta evidente a primera vista. Pese a ello, tampoco es excesivamente compleja. El primer paso para entenderla es disponer de las definiciones y usos de los diferentes smbolos usados, que podemos ver en la tabla si uiente! Sm olo "# , ( Descripcin $os par%ntesis a rupan subetiquetas <5<L<M<GT *n+rediente :,antidad,*tem;& &rdenaci'n exacta de los elementos :Gombre, Descripcion , *n+redientes , *nstrucciones ; )no s'lo de los elementos indicados :,ocer S Breir; *i no indicamos nada los elementos aparecen una sola ve+ :,antidad, *tem; , . )na o m-s veces 0asoI Elemento opcional

*nstrucciones / 0PCD1T1 Cero o m-s veces *n+redienteT Parsed Character Data <5<L<M<GT *tem :R0,D3T3;&

2 . "lementos 9ac=os >e declaran especificando la palabra <M0T7. <5<L<M<GT nombre <M0T7& <ste elemento nombre, en XML se usar(a as(: <nombre /& <4emplo: La descripcin del elemento <br/& de )tml ser:
<5<L<M<GT br <M0T7&

2 > "lementos que solo contienen caracteres 0datos1 Los elementos que slo contendrn datos alfanum=ricos se declaran usando R0,D3T3 entre par=ntesis. <5<L<M<GT nombre :R0,D3T3;& <n la declaracin se especifica con R0,D3T3. <5<L<M<GT first :R0,D3T3;& <5<L<M<GT last :R0,D3T3;& 3tendiendo a esta definicin el cdi+o '<first>John</first><last>Doe</last>' ser(a vlido 'a que )emos utili-ado los elementos UfirstU ' UlastU que )emos definido que solo contienen datos :te!to;. "+emplo< Una re+la de un DTD puede ser: <5<L<M<GT titulo :R0,D3T3;& que se corresponde con un elemento llamado <titulo& con contenido conte!tual <titulo&len+ua4es de marcas </titulo&
2 ? "lementos con subelementos 0secuencias1 >e distin+uen dos tipos de relacin entre los elementos )i4os. Secuencias o alternativos. @ecuencias< Los elementos con uno o ms )i4os se definen con el nombre de los elementos )i4os entre par=ntesis: <5<L<M<GT nombre :)i4o$;& <5<L<M<GT nombre :)i4o$, )i4o1, ......;& <4.: <5<L<M<GT mensa4e :remitente, destinatario, asunto, cuerpo;& <5<L<M<GT coc)e :marca, matricula, color;& Los )i4os que se declaran como una secuencia de elementos separados por comas deben aparecer en el mismo orden en el documento. Los elementos )i4o tambi=n deben declararse en el documento DTD. <stos elementos )i4o pueden, a su ve-, tener elementos )i4o. La declaracin completa de coc)e ser(a entonces:

<5<L<M<GT coc)e :marca, matricula, color;& <5<L<M<GT marca :R0,D3T3;& <5<L<M<GT matricula :R0,D3T3;;& <5<L<M<GT color :R0,D3T3;& "+emplo< en un correo electrnico se podr(a describir el elemento ra(- &email& como una secuencia de los elemtos <para&,<cc&:optativo;, <cco&:optativo;,<asunto& ' <cuerpo&. Las re+las que representan esto sern: <5<L<M<GT email :para ,cc ,cco ,asunto,cuerpo;& <5<L<M<GT para :R0,D3T3;& <5<L<M<GT cc:R0,D3T3; Q. )lternati9os< ,uando el elemento contiene uno ' solo uno de los elementos )i4os especificados. <4.: <5<L<M<GT persona :f(sica S 4ur(dica;& &ardinalidad de las ocurrencias de elementos 0ara especificar cuntas veces aparece cada elemento )i4o utili-amos un carcter que indique el factor de repeticin: V <l carcter WTX: el elemento o +rupo de elementos puede repetirse % o ms veces. V <l carcter W X: el elemento o +rupo de elementos puede aparecer % o $ veces. V <l carcter WIX: el elemento o +rupo de elementos puede repetirse $ o ms veces.:Go se puede usar el cuantificador I con un contenido mi!to; V 0or defecto, si no ponemos nada, el elemento debe aparecer una ve-. La si+uiente declaracin nos indica que el elemento )i4o slo puede ocurrir una ve- dentro del elemento padre: <5<L<M<GT nombre :)i4o;& >i deseamos que el elemento )i4o apare-ca ms de una ve- ' como m(nimo una ve-: <5<L<M<GT nombre :)i4oI;& >i deseamos que pueda aparecer cualquier n?mero de veces :inclu'endo la posibilidad de que no apare-ca nin+una;: <5<L<M<GT nombre :)i4oT;& >i slo deseamos que pueda aparecer una ve-, pero que no sea obli+atorio: <5<L<M<GT nombre :)i4o ;& "+emplo< <5<L<M<GT elem :a, :bSc;T, dI, e & De acuerdo a esta declaracin las si+uientes e!presiones ser(an vlidas: <elem&<a&</a&<d&</d&<elem& <elem&<a&</a&<d&</d&<d&</d&<e&</e&<elem& <elem&<a&</a&<b&</b&<d&</d&<elem& <elem&<a&</a&<c&</c&<b&</b&<c&</c&<d&</d&<elem& "+emplo: un contrato tiene una lista de clusulas .,ada una de las clausulas esta compuesta de varios ep(+rafes ' sus desarrollos asociados ' conclu'en por un ?nico epilo+o

<5element clausulas :clausula;I& <5element clausula ::ep(+rafe,desarrollo;I,epilo+o& 2 A ! "lementos con contenido mixto <ste caso no suele utili-arse en XML. <l formato de esta declaracin es mu' r(+ido: >iempre en primer lu+ar 0,D3T3, una lista alternativa, no se puede aplicar caracteres de repeticin a los elementos )i4os ' debe especificarse obli+atoriamente el carcter de repeticin WTX a todo el +rupo. <5<L<M<GT nombre :R0,D3T3 S a S b Sc;T& "+emplo< >< quiere describir un elemento prrafo que simule el prrafo de un editor de te!tos, de forma que pueda contener te!to sin formato ,te!to en <ne+rita& :rodeado de esta etiqueta; o te!to en cursiva ::rodeado de esta etiqueta .estas dos ?ltimas etiquetas podrn a su vecontener ,bien te!to sin formato ,bien otra etiqueta. 0or tanto ,<prrafo&,<ne+rita& ' <cursiva& son elementos de contenido mi!to. Las re+las que describen esto sern: <5element prrafo :ne+ritaScursivaSR0,D3T3;T& <5element ne+rita :cursiva S R0,D3T3;T& <5element cursiva :ne+rita S R0,D3T3;T& Un documento XML valido con respecto a las re+las del anterior DTD: <prrafo& 3qu( un <cursiva& tema <ne+rita&importante </ne+rita&</cursiva&

"+ercicios $.6 >e quiere que el elemento <+rupo san+u(neo& ten+a como ?nico elemento descendiente a uno solo de los cuatro si+uientes 3,@,3@, % .*ndica cul de las si+uientes es una declaracin correcta del citado elemento: a.6 <5element +rupo>an+uineo :3 @ 3@ %; .b.6 6 <5element +rupo>an+uineo :3 , @ , 3@ , %; c.6 6 <5element +rupo>an+uineo :3 S @ S3@ S %; d.6 6 <5element +rupo>an+uineo :3 I @ I3@ I %; 1.6 ,ual de las si+uientes afirmaciones es correcta respecto a la declaracin del elemento a.6 <5element contenido :alfa SbetaT; & Tanto el elemento alfa como el beta pueden aparecer % o mas veces como descendientes del elemento contenido. *also

b.6 .6 <5element contenido :alfa ,beta ; & Tanto el elemento alfa como el beta pueden aparecer una ve- como descendientes del elemento contenido,sea cual sea el orden.2also c.6 .6 <5element contenido :alfa S beta ; & <l elemento alfa ' el beta deben aparecer una ve- cada uno como descendientes del elemento contenido .2also d.6 <5element contenido :alfa , betaT ; & <l elemento alfa debe aparecer una ve- ' a continuacin el elemento beta debe aparecer % veces o ms veces, ambos como descendientes del elemento contenido . T9U< Gota : Los elementos )tml no necesitan estar bien formados para poderse visuali-ar en los nave+adores .0or eso en los dtd que validan estos documentos se usa una determinada nomenclatura para indicar que un elemento pueda ser opcionalmente abierto o cerrado .as(, .si aparecen dos +uiones despu=s del nombre del elemento tanto la etiqueta inicial como la final son obli+atorias. un +uion se+uido por la letra CED indica que puede omitirse la etiqueta final .un par de letras CED indican que tanto la etiqueta inicial como la final pueden omitirse <4ercicio >i el DTD de un documento est declarado dentro del XML como:

Y,ul ser(a el cdi+o XML correspondiente a ese DTD

También podría gustarte