Professional Documents
Culture Documents
Un documento XML contiene informacin estructurada Un documento est formado por una serie de elementos que identifican los contenidos informativos que contiene el documento y hacen explcita su estructura La estructura de un documento se define en un documento especial llamado DTD (Document Type Definition), o mediante un esquema XML
Qu elementos pueden ser utilizados en un tipo de documento especfico Cuales son obligatorios y cuales opcionales Cuales son repetibles y cuales no En qu orden deben aparecer Cmo deben anidarse los elementos que conforman un documento
La DTD utiliza una sintxis especial para definir la estructura de un tipo de documento. Esta sintxis utiliza los siguientes elementos:
ELEMENT ATTLIST ENTITY NOTATION Comentarios
La DTD contiene declaraciones de los distintos elementos, entidades y notaciones que pueden aparecer en un documento Cada declaracin se escribe entre los caracteres <! Y >, indicando el tipo de componente que se declara, por ejemplo:
<!ELEMENT autor (#PCDATA)> <!ENTITY graf SYSTEM c:\graf.gif NDATA gif>
Los elementos se corresponden con los componentes estructurales de un documento, y definen su estructura lgica Un elemento puede contener datos de tipo carcter, otros elementos o ambos a la vez Los elementos pueden contenerse unos a otros, formando una jerarqua o rbol Un documento XML siempre tiene un elemento raz o elemento documento, que engloba a todos los dems
El elemento raz se debe llamar igual que su tipo de documento (por ejemplo, si creamos un tipo de documento articulo, el elemento raz deber llamarse articulo El nombre de los elementos puede contener caracteres a-z, A-Z y _. Los nombres de elementos son sensibles a la diferencia entre maysculas y minsculas
<Casa> no es igual que <casa>
El nombre del elemento El contenido que puede tener, tambin llamada declaracin de contenido La declaracin de contenido se escribe entre parntesis La declaracin de un elemento se encierra entre las marcas <!ELEMENT y >
el nombre de otros elementos que pueden incluirse entre las etiquetas de inicio y de fin del elemento declarado No es necesario haber declarado un elemento para poder utilizarlo en la declaracin de contenido de otro elemento de la misma DTD la palabra reservada #PCDATA, que indica que el elemento puede contener datos de tipo carcter
#PCDATA
Esta declaracin de contenido indica que el elemento puede contener cualquier tipo de texto que no sea mark up. Es decir, cualquier letra menos <, > o & En lugar de estos caracteres, su usarn las entidades < > & Las comillas simples y dobles pueden sustituirse por las entidades " y ' Los elementos con contenido #PCDATA pueden contener referencias a entidades
La declaracin de contenido ANY indica que un elemento puede contener cualquier combinacin de datos de tipo carcter y de elementos (no hay ninguna restriccin) Esta declaracin de contenido no se suele utilizar. Slo se usa en fases de diseo y prueba de DTDs
Si la declaracin de contenido del elemento contiene otros elementos, se puede indicar: Estas restricciones se indican escribiendo un carcter especial tras el nombre del elemento utilizado
si estos elementos son obligatorios o no y cuantas veces pueden aparecer
? el elemento puede aparecer 0 1 veces (opcional no repetible) * el elemento puede aparecer 0 ms veces (opcional y repetible) + el elemento debe aparecer 1 ms veces (obligatorio y repetible) el elemento debe aparecer 1 vez (obligatorio no repetible)
<!ELEMENT autor (nombre, apellido+)> <!ELEMENT catalog (product+)> <!ELEMENT product (specifications+, options?, price+, notes?)> <!ELEMENT specifications (#PCDATA, step)*> <!ELEMENT author (fname, surname, jobtitle?, address, bio)> <!ELEMENT content ( p | note )+> <!ELEMENT front (title, subt?, keyword*, author+, abstract?)>
Los elementos pueden tener atributos asociados, que permiten matizar su significado o rea de aplicacin. Ejemplo:
Los atributos tienen asociado un tipo de dato, un valor por defecto y un indicador que seala si son obligatorios o no
Una DTD para datos terminolgicos, puede tener un atributo que recoja la fecha de actualizacin de cada unidad terminolgica
Para indicar la obligatoriedad o carcter opcional de un atributo, se utilizan las palabras reservadas:
#IMPLIED - el atributo ser opcional #REQUIRED - el atributo es obligatorio #FIXED - el atributo es asignado por defecto por el sistema, y no es necesario que el autor lo indique
Mediante la palabra reservada ATTLIST Tras <!ATTLIST se escribe el nombre del elemento para el que se definen los atributos Tras el nombre del elemento, se escribe:
el nombre del atributo, su tipo, el indicador de obligatoriedad y su valor por defecto (si existe)
Ejemplos:
<!ATTLIST emp fecnac CDATA #IMPLIED> <!ATTLIST section link ID #REQUIRED lastupdate CDATA #IMPLIED> <!ATTLIST employee birthdate CDATA #REQUIRED personId CDATA #REQUIRED hiredate CDATA #REQUIRED company (IBM|Lotus) IBM>
Los elementos vacos no contienen datos de tipo carcter ni a otros elementos En la DTD, estos elementos se definen con una declaracin de contenido EMPTY
<!ELEMENT graphic EMPTY>
Los elementos vacos contienen atributos, y se suelen utilizar para incluir imgenes y componentes multimedia
En una DTD se pueden aadir comentarios para documentar la semntica de los elementos y atributos que se declaran Los comentarios se aaden entre las marcas especiales <!-- y --> Ejemplo: <!ELEMENT graphic EMPTY> <!--este elemento se usar para incluir grficos-->
Los comentarios pueden abarcar ms de una lnea En el texto del comentario se pueden incluir los caracteres reservados que utiliza el mark up: <, >, &, etc. No pueden incluirse dos guiones seguidos a parte de los utilizados en su inicio y final
Los comentarios no pueden intercalarse entre otras declaraciones de la DTD: de elementos, atributos, entidades, etc. La siguiente DTD es errnea:
<!ELEMENT graphic <!--elemento para grficos --> EMPTY>
Identificar los elementos estructurales del tipo de documento Indicar la frecuencia con la que pueden aparecer Indicar su carcter opcional u obligatorio Ver si su contenido se puede subdividir en otros elementos Indicar el orden en el que deben escribirse los elementos
Identificar atributos para los elementos Indicar el tipo de dato de los atributos Indicar si son obligatorios o no Ver si conviene asignarles un valor por defecto Considerar cmo vamos a incluir imgenes e hiperenlaces Como regla: todo lo que no se debe presentar en pantalla puede crearse mediante atributos
Las entidades determinan la estructura fsica de un documento XML Un documento XML siempre est formado al menos por una entidad - la entidad documento - que es el propio documento Todas las referencias a archivos no xml (imgenes, multimedia, etc.) se gestionan mediante entidades
Se utilizan en lugar de caracteres especiales (acentos, mark up, etc.) difciles de introducir en el teclado o que se codifican de forma diferente en distintas plataformas En el documento se har referencia a las entidades escribiendo su cdigo ASCII entre los caracteres &# y ;, por ejemplo:
<ciudad>Alcalz de Henares</ciudad>
XML incluye entidades predefinidas para los caracteres <, >, &, y Para definir entidades para otros caracteres, tenemos que conocer su cdigo Unicode (ISO 10646) Se puede utilizar el cdigo decimal (precedido por &#) o el hexadecimal (precedido por &#x) seguidas de ;
Predefinidas en XML
lt < gt apos quot amp > &
Permiten sustituir una cadena de texto por unos caracteres ms fciles de recordar y de teclear Se declaran con la sintxis: Se referencian en el documento escribiendo el identificador de la entidad entre los caracteres & y ; por ejemplo:
<producto>&nuevoprod;</producto> <!ENTITY nuevoprod KTD-50-789890 A5>
Referencian documentos XML externos a la entidad documento, que pueden verse como si se tratase de una nica unidad Permiten la reutilizacin, el trabajo en colaboracin y la modularidad Se declaran con la sintxis: Se referencian con la sintxis habitual:
<docbody>&licencia;</docbody> <!ENTITY licencia SYSTEM c:\licencia.xml>
En un documento modular, slo la entidad documento puede contener una declaracin de tipo de documento Para poder asociar cada entidad de texto externa con un tipo de documento, se suele crear un documento XML con declaracin que slo contiene la declaracin de la entidad
<?xml version=1.0?> <!DOCTYPE capitulo SYSTEM capitulo.dtd [ <!ENTITY capitulo1 SYSTEM capitulo1.xml> ]> &capitulo1;
Referencian cualquier archivo que no sea XML Se declaran utilizando el calificador SYSTEM o PUBLIC, y van acompaadas de una notacin La notacin se escribe al comienzo de la DTD
<!NOTATION gif SYSTEM /programas/viewer.exe>
Se utilizan exclusivamente en la DTD (se declaran en la DTD al igual que las entidades normales, pero se les hace referencia slo en la DTD) Se declaran utilizando un carcter especial: Para referenciarlas se escribe su nombre entre los caracteres % y ;, por ejemplo:
Ejemplo:
De esta forma, la declaracin de contenido del elemento body equivale a (subp, pp, foot) El modelo de contenido al que sustituye la entidad se podr reutilizar en otras partes de la DTD
La DTD puede incluirse totalmente junto al documento XML (cuidado, en XML documento es la DTD y los datos!) La DTD puede estar definida en un archivo externo al documento al que se har referencia desde este (en este caso, la DTD se podr reutilizar y mantener con facilidad La DTD puede estar definida en un documento externo, y tambin puede haber declaraciones en la entidad documento
DTD externa
<?xml head version=1.0?> <!ELEMENT head (body)> <!ELEMENT body (#PCDATA)>
Documento ejemplo
<?xml head version=1.0?> <!DOCTYPE head SYSTEM head.dtd> <head> <body>ejemplo</b ody> </head>
<?xml version=1.0?> <!DOCTYPE head [ <!ELEMENT head (body)> <!ELEMENT body (#PCDATA)> ]> <head> <body>ejemplo</body> </head>
DTD
<?xml version=1,0?> <!ELEMENT head (body)> <!ELEMENT body (#PCDATA)>
Documento XML
<?xml version=1.0?> <!DOCTYPE head SYSTEM head.dtd [ <!ENTITY car coche> ]> <head> <body>Ejemplo &car;</body> </head>
Las DTDs externas son ms fciles de mantener, ya que los cambios se aplican automticamente a todas sus instancias En el subconjunto interno de la DTD se suelen declarar imgenes que slo se usan en ese documento Las declaraciones del subconjunto interno sobreescriben a las del subconjunto externo
Un documento ser vlido si cumple las restricciones que se indican en su DTD Un documento ser bien formato si los elementos estn anidados correctamente, y si las entidades que referencia se han declarado Un documento puede estar bien formado y ser no vlido, ya que un documento XML puede no contener una declaracin de tipo de documento