Académique Documents
Professionnel 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
XML: DTD
Recursos externos XML Recursos externos no XML: grficos, multimedia, etc. Texto que acta como comodn o abreviatura para palabras de uso frecuente o trminos que cambian con facilidad
DTDs: estructura
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
DTDs: la estructura
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>
DTDs: elementos
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
DTDs: elementos
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>
DTDs: elementos
DTDs: elementos
DTDs: elementos
#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
Elementos y contenido
Elementos ANY
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
DTDs: elementos
Estas restricciones se indican escribiendo un carcter especial tras el nombre del elemento utilizado
? 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)
DTDs: elementos
<!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?)>
DTDs: atributos
Los elementos pueden tener atributos asociados, que permiten matizar su significado o rea de aplicacin. Ejemplo:
Una DTD para datos terminolgicos, puede tener un atributo que recoja la fecha de actualizacin de cada unidad terminolgica
Los atributos tienen asociado un tipo de dato, un valor por defecto y un indicador que seala si son obligatorios o no
DTDs: atributos
DTDs: atributos
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
DTDs: atributos
el nombre del atributo, su tipo, el indicador de obligatoriedad y su valor por defecto (si existe)
DTDs: atributos
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>
Elementos vacos
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
Elementos vacos
Elementos vacos
Comentarios
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-->
Comentarios
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
Comentarios
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>
Diseo de DTDs
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
Diseo de DTDs
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
Entidades
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
Entidades
Entidades
Tipos de entidades
Entidades de carcter
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>
Entidades de carcter
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 ;
Entidades de carcter
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:
<!ENTITY nuevoprod KTD-50-789890 A5>
Se referencian en el documento escribiendo el identificador de la entidad entre los caracteres & y ; por ejemplo:
<producto>&nuevoprod;</producto>
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:
<!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 [
Referencian cualquier archivo que no sea XML Se declaran utilizando el calificador SYSTEM o PUBLIC, y van acompaadas de una notacin
<!ENTITY logonscreen SYSTEM c:\fm1.gif NDATA gif>
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:
<!ENTITY % autorelem nombre,apellido+>
Ejemplo:
<!ENTITY % p subp, pp, foot> <!ELEMENT body (%p;)>
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
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</body > </head>
DTD interna
<?xml version=1.0?> <!DOCTYPE head [ <!ELEMENT head (body)> <!ELEMENT body (#PCDATA)> ]> <head> <body>ejemplo</body> </head>
DTD combinada
DTD
Documento XML
<?xml version=1.0?> <?xml version=1,0?> <!ELEMENT head <!DOCTYPE head SYSTEM head.dtd [ (body)> <!ELEMENT body <!ENTITY car coche> ]> (#PCDATA)> <head> <body>Ejemplo &car;</body> </head>
Diseo DTDs
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