Anda di halaman 1dari 15
Definicién de esquemas y vocabularios en XML XML ha sido propuesto como estdndar en el intercambio de informacién, independientemente de la plataforma en que se genere o se utilice. Esta premisa, en principio, es vélida siempre y cuando los documentos XML no cambien durante los intercambios. Si en los intercambios de permite la modificacién, adicién © supresién de elementos de informacién, se ha de tener especial cuidado de no modificar la estructura del documento. No siempre es posible y puede llegar el caso en que el mismo documento pueda leerse en una aplicacién y en otra no. No solo es imprescindible que el documento esté bien formado (con las etiquetas de apertura y cierre bien ubicadas, que la codificacién sea correcta, que los elementos cumplan la sintaxis de XML, etc), sino que ambos actores (emisor y receptor) se cifian a un mismo formato de fichero definido previamente. Para evitar estos casos, se ha de definir una estructura fija del documento que conozcan las partes que intercambian la informacién. A continuacién, se mostrarén dos maneras de especificar formatos de comunicacién en XML, las DTD y los XML Schema DID DTD © Document Type Definition es la definicién de cémo se construye un documento XML para que se ajuste a las necesidades previamente analizadas. Es decir, establece qué elementos son aceptados y en qué posiciones deben estar dentro de un documento XML Cuando se define una DTD y se referencia dentro de un documento XML, se establece una relacién de: - Qué léxico es el que se espera - Qué reglas sintécticas debe cumplir nuestro lenguaje El significado seméntico se proporciona en el uso del DTD y del docuemnto XML al generar las aplicaciones que lo utilizan Por tanto, antes de crear un documento XML se deberd analizar qué elementos y etiquetas se van a necesitar para la aplicacién que se quiere crear. Para esto sirve una DTD éPor qué resulta importante la creacién de DTD? Principalmente, cuando se analiza un almacenamiento de informacién en XML es porque esa informacién es importante compartirla. Pero aunque la comparticién de la informacién pueda resultar interesante, la informacién debe estar sujeta a una serie de reglas para que todos los que lo utilicen(en consultas, inserciones, modificaciones, borrados, etc) y debe resultar bien formado y vdlido para el uso por terceras aplicaciones. Si en el proceso de acceso y modificacién del documento XML se incumple su_ estructura, nos encontraremos con un documento no valido y con un futuro problema. Por tanto, una DTD permitird asegurar que la informacién que contiene es vdlida y cumple los requisitos de intercambio de informacién entre personas con la misma DTD. La creacién de una DTD resulta muy simple 1. La DTD se puede ubicar dentro del propio documento XML 2. La DTD se ubica en un fichero externo fuera del documento XML (Con extensién XML) Ambas realizan la misma funcién pero resulta més cémoda utilizar un fichero externo para almacenar la DTD y realizar un enlace en el docuemnto XML para que la use. Ademdés de la comodidad, existe otra ventaja fundamental: no se almacena en cada documento XML la DTD. Si tuviésemos muchos ficheros XML, basados en la misma especificacién DTD, se tendria que cambiar en todos los ficheros la declaracién de la DTD, cosa que si estuviera enlazado en un fichero externo, se cambiarfa una Unica vez y todos los documentos XML lo aprovecharian. Ademds se estaria almacenando la misma informacién en todos los documentos, lo que aumentaria el tamafio del documento XML. Para continuar, establezcamos un ejemplo en el que utilizar una DTD. Se quiere almacenar los mensajes de méviles que se envian a un servidor. Los datos se guardarén son los siguientes - Numero de teléfono del usuario Fecha de envio - Hora de envio - Contenido del mensaje 955 65 55 55 1/7/2011 2. :55 Juego1: Tetris 542 000 000 10/11/2011 09:22 Juego2: Comecocos LA DTD que permite establecer el formato de intercambio de estos mensajes SMS, en el documento XML, podria ser el siguiente (fichero "BDsms.dtd") Notad que el fichero BDsms estd referenciado en el documento XML. Si se quisiera incluir todo en el mismo docuemnto XML, entonces quedarfa: I> 955 65 55 55 1/7/2011 23:55 Juego1: Tetris 542 000 000 10/11/2011 09:22 Juego2: Comecocos Bloques para construir una DTD Viendo el ejemplo de la base de datos de SMS, se puede observar una serie de elementos definidos en una DTD: - Elemento. Es el bloque principal con el que se construyen los elementos DTD - Atributo: Forma de afiadir més informacién a un elemento - Entidad. En XMLexisten algunos caracteres que tienen un significado especial. La aparicién de estos caracteres como datos almacenables hace que se puedan confundir con entidades propias de un documento XML. Son entidades kas siguientes: © nbsp; => Espacio en blanco >: => > =< " =>" ' => © Gamp; => & - Se pueden usar dentro del propio documento XML y tras parsear el documento tomardn el valor indicado a la derecha. También el usuario puede definir entidades propias para que, después de analizar el docuemtno XML, se sustituyan por el valor indicado. Es como una especie de definicién preestablecida. Un par de ejemplos son los siguientes: © => π © =>&textFile © _ => miURL - PCDATA. Su significado en inglés es Parsed Character Data. indica que entre la etiqueta y cierre de apertura de ese elemento, se almacenarén caracteres como texto y serén analizados por un parser. Como es légico, al analizarse mediante el parser el contenido del texto para encontrar entidades y elementos , si es solo texto no podrd encontrarse ninguno de los caracteres anteriormente mencionados (pues podria confundir al parser a la hora de analziar el documento XML) - CDATA.. Su significado en inglés Character Data. A efectos es practicamente igual que PCData pero el contenido de ese elemento, entre sus etiquetas de apertura y cierre, no se analizard por el parser de andlisis de entidades y elementos XML. Los elementos se declaran de una de las dos siguientes maneras: ° En el segundo caso se pueden definir el nombre_del_elemento como el nodo padre del que cuelgan un conjunto de nodos hijos (separados por comas) Si existiera algtin elemento que deba estar vacfo, existe la palabra reservada EMPTY que puesta en la zona de “categoria” permite indicar este hecho. Un ejemplo de uso es la etiqueta
de HTML. Esta etiqueta permite establecer un salto de linea pero deberfa estar undicado como

