1º DAM Lenguajes de Marcas (IES San Vicente) Introducción al XML
1º DAM
Lenguajes de Marcas
(IES San Vicente)
ÍNDICE 1. XML
2
BREVE HISTORIA DE LOS LENGUAJES DE MARCAS ..............................................................................2 DEFINICIÓN ............................................................................................................................3 ANALIZADORES XML (PARSERS) .................................................................................................4 HTML Y XML.........................................................................................................................5 JERARQUÍAS EN XML ................................................................................................................6 CONSORCIO W3C ....................................................................................................................8 COMPONENTES XML ................................................................................................................9 2. DOCUMENTOS XML
10
ESTRUCTURA DEL DOCUMENTO XML .......................................................................................... 10 CODIFICACIÓN DE LOS DOCUMENTOS .......................................................................................... 11 ELEMENTOS .......................................................................................................................... 12 ATRIBUTOS .......................................................................................................................... 13 IDENTIFICACIÓN DE LOS ELEMENTOS ........................................................................................... 13 USO DE ELEMENTOS O DE ATRIBUTOS .......................................................................................... 14 CARACTERES ESPECIALES .......................................................................................................... 15 COMENTARIOS E INSTRUCCIONES DE PROCESO .............................................................................. 16 DOCUMENTO BIEN FORMADO ................................................................................................... 17 EJERCICIOS ........................................................................................................................... 17 EJERCICIO 1. COCHES. ...................................................................................................................... 17 SOLUCIÓN ...................................................................................................................................... 18 EJERCICIO 2. LIBROS. ........................................................................................................................ 19
Introducción al XML
Página 1
1º DAM
Lenguajes de Marcas
(IES San Vicente)
1. XML XML (Extensible Markup Language, lenguaje de marcas extensible) es la última palabra de moda en Internet. También es una tecnología que madura
rápidamente con múltiples aplicaciones en el mundo real, particularmente para la gestión, visualización y organización de los datos. En conjunto, con su lenguaje de visualización XSL y el modelo de objeto documento DOM, es una tecnología esencial para cualquier usuario de lenguajes de marcas en la red o en la intranet.
Breve historia de los lenguajes de marcas Se puede observar que el uso de los archivos binarios reporta muchas ventajas (fácil de gestionar por el ordenador, más compacto, etc.), pero los archivos de texto también tienen sus ventajas (la principal es que es un formato de intercambio universal). Quizá lo ideal sería tener un formato que combine la universalidad de los archivos de texto con la eficiencia de almacenamiento y las capacidades de formateo de los archivos binarios. Esta idea de llegar a un formato de datos universal no es nueva. De hecho, desde que existen los ordenadores, los programadores han intentado crear modos de intercambio de información entre los diferentes programas informáticos. SGML (Standard Generalized Markup Language) fue uno de los primeros intentos en el que se pretendía combinar un formato de dato universalmente intercambiable con la posibilidad de almacenar los datos con información acerca de su presentación y formato. SGML fue creado para que se transformara en un estándar para el marcaje de los datos y tuvo aceptación en los grandes sistemas de gestión de documentos. Pero cuando se debe tratar con gran cantidad de datos complejos SGML se vuelve un lenguaje muy complicado. La aplicación más conocida de SGML es HTML (HiperText Markup Language). La idea era que cualquier documento HTML (o página web) debía poder ser representada en cualquier aplicación que fuera capaz de comprender HTML (específicamente los navegadores Web). Además HTML se basa en texto, cualquiera puede crear una página HTML usando un editor de texto simple o cualquiera de los editores de páginas web existentes en el mercado. Incluso
Introducción al XML
Página 2
1º DAM
Lenguajes de Marcas
(IES San Vicente)
muchos procesadores de texto nos permite exportar nuestros documentos a formato HTML.
Definición Desgraciadamente SGML, es un lenguaje tan complicado que no resulta adecuado para el intercambio de datos en la web. Y, aunque HTML ha tenido un éxito enorme, tiene un ámbito muy limitado: su objetivo es lograr la visualización de documentos en el navegador. Esto significa que podemos crear un documento HTML para visualizar la información de una persona, pero esto es todo lo que podemos hacer con ese documento. No podríamos relacionar ese documento con la información relacionada con el nombre de la persona porque HTML no tiene ninguna posibilidad de describir esta clase de información especializada. El lenguaje de marcas XML se creó para resolver este problema. XML es un subconjunto de SGML, con los mismos objetivos, pero sin el grado de complejidad del lenguaje original. XML, fue diseñado para que sea totalmente compatible con SGML, lo que implica que cualquier documento que sigue las reglas de sintaxis de XML es también por definición un documento SGML. Ojo, porque el caso contrario puede no ser cierto. No todos los documentos SGML son documentos XML. Es importante tener en cuenta que XML no es un lenguaje, sino un estándar para crear lenguajes que cumplen los criterios XML. En otras palabras, XML describe una sintaxis que se utiliza para crear nuestros propios lenguajes. Por ejemplo, supongamos que tenemos datos acerca de un nombre y queremos compartir esa información con otros. Pero también queremos utilizar esa información en un programa informático. En vez de crear un archivo de texto con el siguiente contenido:
Name John Doe
Podemos crear un archivo XML como este:
John Doe
Incluso en estos ejemplos tan simples podemos comprender por qué a los lenguajes de marcas SGML y XML se les denominan autodescriptivos. Analizando Introducción al XML
Página 3
1º DAM
Lenguajes de Marcas
(IES San Vicente)
los datos se puede ver que la información está relacionada con un nombre. Un dato denominado first (nombre) y otro last (apellido). Aunque podríamos haberles asignado nombres arbitrarios, si se utiliza XML, la recomendación es siempre utilizar nombres con significado. También se puede observar que la versión XML es bastante más larga que la versión de texto simple. El uso de XML para marcar la información añadirá bytes a los datos básicos y en algunos casos aumentarán de tamaño de manera considerable. Pero cabe destacar que el tamaño de los archivos no es la preocupación principal de XML, sino que busca dar una estructura a los datos para simplificar el software que accede a los mismos. Al fin y al cabo, si el tamaño del archivo es importante a la hora de transmitir la información siempre tenemos la alternativa de comprimir los archivos.
Analizadores XML (Parsers) Pero qué nos ofrece XML. ¿Por qué tenemos que complicarnos el trabajo creando archivos de documentos XML?¿No sería más sencillo indicar algunas reglas para un fichero con nombres y apellidos, señalando por ejemplo donde comienzan los nombres y que el apellido va tras un espacio en blanco? Además los tamaños de los archivos serían más pequeños. Pero ahora supongamos que nos encontramos ante un nombre compuesto y ahora queremos añadir un segundo nombre: John Fitgerald Doe. Tendríamos que cambiar las reglas para indicar en el programa que en el fichero tras el primer espacio en blanco va el segundo nombre y no el apellido en los casos que existan dos espacios. En los demás aplicará la primera regla. Pero ahora llega una persona con el siguiente nombre: John Fitgerald Johansen Doe. Para una persona es simple identificar el nombre y apellido pero para el programa será un cambio lógico importante. Y aún podemos encontrarnos nuevos casos como John Fitgerald Johansen Doe Junior. Por desgracia en la mayoría de las aplicaciones el desarrollador toma una decisión, por ejemplo que las personas solo pueden tener a lo sumo dos nombres y dos apellidos. Cualquier persona fuera de este estándar o no podrá guardarse su información o esta se guardará incompleta. El ejemplo puesto es sencillo y fácil de resolver pero nos sirve para señalar uno de los principales objetivos de XML. Cada vez que los desarrolladores cambian la estructura de los datos deben cambiar también la tecnología para extraerlos. Pero con XML existe un modo estandarizado para que obtengamos la información que Introducción al XML
Página 4
1º DAM
Lenguajes de Marcas
(IES San Vicente)
necesitamos, no importa como esté estructurada. El ejemplo visto es simple y es difícil apreciar la necesidad de utilizar la tecnología XML. Pero cuanto más grandes son las aplicaciones y más compleja la información que se maneja más fácilmente se aprecian las ventajas y virtudes de XML. Si seguimos las reglas especificadas por XML, podemos estar seguros que nos resultará muy fácil acceder a nuestra información. Esto es así porque existen programas denominados analizadores (parsers) que son capaces de leer la sintaxis XML y obtener la información que necesitamos. Podemos utilizar estos analizadores dentro de nuestros propios programas. De esta forma nosotros no tenemos que acceder directamente a los ficheros XML lo que nos libera de parte del trabajo. Al ser tan flexible XML está orientado para ser la base de la definición de lenguajes de intercambio de datos, especialmente para la comunicación en Internet. El lenguaje simplifica el trabajo con los datos dentro de una aplicación, como por ejemplo, cuando en una aplicación es necesario acceder a la información almacenada bajo la etiqueta
, pero además podemos compartir la información por la red a cualquiera incluso sin nuestro programa, puede ver nuestro archivo, o incluso ver la información con otra aplicación si antes nos hemos puesto de acuerdo en el formato del fichero XML.
HTML y XML Lo que HTML hace para la fase de presentación XML lo hace para el intercambio de datos. Algunas tareas no pueden ser resueltas por medio de XML, así como también sucede con HMTL que no puede resolver algunas de las situaciones de presentación de la información. Muchos utilizamos Adobe Acrobat en nuestros equipos para visualizar documentos de una manera que HTML no puede. Pero, al igual que podemos reconocer que la mayoría de las veces HTML logra una buena visualización, la gente que trabaja con XML opina que este hace bien su trabajo a la hora de intercambiar datos entre aplicaciones. Por supuesto existe una diferencia fundamental entre XML y HTML: HTML está diseñado para una aplicación específica; para transmitir la información hacia los seres humanos, usualmente, de manera visual y por medio de una navegador Web.
Introducción al XML
Página 5
1º DAM
Lenguajes de Marcas
(IES San Vicente)
XML no tiene una aplicación específica; está diseñado para el uso que se precise. HTML tiene un conjunto finito de estructuras de marcas (,
, , etc.), que se utilizan para crear un documento HTML correcto. En teoría, podemos estar seguros que cualquier navegador nos mostrará un documento HTML correcto porque lo único que tiene que hacer, es conocer este conjunto limitado de etiquetas. Aunque en la práctica nos encontramos con documentos WEB que son bien visualizados correctamente en un navegador e incorrectamente en otros, porque difieren en la utilización de algunas de las marcas que se utilizan en HTML. Por otra parte, si creamos un documento XML podemos estar seguros que cualquier analizador (parser) podrá extraer información del documento, pero lo que no podemos garantizar es que todas las aplicaciones comprendan el significado de esa información. Por lo que, podemos crear documentos XML para describir información que necesitamos, pero antes de que pueda considerarse útil, debe haber aplicaciones escritas para que los comprendan. Además de las capacidades suministradas por la especificación XML básica existen varias tecnologías relacionadas algunas de las cuales serán analizadas en este curso. Estas tecnologías nos brindan capacidades adicionales, haciendo que XML sea aún más útil. Desgraciadamente algunas de estas tecnologías aún no son suficientemente maduras, lo que implica que el verdadero poder de las mismas está aún por verse.
Jerarquías en XML En este punto vamos a analizar cómo se estructuran los datos en un documento XML. Cuando debemos tratar con grandes cantidades de información, o incluso cantidades no tan grandes. Usualmente es mejor agruparlas en subtemas relacionados en lugar de tener toda la información en un único gran grupo. Por ejemplo, este capítulo está dividido en subtemas que a su vez se subdividen en párrafos. Un formulario de impuestos se divide en subsecciones, a lo largo de páginas múltiples. Esto hace que la información resulte más comprensible y también más accesible. Los desarrolladores de software han utilizado este paradigma durante muchos años, usando una estructura denominada modelo de objeto. En este modelo de objeto toda la información que está siendo modelada se subdivide en varios objetos y estos, por su parte se agrupan en una jerarquía. Introducción al XML
Página 6
1º DAM
Lenguajes de Marcas
(IES San Vicente)
Por ejemplo, cuando se trabaja con HTML dinámico (DHTML) se dispone de un modelo de objetos para utilizar con documentos HTML, denominado DOM (Document Object Model). Esto nos permite escribir código en un documento HTML como el siguiente: alert(document.title);
Estamos utilizando una función alert() para producir un mensaje que indica el título de un documento HTML. Esto se realiza accediendo a un objeto denominado document, este incluye entre otras muchas cosas una propiedad denominada title que devuelve el título del documento HMTL vigente. XML también agrupa la información en jerarquías. Los elementos de nuestros documentos se ordenan por medio de relación padre/hijo o hermano/hermano. Estos componentes se denominan (tal y como veremos en el próximo tema) elementos. Consideremos nuestro ejemplo , mostrado jerárquicamente: “John” “Fitzjerald Johansen” “Doe”
es padre de , que, por su parte, es hijo de . , y son todos hermanos (es decir, son todos hijos de ). Observar también que el texto es también hijo de un elemento. Por ejemplo, “John” es hijo de . Esta estructura también se denomina árbol. Todas las partes del árbol que contiene hijos se denominan ramas, mientras que las partes que no tienen hijos se denominan hojas. Dependiendo del contenido de los elementos se pueden clasificar en: Elementos con contenido de elemento. Aquellos que poseen hijos que son a su vez otros elementos. En nuestro ejemplo Elementos de contenido simple. Aquellos que solo contienen texto. En nuestro ejemplo , y . Elementos de contenido combinado. Cuando poseen tanto texto como otros elementos. En nuestro ejemplo no hay ningún caso. Pero, por ejemplo: „
this
is
some
text
in
my
element‟.
Introducción al XML
Página 7
1º DAM
Lenguajes de Marcas
(IES San Vicente)
En este ejemplo tiene tres hijos: o Un hijo de texto “this is some” o Un hijo o Otro hijo de texto “in my element” Las relaciones también se pueden definir haciendo la analogía del árbol un poco más compleja. es el ancestro de ; es un descendiente de . Después que se comprendan las relaciones jerárquicas entre los elementos (y el texto que contiene), se tendrá una idea más completa de la naturaleza de XML. También estará mejor preparado para trabajar con algunas de las otras tecnologías relacionadas con XML, que hacen amplio uso de este paradigma.
Consorcio W3C Una de las razones por las que HTML y XML han resultado ser tan buenas ideas es porque son estándares. Esto significa que todos pueden seguir esos estándares y las soluciones que se desarrollen permitirán la interoperabilidad. Por lo tanto, ¿quién crea los estándares? En 1994 se formó W3C (World Wide Web Consortium), con el objetivo, tal y como se expresa en su sitio http: //www.w3c.org, “de lograr que la web desarrolle todo su potencial por medio de la creación de protocolos comunes que promuevan su evolución y que aseguren la interoperabilidad”. Al reconocer la necesidad de los estándares, W3C produce recomendaciones que construyen la estructura básica de la web. W3C las denomina recomendaciones, en lugar de estándares, porque los desarrolladores y fabricantes tienen la libertad de seguir esas recomendaciones que brindan esa interoperabilidad. Su contribución más conocida para la web es, por supuesto, la recomendación HTML; cuando un navegador web señala que se cumple con la versión 3.2 o 4.01 de las recomendaciones HTML, se están refiriendo a la recomendación desarrollada bajo la autoridad de W3C. La razón por la que las especificaciones de W3C se implementan de manera tan extendida se debe a que la creación de estos estándares es un proceso abierto: cualquier empresa o individuo puede ser miembro de W3C, y ser miembro significa que esas empresas o individuos pueden formar parte del proceso de creación de los estándares. Introducción al XML
Página 8
1º DAM
Lenguajes de Marcas
(IES San Vicente)
Debido a los objetivos de interoperabilidad de XML, W3C es un buen sitio para desarrollar los estándares relacionados con esta tecnología.
Componentes XML La ”comunicación de la información” es un tema muy amplio, y por lo tanto, no es posible que una única especificación pueda abarcar toda la materia. Por esta razón, existen varias especificaciones interrelacionadas, que funcionan en conjunto para formar la familia de tecnología XML, y cada especificación cubre un aspecto diferente de la comunicación de la información. Aquí presento una lista de las más importantes: XML 1.0 y 1.1: son las especificaciones base a partir de las que se construye la familia XML. Describe la sintaxis que deben seguir los documentos XML, las reglas que los analizadores XML tienen que cumplir y todo lo que haga falta para leer o escribir un documento XML (también define DTD, aunque a veces se trata como una tecnología diferente. Para poder componer nuestras propias estructuras y nombres de elementos para nuestros documentos, las DTD y los esquemas nos brindan diferentes métodos para crear plantillas para nuestros tipos de documentos. Podemos lograr que otros documentos, producidos por otros desarrolladores, utilicen estas plantillas y obtener así documentos compatibles con nuestra definición. Espacios de nombres, Namespaces, es un medio para distinguir entre un vocabulario XML y otro, lo que nos permite crear documentos más consistentes mediante el uso de múltiples vocabularios dentro de un mismo documento. XPath describe un lenguaje de consulta para el direccionamiento de partes de un documento XML. Esto permite que las aplicaciones puedan requerir una parte específica de un documento XML, en lugar de tener que tratar siempre con todo el documento completo. Por ejemplo, podemos utilizar XPath para obtener todos los apellidos que aparezcan en un documento. Tal y como vimos anteriormente, en algunos casos nos puede interesar visualizar nuestros documentos XML. En los casos más simples, podemos usar CSS (Cascading Style Sheets) para definir la presentación de nuestros documentos. En los casos más complejos podemos utilizar XSL (Extensible Introducción al XML
Página 9
1º DAM
Lenguajes de Marcas
(IES San Vicente)
Style Sheet Languaje) que está compuesto por XSLT que puede transformar nuestros documentos de un tipo a otro, y Formating Objects (Objetos de formateo), que se responsabilizan de la información. Para suministrar un medio para que las aplicaciones más tradicionales puedan tener un interfaz con los documentos XML, existe un modelo de objeto documento DOM. Existe un medio alternativo para tener una interfaz con documentos XML desde el código de un programa: la API para XML de SAX.
2. Documentos XML Como ya hemos visto en el punto anterior, un documento XML no es más que un fichero de texto donde la información viene etiquetada. Este fichero está compuesto por una serie de elementos definidos en la recomendación XML de W3C. Estos documentos pueden ser leídos por personas (en un bloc de notas o en un navegador) o por sistemas que sacan información del documento XML. Normalmente, para que lo lea un ordenador el fichero deberá cumplir una serie de reglas para que la aplicación que lo lea, sea capaz de interpretarlo, los documentos XML que cumplen estas reglas se dice que son documentos bien formados.
Estructura del documento XML Un documento XML está formado por una mezcla de datos e información de etiquetado sobre los mismos. La información de etiquetado se corresponde con el texto que aparece encerrado entre los caracteres „<‟ y „>‟ o entre „&‟ y „;‟. El juego de caracteres usado en un documento XML se corresponde con el estándar ISO 10646, denominado Universal Character Set. Más adelante, en el apartado dedicado a la codificación del documento, se estudian con más detalle los aspectos relacionados con este tema. Es importante resaltar que XML distingue entre mayúsculas y minúsculas, tanto en los datos como en el etiquetado. Por ejemplo, las etiquetas y son completamente diferentes. También es conveniente aclarar que en XML, a diferencia de HTML, los espacios en blanco usados en el documento son significativos, de hecho, en el estándar se especifica
Introducción al XML
Página 10
1º DAM
Lenguajes de Marcas
(IES San Vicente)
que el parser debe entregarlos a la aplicación. Por lo que se refiere a la estructura lógica, el documento puede incluir un prólogo con la siguiente información. La declaración XML, que es de carácter opcional. Pero muy conveniente. Una declaración de tipo de documento (DTD). Es opcional. Más adelante veremos en detalle los DTD. Solo anticipar que sirven para validar documentos XML. En la declaración XML a su vez debe aparecer: La versión XML, usada en el documento. Normalmente la 1.0. este atributo es obligatorio. El tipo de codificación utilizada (encoding). Si no aparece esta información se supone la codificación por defecto. Carácter
autónomo
(standalone)
del
documento.
Indica
si
hay
declaraciones de etiquetado externas al documento (standalone = ”no”). O si el documento es autocontenido (standalone =”yes”). No es obligatorio. Un ejemplo de declaración XML completa:
Codificación de los documentos Como se acaba de comentar, XML usa el estándar de representación ISO 10646. Se trata de un estándar que engloba a todos los anteriores (como, por ejemplo, UNICODE) y que gracias al uso de 31 bits para la codificación de cada carácter, permite representar cualquier lenguaje humano conocido. Este estándar está en continua revisión y contiene más de setenta mil caracteres diferentes. Pero, el uso directo de este estándar conlleva consigo la incompatibilidad con las herramientas actuales y la producción de archivos de gran tamaño. Por ello, en vez de usar la codificación directa usando 4 bytes (denominado UCS-4) se han definido representaciones alternativas como UTF-8. Esta codificación representa los caracteres ASCII con un solo byte, lo que asegura compatibilidad y un tamaño reducido en los documentos que contengan sólo información tipo ASCII. Hay que resaltar que en UTF-8 los caracteres del castellano no incluidos en ASCII (vocales acentuadas, eñe, etc.) ocupan 2 bytes. Debido a ello, en muchos entornos de edición en castellano se usa por defecto la codificación ISO-8859-1 o Latín 1. Se trata de una extensión de ASCII englobada también en la ISO 10646, que codifica Introducción al XML
Página 11
1º DAM
Lenguajes de Marcas
(IES San Vicente)
los caracteres especiales de las lenguas europeas occidentales en un solo byte. Sin embargo, el estándar XML no requiere que un procesador sepa interpretar esta representación, siendo necesario, además indicarlo el principio del documento en la declaración XML. En cualquier caso, siempre se puede incluir cualquier carácter del juego definido por ISO 10646, aunque sea indirectamente, mediante el mecanismo denominado referencias a carácter. Una referencia a carácter especifica el valor numérico del carácter ISO 10646 deseado. A continuación, se muestra el formato de esta referencia a carácter, para el caso que el número sea decimal o hexadecimal respectivamente: código_decimal; ódigo_hexadecimal;
La preferencia siempre será utilizar un editor convencional para crear los documentos XML en formato ISO-8859-1 (también conocido como ISO-latin-1). Aunque en este caso será obligatorio incluir el atributo encoding en el encabezamiento del documento. Con este formato podremos utiliza los caracteres especiales como las vocales acentuadas o las eñes. También existe el ISO-8859-15 (ISO-latin-15) que es igual que el ISO-8859-1 pero incluye además con el símbolo €.
Elementos Un documento XML está formado por una jerarquía de elementos a partir de un elemento raíz único. Se podría definir el elemento como el componente semántico básico de un documento. Un elemento consta de una etiqueta de inicio, un contenido y una etiqueta de fin. Es importante resaltar que cada dato de un documento tiene que formar parte del contenido de algún elemento. La sintaxis de la etiqueta de inicio es y la de fin es . El nombre de un elemento debe empezar por una letra o el carácter subrayado, seguido por letras, dígitos, el carácter punto, el carácter guión o el carácter subrayado. Además, el nombre no deberá comenzar por la cadena XML, ya sea en mayúsculas o en minúsculas. Estas son las características de un nombre XML válido que también se aplican a atributos y entidades como veremos más adelante. Como ya vimos en el primer tema los elementos se pueden clasificar según el contenido en: Introducción al XML
Página 12
1º DAM
Lenguajes de Marcas
(IES San Vicente)
Elementos vacíos. Como
o
de HTML. Elementos que solo contienen texto. Elementos que contienen otros elementos. Elementos que contiene texto y otros elementos.
Atributos Un atributo representa una información complementaria asociada a un elemento. Aparece en la etiqueta de inicio o en la de elemento vacío. Cada elemento puede tener una lista de atributos asociada, en la que el orden es intrascendente pero no pueden aparecer atributos repetidos. Un atributo consiste en una pareja de nombre y valor, donde el valor debe aparecer encerrado entre comillas simples o dobles, siguiendo la siguiente sintaxis:
Por ejemplo: 5,73
El nombre del atributo al igual que el del elemento debe tratarse de un nombre XML válido.
Identificación de los elementos Cuando se confecciona un documento, hay que empezar identificando cuáles son los elementos que aparecerán en el mismo. Esta descomposición en elementos no es algo que se pueda hacer de forma automática, sin que tenga una única solución válida. Una determinada solución puede ser, más o menos, adecuada dependiendo del uso que se vaya a hacer del documento. Para aclarar estas consideraciones, se plantea a continuación un ejemplo sencillo pero que permite observa la dimensión del problema. Supóngase que se pretende incluir el nombre de una persona en un documento. Se plantean varias alternativas: Juan Martín Fernández Moreno de la Vega Juan Martín Fernández Moreno de la Vega Juan Martín Fernández Introducción al XML
Página 13
1º DAM
Lenguajes de Marcas
(IES San Vicente)
Moreno de la Vega
Revisando las alternativas, se observa que se ha ido ganando en contenido semántico, pero también en complejidad, dado que hay que incluir más etiquetas. ¿Cuál es la mejor solución? Esta pregunta no tiene una respuesta directa. Depende de lo que luego tengamos que hacer con el documento. Si posteriormente en el tratamiento del documento siempre vamos a trabajar con el nombre como un todo (sin diferenciar partes), obviamente, la primera solución es la óptima, pero, si necesitamos procesar apellidos y nombre por separado, la primera solución es la peor de las tres. Por lo tanto, para determinar los elementos que van a formar parte del documento XML debemos tener una idea preestablecida de los tipos de procesamiento que se van a realizar sobre el documento. Debemos tener presente una cosa: si vamos a procesar el nombre entero efectivamente la primera solución es la mejor de las tres, pero, ¿y si en un futuro nos piden un nuevo procesamiento donde es necesario separar nombre y apellidos? Seguramente, nos vamos a encontrar con problemas ya que hay muchos nombres como el del ejemplo, donde es difícil determinar dónde comienza y dónde termina cada elemento. Pero si aunque en un principio no era necesario que hubiéramos elegido la tercera opción, ahora separar en el procesamiento el nombre y los apellidos es muy sencillo (es más ya lo tenemos). Por lo tanto, a la hora de escoger los elementos, no solo hay que ver las necesidades presentes de procesamiento, sino intentar anticiparse a posibles necesidades futuras dotando de la mayor semántica posible a nuestro documento. Un consejo es, que siempre que dudemos, debemos asignar un elemento diferente a la información en cuestión.
Uso de elementos o de atributos Otra pregunta que surge cuando se diseña un documento XML es cuándo usar elementos y cuándo atributos. Supóngase por ejemplo, un documento que contiene las transparencias de una presentación. Parece lógico que cada transparencia incluya un título, ¿Se debe crear como elemento o como atributo? Uso de elementos o atributos … Introducción al XML
Página 14
1º DAM
Lenguajes de Marcas
(IES San Vicente)
O …
Aunque no se puede dar un criterio válido para todos los casos, si podemos dar algunas pautas que ayuden a tomar una decisión: Si la información tiene una estructura interna debe ser un elemento Si contiene una gran cantidad de información, parece más adecuado, un elemento Podemos hacer el símil que un elemento es un sustantivo y un atributo un adjetivo Los mecanismos de procesamiento y presentación de documentos, permiten tener mejor control sobre los elementos. Por tanto, aquella información que tenga un procesamiento o presentación complejos debe ser un elemento. Aplicando estas pautas podemos concluir que el título de la transparencia debe ser un elemento, tiene carácter sustantivo y debe ser presentado al usuario. Como contra-ejemplo imaginemos que queremos incluir para cada transparencia información sobre el tiempo que le debemos dedicar (poco, medio, mucho). Esta información no tiene carácter sustantivo y no tiene porqué ser presentada, por tanto, puede ser perfectamente un atributo. Como consejo final, en caso de duda, se debe utilizar un elemento.
Caracteres especiales Si observamos el siguiente ejemplo: 6 es < 7 & 7 > 6
Si visualizamos el texto anterior con un navegador nos dará un error, ya que, al encontrarse con el carácter „<‟ espera una etiqueta y no un carácter en blanco. Existen varios caracteres que tienen un significado especial (< & > „ “) ¿Qué ocurre si se requiere incluir uno de estos caracteres dentro del documento XML? En el caso que pueda existir algún tipo de ambigüedad, será necesario establecer un mecanismo que permita distinguir si el carácter debe interpretarse como especial o no. Veamos una primera manera de indicar que no se interprete como especiales ninguno de los caracteres de un texto: las secciones CDATA. Introducción al XML
Página 15
1º DAM
Lenguajes de Marcas
(IES San Vicente)
John Doe ]]
En el ejemplo, la sección CDATA, que se inicia con la cadena excepto como indicación de final de una sección CDATA. Si se quiere utilizar dicha secuencia habrá que utilizar la referencia a carácter correspondiente a >. Los caracteres „ y “ no pueden aparecer en valores y atributos que usen como delimitador el mismo tipo de comillas. Para resolverlo utilizaremos como delimitador el carácter contrario al que necesitamos incluir en el texto. Si necesitamos los dos tipos de comillas tendremos que recurrir a las referencias a carácter. Aunque en caso de conflicto se puede utilizar la referencia a carácter (códigodecimal;), es recomendable usar las entidades predefinidas que representan a estos caracteres:
En siguiente enlace de wikipedia: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references
podemos encontrar las referencias a carácter más habituales en nuestro idioma.
Comentarios e instrucciones de proceso Los comentarios en XML siguen la misma sintaxis que en HTML:
Por lo que se refiere a instrucciones de proceso, estas permiten especificar en un documento el nombre de una aplicación, así como los datos que se le pretenden pasar como argumentos a la aplicación.
Introducción al XML
Página 16
1º DAM
Lenguajes de Marcas
(IES San Vicente)
El parser proporciona esta información al programa que procesa el documento que la tratará como considere oportuno, por ejemplo, arrancando dicha aplicación y pasándole los parámetros indicados. El uso de PI (Process Instructions) es muy poco frecuente y, en general, en la comunidad XML se suele evitar su uso. Pero si existe una buena razón se puede utilizar. Por ejemplo, podemos utilizar las PI para colocar la clase de información que colocamos en los comentarios de HTML, como código de javascript. De esta forma, nos aseguramos que esta información se la pasa el parser a la aplicación. La declaración XML (), aunque por su sintaxis pueda parecerlo, no es una PI. Pero hay que tener en cuenta que si incluimos esta declaración en otro lugar que no sea al principio del fichero XML está puede ser tomada como una PI.
Documento bien formado Sin la presencia de un DTD, no se puede comprobar la validez de un documento, sólo se puede comprobar si está bien formado. A continuación, se enumeran algunas reglas que deben cumplir un documento para que se le considere bien formado: Los elementos deben esta anidados adecuadamente. Los valores de los atributos deben encerrarse entre comillas simples o dobles. Todo elemento debe tener una etiqueta de fin o utilizar la etiqueta de elemento vacío. El elemento debe tener un único elemento raíz. Todo texto debe estar incluido en un elemento.
Ejercicios Ejercicio 1. Coches. Imaginemos un concesionario de coches que periódicamente debe enviar
información sobre los vehículos que tiene en oferta a un portal publicitario de compra-venta de coches. La información que debe enviar es: La marca El modelo Motor Introducción al XML
Página 17
1º DAM
Lenguajes de Marcas
(IES San Vicente)
Matrícula Kilómetros Precio original Precio oferta Extras fotos Crea un documento bien formado que contenga esta información. Solución Un documento XML bien formado que contenga esta información puede ser el
siguiente: ford focus duratorc 1.4 1234AAA 12500 12000 10000 pintura metalizada llantas 11325.jpg 11326.jpg ford focus duratorc 2.0 1235AAA 125000 10000 9000 pintura metalizada spoiler trasero climatizador 11327.jpg 11328.jpg
Este documento podemos abrirlo con un navegador, por ejemplo Firefox, y veríamos la siguiente imagen.
Introducción al XML
Página 18
1º DAM
Lenguajes de Marcas
(IES San Vicente)
Los navegadores actuales traen implementados parsers de XML por lo tanto podemos utilizarlos para ver que los XML están bien formados. Si por ejemplo en el documento anterior, hubiéramos cometido algún error como puede ser no cerrar una etiqueta o escribir erróneamente el nombre de una etiqueta el navegador nos hubiera informado con un error. Ejercicio 2. Libros. Tenemos que mostrar información sobre libros en nuestra página web. Nos ofrecen
un servicio, donde a partir de un tema, nos devolverán un fichero XML con información de los libros encontrados en diferentes librerías electrónicas relacionados con esa temática. Nos piden que escribamos un documento XML bien formado como ejemplo. Para lo cual, se pide escribir un documento XML con Introducción al XML
Página 19
1º DAM
Lenguajes de Marcas
(IES San Vicente)
información de libros encontrados en varias librerías electrónicas (amazon, y la casa del libro, por ejemplo) sobre la temática 'XML'. Como mínimo sobre cada libro necesitaremos: Su código ISBN Su título El nivel de profundidad en el tratamiento de la materia (básico, intermedio avanzado) Los autores En el documento XML, pondremos información de al menos dos librerías, y para cada librería al menos información de 3 libros.
Introducción al XML
Página 20