DTD - Sintaxis
Un DTD XML puede estar especificado dentro del documento, o se puede guardar en un documento independiente. Para este ltimo caso el documento se puede relacionar con el documento DTD para usarlo.
Sintaxis
A continuacin le mostramos la sintaxis bsica de un DTD:
<!DOCTYPE element DTD identifier [ declaration1 declaration2 ........ ]>
En la sintaxis que ha visto
DTD empieza con el delimitador <!DOCTYPE.
Un elemento ordena al analizador diseccionar el documento desde el elemento raz especificado.
Identificador DTD es un identificador para la definicin del tipo de documento, el cual puede convertirse en el camino hacia un archivo en el sistema o una direccin URL hacia un archivo en Internet. Si el DTD indica un camino externo, se llama subconjunto externo (en ingls external subset).
Los corchetes de apertura [ ] encierran una lista opcional de declaraciones de entidad llamada subconjunto interno.
DTD Interno
Un DTD se denomina DTD interno cuando los elementos se han declarado dentro del archivo XML. Para referenciarlo como DTD interno, el atributo standalone en la declaracin XML se debe marcar con un Si. Esto significa que la declaracin funciona al margen de la fuente externa.
Sintaxis
Le mostramos cmo seria la sintaxis de un DTD interno:
<!DOCTYPE root-element [element-declarations]>
donde root-element es el nombre del elemento raz y element-declarations es donde se declaran los elementos.
Ejemplo
A continuacin le mostramos un simple ejemplo de DTD interno:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE address [ <!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone (#PCDATA)> ]> <address> <name>Tanmay Patil</name> <company>TutorialsPoint</company> <phone>(011) 123-4567</phone> </address>
Veamos el cdigo anterior ms detenidamente:
Inicio de la declaracin- Empiece la declaracin XML con lo siguiente
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
DTD- Justo despus del encabezado XML encontramos document type declaration, en general referido como DOCTYPE:
<!DOCTYPE address [
La declaracin de DOCTYPE tiene un signo de exclamacin (!) al inicio del nombre del elemento. El DOCTYPE informa al analizador que un DTD est asociado con este documento XML.
Cuerpo del DTD- Despus de la declaracin DOCTYPE viene el cuerpo del DTD, donde usted declara elementos, atributos, entidades, y anotaciones:
<!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone_no (#PCDATA)>
Aqu se declaran muchos elementos que forman el vocabulario del documento <name>. <!ELEMENT name (#PCDATA)> define el name del elemento para que se escriba "#PCDATA". En el ejemplo #PCDATA significa datos de texto interpretables por la mquina.
Fin de la declaracin - Finalmente, la seccin de la declaracin de DTD se cierra usando un corchete de cierre y un clorchete angular de cierre (]>). Con esto se termina la definicin de forma eficiente, y a partir de ah, le sigue el documento XML.
Normas
La declaracin del tipo de documento debe aparecer al inicio del documento (solamente precedido por un encabezado XML) - No est permitido en ningn otro lugar del documento.
De forma similar a la declaracin de DOCTYPE, las declaraciones de elemento deben empezar con un signo de exclamacin.
El nombre en la declaracin del tipo de documento debe coincidir con el tipo de elemento del elemento raz.
DTD externo
En los DTD externos, los elementos se declaran fuera del archivo XML. Se puede acceder a ellos especificando los atributos del sistema que pueden ser o un archivo legal .dtd o una direccin URL vlida. Para referenciarlo como DTD externo, el atributo standalone en la declaracin XML se debe marcar con un no. Esto significa, que la declaracin incluye informacin de una fuente externa.
Sintaxis
Aqu tiene la sintaxis para DTD externos:
<!DOCTYPE root-element SYSTEM "file-name">
donde file-name es el archivo con la extensin .dtd.
Ejemplo
El siguiente ejemplo muestra el uso de DTDs externas:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <!DOCTYPE address SYSTEM "address.dtd"> <address> <name>Tanmay Patil</name> <company>TutorialsPoint</company> <phone>(011) 123-4567</phone> </address>
El contenido del archivo de DTD address.dtd es tal y como se muestra a continuacin:
<!ELEMENT address (name,company,phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT company (#PCDATA)> <!ELEMENT phone (#PCDATA)>
Tipos
Usted puede referirse a un DTD extern usando o identificadores de sistema o identificadores pblicos.
Identificadores de sistemaUn identificador de sistema le permite especificar la localizacin de un archivo externo que contiene declaraciones DTD. La sintaxis es la siguiente:
<!DOCTYPE name SYSTEM "address.dtd" [...]>
Como puede observar contiene la palabra clave 'SYSTEM' y una referencia URI sealando la localizacin del documento.
Identificadores pblicosLos identificadores pblicos aportan un mecanismo de localizacin de recursos DTD, y han sido escritos como se muestra a continuacin:
<!DOCTYPE name PUBLIC "-//Beginning XML//DTD Address Example//EN">
Como ve, empieza con la palabra clave PUBLIC, seguida por un identificador especializado. Los identificadores pblicos se usan para identificar una entrada en un catlogo. Los identificadores pblicos pueden seguir cualquier tipo de formato, sin embargo, un formato commente utilizado se llama Identificador pblico formal o FPI.