Creación de documentos XML 'Exchanger XML edition' es un editor estructurado que facilita la edición de lenguajes de marcas (ej XML). La versión Lite se puede descargar y utilizar libremente en aplicaciones académicas y para usa personal (ver www.exchangerxml.com). Además de las facilidades básicas de edición (añadir, modificar, borrar texto) permite realizar las siguientes tareas: fijar preferencias anotaciones codificación de los caracteres asistente al contenido personalización de la apariencia del editor selección del font font apertura de documentos en el navegador, visualización de ficheros svg, etc. ayuda contextual asignación de funciones a combinaciones de teclas resaltado de la sintaxis (distintos colores para marcas, atributos, contenido,..) ayuda para completar contenido Pero lo que realmente nos interesa es la posibilidad de validación sintáctica en tiempo real y las facilidades para definir la gramática (mediante DTD o schema-xml). Obtención de ayuda contextual El asistente de contenido ayuda a completar una marca o línea de código, así como seleccionar e insertar patrones (templates) en editores de texto estructurado. La ubicación del cursor en el fichero determina el contexto, lo cual permite sugerir cómo completar la marca o línea -> las sugerencias corresponden a las opciones legales en ese punto del texto. Realizar búsquedas -find/replace.- localiza texto en el fichero actual, y lo sustituye por texto alternativo. Acepta expresiones regulares. -search.- localizar texto en ficheros guardados previamente en el entorno. También existe la opción de buscar en un grupo de ficheros (ej en los ficheros xml situados dentro de un determinado directorio). Comprobación de la sintaxis Por defecto (si no se modifican las preferencias), se lleva a cabo la comprobación sintáctica en tiempo real (comprueba si el documento está 'well formed'). Si existe una gramática asociada, tambien se procede a validar el documento. Los posibles errores se marcan durante la escritura, de forma que resulta trivial determinar la entrada incorrecta. Importación de datos Es posible crear automáticamente ficheros XML a partir de una gramática y los datos importados desde excel o resultado de una consulta a una BD.
Creación de DTDs Un DTD contiene un cto de reglas que pueden utilizarse para validar un fichero XML. En el editor DTD, podemos añadir atributos, notaciones, entidades, y comentarios Importación de DTDs. El propio editor verifica que está bien construido (cumple las reglas sintácticas). De forma similar, podemos crear gramáticas basadas en schema XML. Creación de ficheros XML Un fichero XML vacío no posee DTD ni XML schema asociados -> no hay restricciones en el tipo de contenido. Otra alternativa es crear el fichero XML a partir de una gramática (ej DTD) -> el fichero resultante ya está asociado al DTD, y contiene al menos parte de sus elementos y atributos. De forma similar, podemos crear ficheros XML a partir de un schema XML. Vistas El editor mantiene dos vistas: - editor.- trabaja directamente sobre el código fuente. Selección inteligente: ej si estamos sobre una marca, existen opciones en la barra de herramientas para seleccionar toda la marca, únicamente sus elementos anidados, comentar/descomentar la marca, etc. Permite insertar/modificar valores -visor.- representación sólo lectura (ocultando además ciertos detalles que no afectan al contenido). Validación de ficheros XML Automática, aunque se puede invocar explícitamente desde la barra de herramientas Para aprender más sobre XML/DTD http://www.w3schools.com/xml/xml_examples.asp http://www.xml.com/pub/a/98/10/guide0.html http://www.brics.dk/~amoeller/xml/schemas/dtd.html http://www.spiderpro.com/bu/buxmlm001_dtd.html http://www.javacommerce.com/displaypage.jsp?name=intro.sql&id=18238
XML.- ejemplo Un fichero XML representa una jerarquía. Como ejemplo, desarrollamos un catálogo de películas. La estructura interna es la siguiente: CatalogoPeliculas Pelicula Duracion Genero Actores Actor Fecha Director Formato Titulo El elemento raiz es 'CatalogoPeliculas', y únicamente aparecerá una vez. Dentro del catálogo podemos tener diferentes películas, con una serie de informaciones por película. Para una película dada, parte de esas informaciones tienen un único valor (duración, género, Fecha,..), pero en una película podemos tener varios actores. Al editar el fichero XML, la primera línea debe contener la siguiente marca: <?xml version="1.0"?> Luego incluimos el siguiente texto en el fichero: <CatalogoPeliculas> <Titulo>The Matrix</Titulo> <Duracion>136</Duracion> <Genero>Sci-Fi and Fantasy</Genero> <Actor>Keanu Reeves</Actor> <Actor>Laurence Fishburne</Actor> <Actor>Carrie Ann Moss</Actor> <Director>Wachowski Brothers</Director> <Titulo>Titanic</Titulo> <Duracion>194</Duracion> <Genero>Drama</Genero> <Actor>Leonardo DiCaprio</Actor> <Actor>Kate Winslet</Actor> <Director>James Cameron</Director>
<Titulo>The Sixth Sense</Titulo> <Duracion>106</Duracion> <Genero>Thriller</Genero> <Actor>Bruce Willis</Actor> <Actor>Haley Joel Osment</Actor> <Director>M. Night Shyamalan</Director> <Formato>VHS</Formato> </CatalogoPeliculas> Tras salvar el fichero, lo intentamos abrir en un navegador. El navegador reconoce la estructura del documento, pero no dispone de reglas de visualización que le indiquen cómo presentarlo.en consecuencia, aparece una vista de texto donde se utilizan colores para resaltar sintaxis e indentación para indicar la jerarquía. Dado que se reconoce la jerarquía, podemos colapsar/expandir cada elemento de la misma. NOTA.- XML no contiene marcas destinadas a controlar la visualización. Para mostrar el contenido según una estructura determinada se utiliza XSLT, cuyo uso queda fuera del ámbito de esta práctica El fichero anterior está bien construido (sigue las reglas sintácticas definidas en XML) Cada marca abierta está correctamente centrada Las marcas no se solapan (anidamiento correcto) Existe un elemento raiz... El ejemplo anterior no utiliza atributos en las marcas (los atributos permiten asociar metadatos al contenido de una marca. Vamos a añadir a cada película el atributo numserie (la mayor parte de las aplicaciones que accedan a los datos no explotarán esa información, pero en un futuro podemos desarrollar otras que sí lo utilicen). <CatalogoPeliculas> <Pelicula numserie="123xyz"> <Titulo>The Matrix</Titulo> <Duracion>136</Duracion> <Genero>Sci-Fi and Fantasy</Genero> <Actor>Keanu Reeves</Actor> <Actor>Laurence Fishburne</Actor> <Actor>Carrie Ann Moss</Actor> <Director>Wachowski Brothers</Director>... Documentos bien construidos Todo documento XML debe seguir las reglas sintácticas citadas anteriormente: en caso contrario, el
editor mostrará la correspondiente indicación de error. Por ejemplo, modifica la marca de cierre de una película para indica </Pelicu>, y observa la indicación que aparece en pantalla. Documentos válidos Además de estar bien construido, nos interesa comprobar que el documento es válido (sigue la estructura esperada para los documentos de tipo 'CatalogoPeliculas'). Para ello debe definirse previamente la gramática (jerarquía válida) para dicho tipo de documentos Document Type Definitions (DTD) Un DTD permite especificar la gramática asociada a un determinado tipo de documentos XML, de forma que todos esos documentos comparten la misma descripción de la estructura interna. El DTD define las reglas relativas a la jerarquía, qué elementos deben incluirse, qué atributos podemos utilizar, y qué tipo de contenido podemos incluir en cada elemento. Para este ejemplo, creamos el fichero 'CatalogoPeliculas.dtd', y lo enlazaremos al fichero CatalogoPeliculas.xml mediante la siguiente frase (se añade en el fichero xml, inmediatamente tras la línea <?xml version="1.0"?>) <!DOCTYPE CatalogoPeliculas SYSTEM "CatalogoPeliclas.dtd"> El contenido del fichero DTD es el siguiente: <!ELEMENT CatalogoPeliculas (Pelicula+) > <!ELEMENT Pelicula (Titulo+, Duracion?, Genero?, Actores?, Fecha?, director*, format?) > <!ELEMENT Titulo (#PCDATA) > <!ELEMENT Duracion (#PCDATA) > <!ELEMENT Genero (#PCDATA) > <!ELEMENT Actores (Actor*) > <!ELEMENT Actor (#PCDATA) > <!ELEMENT Fecha (#PCDATA) > <!ELEMENT Director (#PCDATA) > <!ELEMENT Formato (#PCDATA) > Cada elemento indica el nombre de un elemento y los sub-elementos admisibles. Los símbolos indican lo siguiente:? = opcional * = cero o más repeticiones + = una o más repeticiones #PCDATA = texto arbitrario Introduce el fichero DTD, enlaza el fichero XML con el mismo, y valídalo