. Si se declara como EMPTY, entonces se podria simplificar el salto de linea de la siguiente manera :
=> En el caso concreto de ANY, permite indicar que cualquier combinacién de elementos conocidos serian vélidos en ese caso. => Podria valer teléfono, fecha, mensaje,... No se ha comentado nada, hasta el momento, sobre los atributos. La manera de declararlos en un DTD es mediante la siguiente sintaxis: - Nombre_elemento: es el elemento al que se le quiere afadir el atributo. - Nombre atributo: es el nombre del atributo que se quiere afiadir. = Tipo_atributo: existen muchos tipos de atributos destacan: © CDATA: es un texto. Podran tener cualquier cardcter © ID: Es un identificador que permite identificar el elemento de manera Unica en todo documento XML o IDREF: Es un identificador de otro elemento del propio documento XML © IDREFS: Es una lista de identificadores a otros elementos (tipol | tipo2 | tipo |...) el valor es uno de los indicados en esta lista enumerada (definida por el usuario) © NMTOKEN: Es un texto que solo podrd tener letras, digitos, guidn, "-", punto, “.", y dos puntos nombres vélidos XML © NMTOKENS: Es una lista de nombres XML vdlidos. Es como un. NMTOKEN pero se incluyen los espacios en blanco, " *, tabuladores 0 retornos del carro. © ENTITY: El tipo de atributo es una entidad que se ha declarado anteriormente o ENTITIES: Es una lista de entidades :". Es lo que se llama Los atributos podrén ser declarados como obligatorios #REQUIRED, optativos, #IMPLIED o fijos #FIXED. Este Ultimo obliga al usuario que el atributo sea siempre el mismo, sin que pueda cambiarlo (si se cambia no estaria conforme a la DTD declarada y devolveria un error) Como no se ha declarado ningun atributo en el ejemplo de los SMS, cambiaremos el elemento hora para afiadir la zona o franja horaria (de manera obligatoria). Se quiere tener un documento XML de este tipo: 09:22 Por lo que el DTD debe afiadir la siguiente linea Secuencias de elemento: Estructura con hijos Podemos ver que el elemento sms esté compuesto por teléfono, fecha, hora y mensaje. Esta es una relacién padre-hijos. Imaginemos que una vez definida una DTD, nos damos cuenta que, por cada SMS recibido se pueden almacenar varios mensajes . En este caso deberfa cambiar la ocurrencia de la aparicién de los elementos justo cuando los indicamos en el elemento padre. Las ocurrencias que pueden aparecer se indican con los siguientes operadores: - ‘:Indica que aparece oblogatoriamente una vez. Es el caso inicial en cuanto se declara un hijo al elemento sms. - "+": indica que puede haber una o més ocurrencias del elemento indicado © - "*: Indica que puede haber cero o més ocurrencias del elemento indicado © - "7": indica que puede haber cero o una ocurrencia del elemento indicado (también llamado opcionalidad) © No solo se pueden cambiar las ocurrencias de los hijos declarados, sino que podemos indicar la opcionalidad de la aparicién de hijos. En este caso podriamos definir que querremos alamcenar o la hora o el mensaje pero no las dos simulténemente pero s/ obligatoriamente una de las dos, por lo que quedaria asi Ejemplo. Se quiere crear una biblioteca de libros en un documento XML. Para ello, se necesita crear una DTD que almacene los siguientes campos de un libro: Cédigo del libro Titulo Editorial Edicién ISBN Ndmero de paginas Autor e-pa0co Como DTD incrustada I> 001 El Oscuro PAsajero Umbriel La primera 84-95618-83-4 ISBN, 251 Jeff Lindsay Si lo validamos en la direccién http://www.xmlvalidation.com/ Podemos comprobar que se valida sin problemas: Validate an XML fle iCémo hacer Ia validacién para incluir esta misma informacién de DTD desde un fichero externo? Antes que nada debemos separar los dos ficehros que tendremos ahora, biblioteca.xml y biblioteca.dtd Primer fichero biblioteca.xml 001 El Oscuro PAsajero Umbriel La primera 84-95618-83-4 251 Jeff Lindsay Segundo fichero biblioteca.dtd Para validar ambos elementos, ahora procedemos a la direccién anterior: siaseng 9 2 crop banner ‘aly by sane crs Validate an XML file Read here how to vaidate your vl fea (chiding referenced O7Ds) erine with just a few mouse dicks. Please copy your x document in here: (coum version="1.0" ancoding=rutt-8*7> ‘ejedages rupload (Selctonar ac) No s h.schoe ‘he validation checks performed against any XI Schema or DTD declared inside the XML. ecument. Inattner an XML schema nor 2 DTDs decared, ely a syntax check is performed. To validate the XH document against an external WL schema, cek below. Validate against external ML schema (vaidato) “The following les have been uploaded 50 far: HML document: 9 biboteca.ctd Click on any fle name if you want to edit the fle Cargamos en primer lugar el archivo xml. Despues hacemos clic en validar Y nos aparece lo siguiente: Top postions by xejureras aiacrtprequest owe Validate an XML file ‘iead here how to validate yur Wit ies Greiding reerenced oe) anima with jus few smouse sicke. “The file biblioteca. dtd is being referenced. Please copy itn here, o that the validation can continue: Orunload it ‘Seleccionar archi] No oo ha. acho (continua vidstin) ‘Te following file have been ualoaded 20 far Me documents ‘lick on any fil name if you want to edit the fle. Aqui nos esté informando de que el archivo tiene una referencia a una dtd y que para validar ambas, debemos incluir a continuacién el contenido del archivo dtd. Lo hacemos: “Top positons by | Mt vasn teopeorss ssaratpsstetes |] Validate an XML file eraser fader how to vt vor Wes ig ers DS alin wh a ow vn Read apg SV Mlue the fe bitioteca dt is bing rterenced. Please copy tin here 0 thatthe validation con ‘gallery ‘continue: ENeses: | [igemene battiorece Gabeon> ip [ties Tanso (eeaigo, sirtio, EaLcorseh, Eascsen, SDM, Nines oe_pagian: fnonacsty || |CiBiaNesr eoaian «fEcnaZn) > Mints |) |Sttsawr leeks qreemana)> (cigtmeur rairorial (SCDATA)> { (c:ELmGNT ISBN (FECORTA)> (cceneveur Eascasn (#PCDATA)> (econ) > runload i ‘Seleccionar archi} No se ha..achno (coninaeaiaton) ‘The following fles have been uploaded s0 far: aL document: 7 ‘ick on any fila name if you want to edit the fila. Y, tras hacer clic en “continue validation” (Continuar validacién) Nos dice lo siguiente: Validate an XML file ‘esa wt aie You es oi ete 1 ne win se Thefalonng lg have been uleded ofa: Ineaccmert lett No hubo errores encontrados, asi que nuestros documentos, tanto DTD como XML estén bien formados y, ademds, son vdlidos.

Anda mungkin juga menyukai