Escolar Documentos
Profissional Documentos
Cultura Documentos
Define la sintaxis admitida para un determinado tipo de documentos XML. Detalla los elementos y atributos vlidos, delimitando as la estructura del documento.
<!DOCTYPE PERIODICO [ <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ATTLIST <!ATTLIST <!ATTLIST <!ATTLIST ]>
Ventajas de la DTD: Cada archivo XML lleva incluida la especificacin de su propio formato Grupos diversos de personas pueden compartir informacin acordando una DTD Los datos recibidos de otra persona o aplicacin se validan fcilmente para detectar posibles errores
PERIODICO (ARTICULO+)> ARTICULO (TITULAR,AUTOR,INTRODUCCION,CUERPO,NOTAS)> TITULAR (#PCDATA)> AUTOR (#PCDATA)> INTRODUCCION (#PCDATA)> CUERPO (#PCDATA)> NOTAS (#PCDATA)> ARTICULOPERIODISTA CDATA #REQUIRED> ARTICULO EDITOR CDATA #IMPLIED> ARTICULOFECHA CDATA #IMPLIED> ARTICULOEDICION CDATA #IMPLIED>
La DTD se puede declarar dentro del archivo XML, o enlazarse en un archivo externo (de forma parecida a lo que ocurra con CSS). Declaracin interna
<!DOCTYPE elementoRaz [declaraciones]>
Ejemplo:
<?xml version="1.0"?> <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> <note> <to>Jaime</to> <from>Ana</from> <heading>Recordatorio</heading> <body>No olvides la cita de este fin de semana</body> </note>
Declaracin externa
<!DOCTYPE elementoRaz SYSTEM "archivo">
Ejemplo:
<?xml version="1.0"?> <!DOCTYPE note SYSTEM "note.dtd"> <note> <to>Jaime</to> <from>Ana</from> <heading>Recordatorio</heading> <body>No olvides la cita de este fin de semana</body> </note>
Elementos
Pueden contener texto, otros elementos, o ser vacos.
Cuando un elemento puede contener texto u otros elementos, utilizamos PCDATA (parsed character data) para que puedan identificarse elementos dentro del actual.
<!ELEMENT nombreElemento (#PCDATA)> Ejemplo: <!ELEMENT from (#PCDATA)>
Si no queremos que se procese buscando elementos internos, usaremos CDATA. Si no sabemos exactamente qu habr, ponemos ANY, que admite cualquier combinacin de elementos declarados hasta el momento.
<!ELEMENT nombreElemento ANY> <!ELEMENT note ANY>
Cuando un elemento tiene elementos hijos, se expresa as::
<!ELEMENT nombreElemento (hijo1)> <!ELEMENT nombreElemento (hijo1,hijo2,...)> Ejemplo: <!ELEMENT note (to,from,heading,body)>
<!ELEMENT note (mensaje+)> El elemento mensaje debe ocurrir al menos una vez.
<!ELEMENT note (mensaje*)> El elemento mensaje puede aparecer cualquier
nmero de veces, o no aparecer.
Valores concretos DTD: <!ELEMENT square EMPTY><!ATTLIST square width CDATA "0">
Documento XML vlido: <square width="100" /> Documento XML vlido (se asumir anchura 0): <square /> REQUIRED <!ATTLIST nombreElementonombreAtributotipoAtributo #REQUIRED> Ejemplo, DTD: <!ATTLIST person number CDATA #REQUIRED> Documento XML vlido: <person number="5677" /> Documento XML no vlido: <person /> IMPLIED <!ATTLIST nombreElementonombreAtributotipoAtributo #IMPLIED> Ejemplo, DTD: <!ATTLIST contact fax CDATA #IMPLIED> Documento XML vlido: <contact fax="555-667788" /> Documento XML vlido: <contact />
Usamos IMPLIED cuando no queremos obligar a que aparezca el atributo y tampoco tenemos un valor por defecto que poner.
FIXED <!ATTLIST nombreElementonombreAtributotipoAtributo #FIXED value"> Ejemplo, DTD <!ATTLIST client company CDATA #FIXED "Microsoft"> Documento XML vlido: <client company="Microsoft" /> Documento XML no vlido: <client company="W3Schools" />
El usuario no puede nunca cambiar el valor de este atributo, debe aparecer exactamente as.
Enumerados <!ATTLIST nombreElementonombreAtributo (v1|v2|..)valorPorDefecto> Ejemplo DTD: <!ATTLIST pagoforma (efectivo|tarjeta) "efectivo"> XML Ejemplo: <pago forma="tarjeta" /> <pago forma="efectivo" />
Si no se pone nada, ser efectivo.
<note id="p501">
Recuerda que un atributo es informacin atmica y por tanto mnima e indivisible. Abusar de atributos genera cdigo difcil de leer y procesar
<note day="12" month="11" year="2002"to="Javier" from="Ana" cabecera="Reminder" cuerpo="No olvides la cita del fin de semana"> </note>
Entidades Son variables que representan un texto o conjunto de caracteres especiales. Se puede declarar de forma interna o externa Declaracin interna: <!ENTITY entity-name "entity-value"> DTD Ejemplo: <!ENTITY autor "Alberto Ruiz">
<!ENTITY copyright "Copyright W3Schools 2012"> XML Ejemplo: <PERIODISTA>&autor;©right;</PERIODISTA>
Declaracin externa <!ENTITY entity-name SYSTEM "URI/URL"> Ejemplo DTD: <!ENTITY autor SYSTEM "http://www.w3schools.com/entities.dtd"> <!ENTITY copyright SYSTEM "http://www.w3schools.com/entities.dtd"> XML Ejemplo: <PERIODISTA>&autor;©right;</PERIODISTA>