Anda di halaman 1dari 48

Mdulo 2 - XML

2.1. Introduccin y Fundamentos de XML


2.1.1. Beneficios de XML
XML viene de EXtensible Markup Language, o lenguaje de marcado extensible. XML surge con la intencin de estructurar, almacenar y transportar informacin en un archivo de texto de manera que pueda ser tratada por cualquier lenguaje y desde cualquier plataforma. Las principales caractersticas de XML son: Excelente para datos con una estructura compleja o atpica Descripcin textual de los datos Excelente para almacenar datos a largo plazo Excelente en la reutilizacin de los datos Comprensible tanto por mquinas como por personas Los datos son descritos mediante lenguaje de marcado Estructura los datos en forma de rbol Excelente para datos con una estructura compleja o atpica No siempre las bases de datos relacionales son la mejor opcin para alojar datos y estructurarlos de una forma coherente. Por ejemplo, hay estructuras muy complejas como los registros o logs de sistema y el correo electrnico; o que carecen de una estructura bien definida como por ejemplo manuales de producto, hojas de especificaciones y revistas. Para estos casos XML ofrece una solucin idnea para su manejo. Descripcin textual de los datos XMl permite la descripcin de los datos en formato texto lo que facilita el intercambio de los mismos entre diferentes plataformas independientemente de su sistema operativo. Excelente para almacenar datos a largo plazo Al ser datos de texto la informacin puede ser almacenada durante largos periodos de tiempo sin temor a que queden inaccesibles porque la aplicacin con que se crearon ya no exista. Excelente en la reutilizacin de los datos El uso de XSLT que veremos ms adelante permite la transformacin de los datos en estructuras diferentes segn las distintas necesidades bajo el principio una fuente, mltiples usos, facilitando as su reutilizacin. Por ejemplo un nico XML permitira generar medienta XSLT versiones HTML, CSV, XLS... Comprensible tanto por mquinas como por personas Al contrario que especificaciones como CSV la definicin textual de XML permite estructurar los datos de manera comprensible tanto para

las personas como para ordenadores. Los datos son descritos mediante lenguaje de marcado XML utiliza un lenguaje de marcado de manera similar a como lo hace HTML, por lo que resultar sencillo de entender para aquellas personas ya familiarizadas con dicha lenguaje. As, un elemento en XML sera de la forma: <etiqueta atributo=valor_atributo>dato</etiqueta> De esta forma un dato puede ser marcado mediante una etiqueta y detallado por medio de atributos. Estructura los datos en forma de rbol XML permite la estructuracin de los datos de manera jerrquica anidndolos dentro de otros. En virtud a la especificacin XML existir un nico elemento raz del que colgarn el resto de elementos que a su vez pueden tener otros elementos hijo. La coleccin de todos los elementos anidados a partir del elemento raz se le conoce como documento XML. Se usa para crear nuevos lenguajes Muchos lenguajes que se usan en Internet han sido creados con XML. Algunos ejemplos: XHTML WSDL para describir servicios web WAP y WML son lenguajes de marcado para dispositivos mviles RSS son lenguajes para servicios de suscripcin de noticias RDF y OWL son para describir recursos y ontologas SMIL es para aplicaciones multimedia para la web

[snippets/ejemplo_2_1_1.txt]

2.1.2. Evolucin de XML


Los orgenes del XML hay que buscarlo en los lenguajes de marcado que trataban de solventar la necesidad de los autores de estructurar el texto conforme a un formato determinado. Desde que se usa la tipografa en medios informticos el autor no slo se dedica a introducir texto sino que tambin indica cmo desea que aparezca en la pantalla o el papel. Lenguajes de marcado Por tanto es necesario que el archivo que guarda el documento sea

capaz de almacenar tambin la descripcin del formato. Aunque ahora estn extendidos los editores WYSIWYG (What You See Is What You Get, Tal como lo ves es como queda), antes se determinaba la presentacin mediante marcas de formato introducidas por el autor. Ejemplos de marcas seran Comenzar negritas, tamao de fuente: 16px, Salto de lnea, Tabla, etc. A parte de las marcas de formato existan otras marcas conocidas como etiquetas o cdigos que daban sentido al documento, por ejemplo precio, fecha, ttulo. Este tipo de marcas facilita a los sistemas informticos la compresin de los documentos. GML A finales de los 60, la empresa IBM encarg a Charles F Goldfard que diseara un sistema estndar para la gestin y edicin de documentos, ya que muchos sistemas de IBM no podan comunicarse entre s, debido al distinto sistema de descripcin que utilizaban. Charles Goldfard, auxiliado por Ed Mosher y Ray Lorie, cre un lenguaje nico de marcado que permitiese entenderse a los diferentes documentos generados por distintos sistemas, reuniendo en una misma etiqueta el formato y la descripcin del contenido. A este desarrollo se le denomin marcado generalizado, siendo una alternativa al marcado de formato y al WYSIWYG. La idea del marcado generalizado era que cada etiqueta sirviese tanto para describir el aspecto exterior del texto (el formato), como para indicar su contenido (el tipo de informacin o dato), por lo que se dise un sistema muy completo y general, capaz de dar solucin a cualquier tipo de documento. La solucin utilizaba etiquetas de descripcin de datos relacionadas con plantillas de estilos de formato, consiguiendo as los dos objetivos. A este "lenguaje" se le denomin GML (Generalized Markup Language, lenguaje de marcado generalizado), siglas que curiosamente coinciden con las iniciales de sus autores (Goldfarb, Mosher, Lorie). SGML Hasta 1974 se continu el desarrollo del GML, y entre 1978 y 1986, el propio Goldfarb coordin el equipo tcnico que desarroll la norma internacional ISO 8879, que describe lo que desde entonces se conoce como SGML (Standard Generalized Markup Language, lenguaje de marcado generalizado estndar). Este equipo sigue desarrollando el SGML y las normas asociadas al mismo. HTML

En el ao 1989, el investigador del CERN (Suiza) Tim Berners-Lee, se propuso poner fin a la gran dificultad que exista entre los investigadores para publicar sus documentos, decidindose por un sistema basado en el hipertexto, que permite acceder a una determinada informacin ms directamente que un tpico sistema secuencial. Otro investigador llamado Anders Berglund, que conoca el SGML, le aconsej que lo utilizase para su proyecto. Tim denomin HTML (Hiper-Text Markup Language, lenguaje de marcado de hipertexto) al lenguaje que cre, que fue terminado en un corto periodo de tiempo. Tambin dio el nombre de World Wide Web (telaraa de mbito global) a su sistema de hipertexto para la Red Informtica Mundial. La sencillez de los dos procesos ha sido la clave principal de su xito. Aunque HTML era un subconjunto de SGML, y por lo tanto cumpla los objetivos de los lenguajes de marcado generales (siempre en la direccin de Internet), a travs de su evolucin ha ido decantndose hacia el lado de los lenguajes de marcas dirigidos al formato, perdiendo parte de su utilidad. Entre la permisividad sobre el cdigo HTML que incorporan los visualizadores ms utilizados, la proliferacin de aplicaciones de autor que generan cdigo HTML sin depurar, la existencia de etiquetas propietarias no soportadas por las normas, y la tendencia de muchos usuarios a utilizar el HTML como un lenguaje de formato, se lleg a un punto difcil de controlar. XHTML Para intentar superar el punto lmite al que se haba llegado con el HTML, el W3C decidi apoyarse en el SGML para presentar una buena solucin al formateo de los documentos, desarrollando las normas que regulan el lenguaje de hojas de estilos para HTML que se denomina CSS (Cascading Style Sheets, hojas de estilo en cascada), capaz de especificar el formato de los documentos HTML, sin interferir en su marcado especfico, y tambin, ideando un mecanismo simple, conocido como XHTML (Extensible Hyper-Text Markup Language, lenguaje de marcado de hipertexto extensible) que permita incorporar abstracciones al HTML. XML Esta solucin solo tena un carcter provisional (aunque es probable que se utilice en mucho tiempo), pues en el fondo del asunto, se necesitaba un nuevo entorno que permitiese crecer y dar soluciones a las muchas y variadas necesidades que estaba pidiendo la Web. El resultado ha sido un desarrollo del W3C, aprovechando las principales ventajas del magnfico estndar SGML (del que es un subconjunto) y basado en la sencillez de la Web, que tiene el nombre de XML

(Extensible Markup Language, lenguaje de marcado extensible). Desde el 10 de febrero de 1998 est disponible la primera versin de la recomendacin del XML, a partir de la cual se estn desarrollando mltiples herramientas, aplicaciones, utilidades y normas adicionales, que poco a poco van imponiendo este potente entorno entre los profesionales del diseo web, sobre todo, desde la salida de la versin 5 de Internet Explorer, el visualizador web de Microsoft. Hay que recordar que XML no es un simple lenguaje de marcas, sino ms bien una normativa capaz de crear otros lenguajes de marcas, o sea, un "meta-lenguaje" de marcas. Est diseado para que pueda ser ejecutado desde cualquier plataforma, sistema operativo o entorno de trabajo. Adems de permitir el control de los proyectos de publicacin de informacin, tambin es capaz de gestionar el intercambio de datos por Internet. Las normas necesarias para el desarrollo de XML van publicndose poco a poco, siendo necesaria la conexin al W3C para estar al da en este constante proceso de evolucin.

2.1.3. Reglas bsicas definiendo documentos XML


Un documento XML debe respetar una serie de reglas bsicas que resumimos a continuacin: 1. XML es sensible a maysculas y minsculas. 2. El nombre de la etiqueta de inicio y final debe ser el mismo. 3. Todo documento XML tiene que tener un nico nodo raz del que penden el resto de elementos. 4. Ningn nombre de atributo puede aparecer ms de una vez en la misma etiqueta de inicio o de elemento vaco. En los siguientes apartados profundizaremos en ellas y daremos ejemplo concretos de su uso.

2.1.4. Documentos y ficheros XML


Un documento de texto se considera un documento XML si cumple la Regla de Documento. La Regla de Documento Cumplir la Regla de Documento significa que:
1. Contiene uno o ms elementos. 2. Hay exactamente un elemento, llamado raz o elemento

documento, del cual ninguna parte aparece en el contenido de

ningn otro elemento. 3. Para el resto de elementos, si la etiqueta de comienzo est en el contenido de algn otro elemento, la etiqueta de fin est en el contenido del mismo elemento. Es decir, los elementos delimitados por etiquetas de principio y final se anidan mutuamente de forma adecuada. Veamos algn ejemplo prctico de esta regla. El siguiente documento es incorrecto por la Regla de Documento 1: [snippets/ejemplo_2_1_9_1_ko.txt] Pero con un elemento si la cumplira: [snippets/ejemplo_2_1_9_1_ok.txt] El siguiente documento es incorrecto por la Regla de Documento 2: [snippets/ejemplo_2_1_9_2_ko.txt] En cambio este documento si cumple la Regla de Documento 2 ya que tiene un nico elemento raz: [snippets/ejemplo_2_1_9_2_ko.txt] El siguiente documento es incorrecto por la Regla de Documento 3 por estar los elementos incorrectamente anidados: [snippets/ejemplo_2_1_9_3_ko.txt] En el siguiente ejemplo la anidacin de los elementos es correcta: [snippets/ejemplo_2_1_9_3_ko.txt] Ficheros XML Los ficheros o archivos XML son archivos de texto que contienen un documento XML. Para facilitar su identificacin usan la extensin .xml, por ejemplo: mi-archivo.xml Podemos editar estos archivos con cualquier editor de texto normal como puede ser el Bloc de notas o Notepad, gedit, Word, etc. Sin embargo existen herramientas orientadas a programadores con multitud de funciones que ayudan a la lectura, creacin, mantenimiento y validacin de los ficheros XML y sus correspondientes DTD. Veremos algunos ejemplos en el apartado 2.1.10

2.1.5. Declaraciones XML

Prlogo Los documentos XML pueden empezar con un prlogo, en el que esencialmente se define: Una declaracin XML Una declaracin de tipo de documento Ambas partes son opcionales, pero en el caso de que aparezcan las dos, la declaracin XML tiene que aparecer antes que la declaracin de tipo de documento. Declaracin XML [snippets/ejemplo_2_1_5_1.txt] Se coloca al principio del documento y permite indicar: La versin de XML usada, por el momento la 1.0 Informacin sobre el tipo de codificacin de caracteres que estamos utilizando. En nuestro caso es el cdigo ASCII de 7 bits, que es un subconjunto del cdigo Unicode denominado UTF-8. No hubiese sido necesario declararlo, ya que es la establecida por defecto. Declaracin de tipo de documento [snippets/ejemplo_2_1_5_2.txt] En la declaracin del tipo de documento, asociamos la Definicin del Tipo de Documento o DTD respecto de la cual construimos el documento. Una DTD determina cmo se construye un documento XML, indicando que etiquetas, atributos y entidades se pueden usar y de qu forma se pueden emplear. Veremos sus uso en profundidad en la seccin 2.3 de este curso. En el ejemplo anterior se declara implcitamente en el propio documento XML, aunque tambin puede hacerse externa al documento e incluso de una forma mixta. Si la hubisemos escrito en un fichero "ejemplo.dtd" tendramos que referenciarla de la siguiente manera: [snippets/ejemplo_2_1_5_3.txt]

2.1.6. Elementos, atributos y datos


El elemento Como hemos mencionado antes, el elemento es la unidad bsica de expresin de los datos utilizada en un documento XML. Un elemento se compone de tres etiquetas:

Etiqueta de inicio representada como <nombre_elemento> Etiqueta de contenido, contenido o dato Etiqueta de fin como </nombre_elemento>

Por ejemplo: <name>Carlos Guevara</name> En general el nombre de los elementos puede establecerse libremente teniendo en cuenta que: Las etiquetas de inicio y fin deben coincidir Son sensibles a maysculas y minsculas El primer carcter tiene que ser alfabtico o un guin bajo _ Los siguientes caracteres deben ser alfabticos, numricos, guin bajo _, punto . o guin - Entre los elementos < y </ y el nombre de la etiqueta no pueden existir espacios en blanco. [snippets/ejemplo_2_1_6_1.txt] Datos o contenido del elemento Por su parte el contenido del elemento puede ser cualquier texto, nmero o signo de puntuacin, e incluso otros elementos como se ve en el siguiente ejemplo: [snippets/ejemplo_2_1_6_2.txt] Es posible anidar elementos indefinidamente segn nos convenga. En el ejemplo se puede ver que el elemento nombre se encuentra dentro del elemento director, que a su vez est dentro del elemento empresa que es el elemento raz del documento XML. Para facilitar la legibilidad y ahorrar cdigo, si un elemento no tiene contenido se puede usar la etiqueta de elemento vaco <nombre_elemento/>, en el ejemplo <apellido2/>. Atributos Para definir mejor el dato los elementos XML pueden tener atributos en pares de nombre/valor tal y como sucede en HTML. En XML los valores de los atributos siempre tienen que ir entre comillas dobles. Adems, ningn nombre de atributo puede aparecer ms de una vez en la misma etiqueta de inicio o de elemento vaco.

[snippets/ejemplo_2_1_6_3.txt]

2.1.7. Nombres XML y Referencias


Referencias a Entidades Las entidades o referencias a entidades predefinidas permiten usar caracteres especiales dentro del contenido de los elementos que de otra forma causaran errores. Las siguientes cinco entidades son predefinidas por la especificacin XML: Entidad Nombre Notacin < > & lt gt amp quot apos &lt; &gt; &amp; &quot; &apos;

Segn esta tabla, si necesitamos que aparezca un signo de < dentro del contenido de un elemento de nuestro XML tenemos que usar la entidad de nombre lt, que dentro del contenido se escribir con la notacin indicada &lt; tal y como se muestra en el siguiente ejemplo. [snippets/ejemplo_2_1_7_1.txt] Como veremos ms adelante en el punto 2.3 en XML es posible definir nuestras propias entidades y usarlas en nuestros documentos.

2.1.8. Comentarios y secciones CDATA


Comentarios Como ya hemos visto en alguno de los ejemplos anteriores es posible realizar comentarios en XML, para ello se colocan entre las marcas <!-- -->. Pueden colocarse en cualquier sitio excepto dentro de las declaraciones, etiquetas y otros comentarios. <!-- Esto es un comentario -->

Secciones CDATA Los marcadores CDATA permiten definir secciones en las que podemos introducir el texto que queremos sin que sea interpretado por el procesador de XML. <![CDATA[ Aqui puedo poner lo que quiera que no ser interpretado, por ejemplo <hola></hola> ] ]> Las secciones CDATA empiezan con los caracteres "<![CDATA[" y terminan con "]]>". Dentro de ellos podemos colocar cualquier cosa ya que no va a ser interpretado, con la salvedad de la cadena que indica el final de CDATA, "]]>", y evitar as que el procesador al encontrrsela entienda que la seccin CDATA ya ha terminado.

2.1.9. Trabajando con XML Bien Formados


En funcin de si un documento XML lleva asociada una DTD o no, podemos diferenciar dos tipos de documentos XML: Vlidos, aquellos que siguen las reglas de una DTD especfica. Bien formados (well-formed), que no tienen necesariamente una DTD asociada, pero siguen las reglas del XML al pie de la letra. XML Bien Formados Segn la especificacin, un objeto de texto es un documento XML bien formado si: Tomado como un todo, cumple la Regla de Documento. Respeta todas las restricciones de buena formacin dadas en la especificacin y vistas en los puntos anteriores. Cada una de las entidades analizadas que se referencia directa o indirectamente en el documento est bien formada. En los puntos anteriores hemos visto ejemplos correctos e incorrectos en la construccin de etiquetas y elementos, as como ejemplos la Regla de Documento. Con toda esta informacin ya estamos preparados para elegir un editor XML y generar nuestro primer documento XML.

2.1.10. Editores XML


Los ficheros XML como archivos de texto que son se puede editar con cualquier editor de textos que tengamos a mano. Sin embargo existen en el mercado editores y entornos de trabajo que ofrecen funcionalidades especficas a cualquiera que tenga que trabajar

frecuentemente con XML. Veamos a algunas de estas caractersticas. Sintaxis coloreada La mayora de editores multifuncin son capaces de colorear con diversos colores los diferentes componentes de un XML de manera que se facilita su lectura. As. se distinguen a simple vista las etiquetas, atributos, contenidos, secciones CDATA, comentarios e incluso las declaraciones. Los editores especializados tambin ofrecen colorear la sintaxis de los archivos DTD. Autoindentacin y desplegado La indentacin o sangra significa desplazar los elementos haca la derecha conforme se van anidando los elementos, de manera que se vea claramente que unos elementos estn dentro de otros. Es muy til tambin para documentos muy grandes poder plegar y desplegar todos los elementos hijos de un elemento concreto. Comprobacin de si est bien formado La mayora de editores que colorean el cdigo validan tambin si el XML est correctamente formado, marcando los posibles errores bien con colores fuertes o usando algn tipo de indicador. Validacin por DTD Si un documento XML tiene asociada una definicin de tipo de documento o DTD el editor puede comprobar si el XML que estamos construyendo respeta dicha DTD, indicando los posibles errores. Sugerencias a partir de la DTD Ms an, ciertos editores permiten editar un XML y que a la hora de escribir etiquetas y atributos nos sugieran las opciones vlidas contempladas en la DTD, facilitando as su uso y la velocidad de creacin de los mismos. Generacin automtica de DTD a partir de un XML Mediante esta funcionalidad es posible crear automticamente una DTD a partir de un XML que tengamos. Esto es muy til porque es ms sencillo pensar en trminos de XML y organizar la informacin a partir de casos conocidos, que construir de buenas a primeras el DTD. Habitualmente la DTD generada requiere de algunas ajustes, pero si el XML est bien estructurado nos ahorrar mucho trabajo. Algunos Editores XML En el mercado existen multitud de editores XML, veamos los que ms

relevancia han cosechado en los ltimos tiempos: EditiX Es muy prctico, funcional e intuitivo. Est escrito en Java por lo que funcionar en la mayora de sistemas operativos con la Java Runtime Environment instalada. Permite crear documentos basados en mltiples estndares (XSL, XHTML, W3C XML, XML, Schema, XSL-FO, etc.), y proporciona la posibilidad de crear y usar plantillas de diseo. Cuenta con una potente ayuda. Versin de pago con prueba gratuita de 30 das. Lo puedes encontrar en: http://www.editix.com/ OXygen OXygen es un editor XML basado tambin en Java con el que se pueden crear y editar documentos XML, XSL, TXT y DTD, con soporte para todas las particularidades del lenguaje XML. Resulta bastante flexible a la hora de editar cdigo, con soporte Unicode, cdigo de colores para los comandos de sintaxis, soporte para CSS, autocompletado de etiquetas XML y analizador de sintaxis, entre otras muchas posibilidades. Incorpora una interfaz de diseo ntido que hace ms cmodo la tarea de programacin, con soporte para drag-and-drop y permite previsualizar el trabajo tanto en formato XML como XHTML. Versin de pago con prueba gratuita de 30 das. Lo puedes encontrar en: http://www.oxygenxml.com/ Notepad ++ Es un Completo editor de programacin multilenguaje que te permite trabajar con diversos lenguajes (C, C++, Java, HTML, XML, PHP, JavaScript) de una forma muy cmoda y funcional. Tiene una interfaz muy clara y de diseo intuitivo, con soporte para abrir varios documentos al mismo tiempo, visualizar en ventana doble, cdigo de colores para los comandos, soporte para drag-and-drop y muchas otras funciones. El editor incluye adems una utilidad de zoom y te permite usar marcadores para moverte mejor dentro de los ficheros ms largos de cdigo. Notepad es gratis y libre bajo licencia GPL. Lo puedes descargar en: http://notepad-plus-plus.org/ XMLSpy

Tal vez sea la primera herramienta especializada en XML y todos sus derivados y sin duda, una de las ms completas. Permite la edicin de todo tipo de documentos XML, XSL, XML Schema, DTD y con ayudas para autocompletado, validacin, representacin visual en rbol de documentos, coloreado de sintaxis, etc. Versin de pago con prueba gratuita de 30 das. Lo puedes encontrar en: http://www.altova.com/xml-editor/ Otros editores XML o XMLPad de WMHelp (http://www.wmhelp.com/xmlpad3.htm) (gratuito) o XML Copy Editor (http://xml-copy-editor.sourceforge.net/) (gratuito; licencia GNU) o XMetaL (http://na.justsystems.com/) (comercial) o Stylus Studio (http://www.stylusstudio.com/) (comercial) o Liquid XML Studio (http://www.liquidtechnologies.com/xml-studio.aspx) (comercial; evaluacin de 30 das) o XMLmind XML Editor (http://www.xmlmind.com/xmleditor/) (comercial; versin Personal Edition gratuita, con funcionalidad reducida, en http://www.xmlmind.com/xmleditor/persoedition.html) o XMLwriter (http://xmlwriter.net/) (comercial) Entornos de desarrollo integrado Adems de estos editores ms o menos especializados los Entornos de Desarrollo Integrado o IDE suelen incluir soporte para el desarrollo con XML, generalmente por medio de plugins. Los IDE ofrecen en una nica aplicacin todas las herramientas que un programador puede necesitar para desarrollar sus aplicaciones Web como un depurador, un intrprete, un editor, un entorno de ejecucin, etc. Adems permite instalar nuevas herramientas y configurar el entorno a su medida mediante extensiones o plugins. Por ejemplo, los IDE ms conocidos por ser de cdigo abierto y por soportar mltiples lenguajes de programacin, incluyendo XML son: Eclipse IDE: http://www.eclipse.org/ NetBeans IDE: http://netbeans.org/

2.2. Trabajando con documentos XML

2.2.1. Transformaciones XSLT


Qu es XSLT El nombre viene de XSLT viene del ingls eXtensible Stylesheet Language Transformations o transformaciones basadas en el lenguaje extensible de hojas de estilo. De la misma forma que XML, XSLT es un lenguaje de programacin y sirve para convertir un documento XML en otro documento, por lo que es el lenguaje de hojas de estilo recomendado para XML y es mucho mas sofisticado que CSS. En XSLT se usan las hojas de estilos XSLT para describir reglas de transformacin en formato XML. Estas reglas son ledas por una aplicacin llamada Procesador XSLT para convertir el XML seleccionado en otro documento XML, HTML o incluso en formato de texto. [images/2.2.1.1: Transformacin de un documento con XSLT] Las utilidades de las hojas de estilo XSLT son mltiples. Permiten mantener una nica fuente de datos en XML y a partir de la misma generar mltiples documentos segn las necesidades. Por ejemplo podemos tener una hoja de estilos XSLT para presentar la informacin en HTML a partir del documento XML original, y podemos tener otra para presentarla para mviles WAP, otra para presentarla como un documento PDF listo para la impresin o incluso otra para servir los datos a una aplicacin externa mediante un servicio Web. Es decir, podramos tener todas las hojas de estilo XSLT que necesitemos segn el dispositivo y la aplicacin a la que vayan destinados los datos y al uso que se vaya a hacer de ellos. Transformando un documento XML con hojas de estilo XSLT Vamos a ver un ejemplo de cmo convertir un documento XML en un HTML. Lo primero que necesitamos es el documento XML llamado empresa.xml: [snippets/empresa.xml] Tambin necesitamos una hoja de estilos XSLT, en este caso queremos dar la bienvenida al director en un navegador web, para lo que creamos una hoja de estilos XSLT de nombre empresa-tohtml.xsl:

[snippets/empresa-to-html.xsl] Lo siguiente que necesitamos es un procesador XSLT. Hay navegadores web que lo llevan incorporado en sus versiones recientes, como es el caso de Firefox o Internet Explorer. Si abres con alguno de ellos el archivo empresa.xml vers el resultado de la transformacin realizada que mostrar algo as: Buenos das, Don Lluis Le apetece un caf? Que se correspondera con el HTML siguiente: [snippets/empresa.html] Cmo ha sucedido la transformacin? En primer lugar fijmonos en el documento XML origen, mediante la siguiente lnea se le indica que hoja de estilos XSLT hay que usar para la transformacin de manera similar a como se hara con una CSS externa: <?xml-stylesheet type="text/xsl" href="empresa-to-html.xsl"?> Ahora que el procesador XSLT sabe que hoja de estilos XSLT tiene que usar, vamos a ver que hace la hoja de estilos empresa-tohtml.xsl. Lo primero tiene que indicar que se trata de una hoja de estilos XSLT: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> Despus hay que establecer qu tipo de documento va a generar la conversin, en este caso HTML y para eso se usa la siguiente instruccin: <xsl:output method="html"/> A partir de aqu definimos nuestras plantillas o templates usando la sentencia xsl:template. A grandes rasgos las plantillas XSLT permiten definir reglas de transformacin que se disparan cuando se produce cierta condicin en el procesamiento del documento de

entrada. En este caso mediante el atributo match=/ se indica al procesador XSLT que cuando estemos en el elemento raz del documento XML se ejecute la transformacin definida por la plantilla, devolviendo el HTML de la misma y ejecutando la sentencia: <xsl:value-of select="empresa/director/nombre" /> Dicha sentencia permite devolver el valor de todos los elementos nombre que se encuentren dentro de un elemento director y a su vez dentro de un elemento empresa; en nuestro ejemplo el valor es LLuis. Ms sobre XSLT En el apartado anterior hemos visto un ejemplo sencillo del lenguaje XSLT, sin embargo existen ms sentencias y estructuras de control para realizar transformaciones completjas. Si quieres profundizar ms puedes hacerlo a partir de los cursos y referencias de la seccin de enlaces.

2.2.2. XPath
Para transformar un documento XML es necesario algo ms que una hoja de estilos XSLT: necesitas designar claramente el elemento del documento que quieres transformar y cmo transformarlo. XPath es una recomandacin W3C de Noviembre de 1999 para designar partes concretas de un documento XML. API: Application Programming Interface o Interfaz de programacin de aplicaciones es el conjunto de funciones y procedimientos que ofrece una librera para ser utilizadas por otra aplicacin. XPath es por tanto un API que permite a XSLT designar partes de un documento XML para su transformacin. De hecho es una pieza fundamental de XSLT y ya lo hemos utilizado en el punto anterior: <xsl:value-of select="empresa/director/nombre" /> La expresin en negrita es una expresin de XPath. xPath modela un documento XML como un rbol de nodos y define un modo de calcular un valor de cadena para cada tipo de nodo. La unidad sintctica bsica en xPath es la expresin, que son evaluadas para producir un objeto del documento XML.

Expresiones de ruta XPath XPath utiliza expresiones para seleccionar nodos o conjuntos de nodos de un documento XML. Estas expresiones como la mostrada en el caso anterior se parecen mucho a las que se usan en los sistemas de carpetas tradicionales de los ordenadores, al fin y al cabo ambos forman un rbol de datos. La evaluacin de las expresiones tiene lugar respecto a un contexto (el punto de partida), este puede ser: - un nodo (nodo contextual) - dos nmeros enteros positivos que se corresponden a la posicin contextual y el tamao contextual Funciones Estndar de XPath XPath incluye mas de 100 funciones y operadores en su especificacin. Estas funciones se utilizan para valores de tipo cadena, valores numricos, comparaciones de fecha y hora, manipulacin de nodos, manipulacin de secuencias, valores booleanos y mucho ms. La sintaxis para la construccin de rutas es: nombreNodo Selecciona todos los nodos de nombre nombreNodo. / Selecciona el nodo raz o nodos hijo del nodo actual. Si la ruta empieza por / significa que se evala sobre el nodo raz, si no se evala sobre el nodo actual o contexto. // Selecciona todos nodos hijo, nieto... del nodo actual. . Selecciona el nodo actual. .. Selecciona el nodo padre del nodo actual. @ Selecciona atributos del nodo actual [ ] Selecciona nodos que cumplen una propiedad. Las expresiones entre [ y ] se suelen llamar predicados. * Selecciona cualquier nodo o atributo | Selecciona mltiples expresiones de forma simultnea Vamos a ver un ejemplo, supongamos que tenemos un documento XML de este tipo: <libros> <libro> <autor>Soren Kierkegaard</autor> <titulo>Fear and Trembling</titulo> <precio>50.0</precio>

</libro> <libro> <autor>Miguel de Unamuno</autor> <titulo>Niebla</titulo> <precio>40.0</precio> </libro> <libro> <autor>Miguel de Unamuno</autor> <titulo>La ta tula</titulo> <precio>23.0</precio> </libro> <libro> <autor>George Orwell</autor> <titulo>1984</titulo> <precio>20.0</precio> </libro> </libros> Y el cliente de turno nos pide un informe con: - los libros escritos por Miguel de Unamuno - los libros por debajo de 30 - los libros que contengan la palabra fear en el ttulo Hace tiempo, la solucin hubiera sido parsear el XML y buscar los elementos que cumplen las condiciones, bien, pues con xPath obtendremos la solucin mucho ms fcil, simplemente definiendo las expresiones y evalundolas en un script de PHP o JSP. /libros/libro[autor="Miguel de Unamuno"] /libros/libro[precio < 30.0] /libros/libro[contains(titulo,"Fear")]

2.2.3. XQuery
XQuery es un lenguaje de consulta diseado para colecciones de datos XML, de semntica similar al SQL que adems incluye alguna capacidad de programacin. XQuery utiliza expresiones XPath para acceder a determinadas partes del documento XML y aade expresiones similares a las usadas en SQL y conocidas como expresiones FLWOR. Las expresiones

FLWOR toman su nombre de los cinco tipos de sentencias de las que pueden estar compuestas: For Let Where Order by Return XQuery es idneo para extraer y manipular informacin de documentos XML, especialmente de aquellas fuentes de datos que puedan ser representadas por XML como bases de datos relacionales o documentos ofimticos. Tambin ofrece la capacidad de generar como resultado de la consulta otros documentos XML mediante constructores definidos como expresiones dentro del propio lenguaje. XQuery se basa en el modelo en rbol de la informacin contenida en el documento XML identificando 7 tipos distintos de nodo: elementos, atributos, nodos de texto, comentarios, instrucciones de procesamiento, espacios de nombres y nodos de documentos. Por el momento XQuery no incluye la capacidad de actualizar los documentos XML ni de realizar bsquedas de textos, aunque se est estudiando su posible incorporacin en prximas versiones de la especificacin. Veamos un ejemplo, partiendo del siguiente XML de nombre directorio-empresas.xml: [snippets/directorio-empresas.xml] El siguiente cdigo XQuery devuelve un listado HTML con todas las empresas y sus directores: [snippets/directores.xquery] Como se puede ver, Xquery hace uso de Xpath para seleccionar partes del documento XML: doc("directorio-empresas.xml")//empresa $empresa//director $empresa/nombre/text() Si quieres ampliar tus conocimientos de XQuery en la seccin de

Enlaces tienes ms informacin.

2.2.4. DOM: Documento Object Model


La especificacin DOM o Modelo de Objetos del Documento, es una recomendacin de la W3C (World Wide Web Consortium), que es la organizacin de estndares para tecnologas relacionadas con Internet. En DOM, cuando se estn procesando, los documentos XML y los documentos HTML se modelan como una estructura de rbol conocida como rbol DOM. Las aplicaciones externas pueden utilizar este rbol DOM y los nodos incluidos (elementos y nodos atributo, etc) para realizar operaciones en los documentos XML y HTML. La especificacin DOM define los diferentes "niveles" de DOM: cuanto mayor sea el nivel, mayores son las caractersticas avanzadas que soporta. Segn la especificacin del DOM, todo el documento XML se carga de una sla vez en la memoria del sistema, lo que permite la creacin de nuevos nodos, el movimiento o su eliminacin de manera sencilla. Por tanto, si guardamos el ltimo rbol DOM existente en la memoria podemos crear un nuevo documento XML o la actualizar el que ya tenamos. Uno de los mayores inconvenientes de DOM es el hecho de que un documento XML debe ser analizado completamente la primera vez que se construye el rbol DOM, as como el hecho de que todo el documento XML debe ser cargado en la memoria. Por tanto, cuanto mayor es el tamao del documento XML, mayor es la sobrecarga en trminos de procesamiento y de memoria utilizada, lo que puede ser un problema con documentos XML muy grandes.

2.2.5. XSL-FO
La recomendacin W3C de octubre de 2001 Extesible Stylesheet Language (XSL) Version 1.1 aglutina las dos especificaciones anteriores: XSLT como lenguaje para la transformacin de documentos XML XSL-FO como un vocabulario XML para especificar semnticas de formato El nombre oficial es por tanto XSL en vez de XSL-FO, y se usa XSLT

para referirse a las Transformaciones XSL. Este apartado se centra en el segundo punto XSL-FO (XSL Formatting Objects) u Objetos de Formato para XSL, es decir, es un lenguaje XML que permite definir sentencias que describen cmo se debe presentar un documento por pantalla, papel u otros medios. La unidad bsica en un documento XSL-FO es el Formatting Object y hacen referencia a pginas, prrafos, tablas, listas, etc. En el siguiente ejemplo tenemos un documento XSL-FO sencillo que aplica distintos formatos a la pgina del documento a visualizar. [snippets/ejemplo_xslfo.xsl] Existen dos vas por las que podemos aplicar formatos a los datos de un XML y obtener un documento XSL-FO: 1. Generar directamente un documento XSL-FO con los datos y la informacin de formato incrustada dentro del mismo. 2. Transformar un documento XML que slo contenga datos con una hoja de estilos XSLT que contenga la informacin de formato. En el segundo caso conseguimos independizar los datos de la presentacin, permitiendo tener varias hojas de estilo XSLT segn el uso que le quedamos dar a los datos, por ejemplo para distintos entornos o dispositivos. Una vez que tenemos el documento XSL-FO puede ser procesado con un programa llamado Procesador XSL-FO y obtener el documento final en distintos formatos. [imagen/2.2.5.1: arquitectura de XML] En el ejemplo anterior podemos ver una arquitectura de documentos XML donde se ven las dos posibles maneras de generar documentos XSL-FO. En rojo se muestra la generacin directa del documento XSL-FO a partir de los datos. La otra opcin es generar un documento XML de datos fuente para todos los procesos, lo que permite que a partir de l se realicen transformaciones XSLT para generar diferentes documentos segn los diferentes usos (XHTML, WAP, RSS, CSV, Servicios Web...) e incluso dotndole de informacin de formato mediante un XSL-FO.

El procesador XSL-FO podra generar a su vez documentos en mltiples formatos como PDF, DOCX o RTF.

2.2.6. SAX: Simple API para XML


SAX o API Simple para XML, en lugar de ser una especificacin recomendada por la W3C, es una especificacin creada a travs de la lista de correo XML-DEV y permite buscar y extraer datos de un documento XML de manera sencilla. El procesamiento a travs de SAX es ligero y rpido en contraste con el procesamiento que realiza DOM. SAX carga los elementos de un documento XML de manera secuencial conforme los va leyendo sin modelarlos como un rbol. Adems, es una API orientada a eventos detectando cuando empieza y termina un elemento o un conjunto de caracteres y notificando a la aplicacin de este hecho mediante un evento. Las aplicaciones pueden definir manejadores para estos eventos y as realizar las acciones oportunas. La principal ventaja de SAX es que el procesamiento puede llevarse a cabo mientras se analiza el documento XML y no hay necesidad de cargar todo el documento primero como lo hace DOM. Sin embargo, SAX carece de un API de actualizacin de los documentos XML por lo que las modificaciones de documentos XML deben ser manejados desde la aplicacin. Adems, SAX slo carga un documento XML en orden secuencial, por lo que las referencias adelante o hacia atrs no son posibles. En definitiva, SAX es especialmente adecuado para la bsqueda y extraccin de datos de los documentos XML o cuando la capacidad de procesamiento y la cantidad de memoria sean criticas.

2.3. Validacin: DTD, XML Schema y Namespaces


2.3.1. Validacin de documentos XML
Como ya hemos visto para que un documento XML se considere vlido debe seguir la definicin de una DTD o Definicin de Tipo de Documento. Si no tiene una DTD asociada puede estar bien formado si sigue las normas de la especificacin XML al pie de la letra.

Por tanto, un XML vlido siempre estar bien formado. Los editores XML especializados permiten tanto validar un XML contra una DTD como comprobar si estn bien formados. Procesador XML Un Parser XML o Procesador XML es un programa informtico capaz de interpretar un documento XML. Para ello trocea o parsea el documento en cachos pequeos con sentido como pueden ser las etiquetas, los atributos, los elementos o el contenido, creando una representacin interna del mismo. A partir de esta representacin un editor XML es capaz de realizar validaciones contra la DTD o comprobar si el documento XML est bien formado. Los Procesadores XML los podemos encontrar escritos multitud de lenguajes como Java, PHP, Ruby, C++, etc. Adems, la mayora de herramientas especializadas incluyen uno con el que realizar las validaciones de la DTD de un archivo XML as como que est bien formado.

2.3.2. Document Type Definition


Ya hemos hablado varias veces acerca de las DTD o Definicin de Tipo de Documento, que de alguna forma definen cmo puede ser un documento XML, es decir, definen el esquema del documento. Existen varios lenguajes de definicin de esquemas para documentos XML, pero el definido por la W3C para la especificacin XML 1.0 es el DTD. Existe otro lenguaje de definicin de esquemas ms estricto creado por la W3C, llamado XML Schema, y otros vendedores has definido sus propios lenguajes de definicin de esquemas. Sin embargo nos centraremos en los dos que ha defindco la W3C. Podemos decir entonces que un DTD o Definicin de Tipo de Documento es una descripcin de estructura y sintaxis de un documento XML, cuya funcin principal es la descripcin de la estructura de datos, de manera que podamos usar una estructura comn y mantener la consistencia entre todos los documento que usen la misma DTD. Adems, si un documento XML utiliza una DTD, las aplicaciones que lo usen conocen la estructura de los elementos y la descripcin de los datos que trae consigo el documento, por lo que puede ser validado por los procesadores XML. Cualquier documento puede incluir una DTD, aunque no es obligatorio. La DTD puede ir tanto dentro del prlogo del documento XML:

[snippets/directorio-empresas-dtd-inline.XML] O en un archivo externo para poder ser usada por varios documentos XML, as que la podemos referenciar en el prlogo como: <!DOCTYPE nombre_elemento_raiz SYSTEM "archivo.dtd"> Veamos un ejemplo: [snippets/directorio-empresas-dtd.xml] Qu describe una DTD? Las DTD se emplean para determinar la estructura de un documento XML mediante etiquetas con las que describe: Elementos: indicando qu etiquetas puede contener el documento XML y el contenido de dichas etiquetas Atributos: qu atributos puede tener un elemento y los valores que puede tomar el atributo Estructura: el orden de las etiquetas dentro del documento y cmo se anidan Entidades: declaracin de entidades propias

2.3.3. Estructura de una DTD


Declaracin de Tipo de Elemento En una DTD es muy importante una correcta definicin de los elementos que conformarn nuestro documento XML. Podemos declarar un tipo de elemento usando la siguiente etiqueta: <!ELEMENT nombre_elemento (modelo_de_contenido)> Mediante esta declaracin asignamos al elemento de nombre nombre_elemento un modelo de contenido que definiremos en el modelo_de_contenido. Mediante el modelo de contenido podemos definir si el elemento contiene texto o nmero, o por el contrario contiene otros elementos hijos, el orden en el que aparecen y la cantidad de cada uno de ellos. Modelo de contenido: textos y nmeros En DTD no existe la posibilidad de distinguir entre valores numricos o textos como contenidos permitidos dentro de un elemento, ambos usan la declaracin de tipo del elemento: <!ELEMENT actividad (#PCDATA)> Mediante #PCDATA indicamos que el contenido del elemento actividad es un valor alfanumrico. Los siguientes casos seran

vlidos: <actividad>comercializadora de alimentos</actividad> <actividad>10</actividad> <actividad>Actividades de tipo 10</actividad> Como DTD no permite distinguir entre valores numricos y no numricos, tendra que ser la aplicacin la que se encargase de dicha comprobacin en caso de ser necesaria. Modelo de contenido: elementos hijo Para definir que un elementos hijos dentro del modelo de contenido, hay que indicar el nombre del elemento hijo junto al orden de aparicin y el nmero de veces que puede aparecer.
Definiendo el orden de aparicin

Cuando un elemento puede contener varios elemento hijos es obligatorio especificar el orden de aparicin, bien separando los elementos con una coma , si queremos que el orden sea extrictamente el especificado o usando el caracter | para indicar que no importa el orden. Por ejemplo, con la siguiente definicin de tipo de documento se define que los elementos hijo del elemento empresa son exactamente los elemento director, actividad y nombre y siempre en ese orden: <!ELEMENT empresa (director,actividad,nombre)*> [snippets/ejemplo_2_3_3_1.xml] Para definir que el orden de aparicin no importa, lo haramos como: <!ELEMENT empresa (director|actividad|nombre)*> En resumen, dependiendo de cmo separemos dos elementos: , Aparecen en el orden especificado | Puede aparecer cualquiera de los dos primero

Definiendo el nmero de apariciones

Podemos definir cuantas veces puede aparecen un elemento, para

ello tenemos los siguientes operadores: * + ? Si no se indica Puede aparecer 0 o ms veces Puede aparecer 1 o ms veces Puede aparecer 0 o 1 vez Aparece una vez

En DTD no es posible indicar un nmero exacto de apariciones (por ejemplo 3 veces, o entre 2 y 6 veces, etc). Por ejemplo, para definir que que una empresa tiene una actividad, un nombre y cero o ms elementos director en cualquier orden, haramos: <!ELEMENT empresa (nombre, actividad, director*)> Podemos especificar un grupo mediante el uso de parntesis y aplicar cualquiera de los operadores anteriores sobre el mismo. Por ejemplo, para definir que una empresa puede tener cero o ms elementos nombre, actividad y director, en cualquier orden: <!ELEMENT empresa (director|actividad|nombre)*> Declaracin de atributos No vamos a profundizar mucho en la declaracin de atributos, sin embargo si que vamos a dar unos sencillo ejemplos para poder reconocer su definicin. Los atributos se definen como: <!ATTLIST nombre_elemento nombre_atributo tipo_atributo valor_por_defecto> Por ejemplo, si queremo definir un atributo forma_legal para el elemento empresa y que pueda tener los valores SA, SL y Coop haramos: <!ATTLIST empresa forma_legal (SA | SL | Coop) SL>

Adems es posible usar condicionantes para indicar que un atributo obligatoriamente ha de tener un valor, para ello ponemos #REQUIRED al final de la declaracin del atributo. Tambin es posible indicar que un atributo no adopte un valor por defecto usando la condicin #IMPLIED. Tipos de atributos
CDATA

Se usa para cualquier texto. <!ATTLIST mensaje fecha CDATA #REQUIRED> <mensaje fecha="18 de Julio de 1996">
NMTOKEN

Para caracteres vlidos para nombrar cosas (letras, nmeros, puntos, guiones, subrayados y los dos puntos). <!ATTLIST mensaje fecha NMTOKEN #REQUIRED> <mensaje fecha="15-7-1999">
Enumerados

Permiten definir un conjunto reducido de opciones <!ATTLIST mensaje prioridad (normal | urgente) normal>
Notaciones

El valor del atributo sigue una notacin declarada mediante ! NOTATION, en este caso en la propia especificacin de HTML de la W3C: <!ATTLIST email fecha NOTATION (ISO-DATE | EUROPEANDATE) #REQUIRED> <!NOTATION HTML SYSTEM "http://www.w3.org/Markup">
ID e IDREF

El tipo ID permite que un atributo determinado tenga un nombre nico que podr ser referenciado por un atributo de otro elemento que sea de tipo IDREF. <!ELEMENT enlace EMPTY> <!ATTLIST enlace destino IDREF #REQUIRED> <!ELEMENT seccion (parrafo)*> <!ATTLIST seccion ref ID #IMPLIED> En este caso una etiqueta <enlace destino=seccion3> hara referencia u una <seccion ref=seccion3>. Declaraciones de entidades

Como vimos se usan para simplificar el documento XML y bsicamente son referencias a otros objetos. Las entidades pueden ser: Internas o Externas Analizadas o no analizadas Generales o Parmetro
Entidades generales internas

Son bsicamente abreviaturas que en momento son analizadas se reemplazan por su contenido. <!DOCTYPE texto[ <!ENTITY usa "Estados Unido de Amrica"> ]> <texto><titulo>La debacle econmica de los &usa;</titulo></texto>
Entidades generales externas analizadas

Son contenidos externos en cualquier otro sitio del sistema y pueden ser analizados. Por ejemplo XML o archivos de texto en otra parte del disco duro, en una pgina web o base de datos. <!ENTITY cabecera SYSTEM "http://www.miservidor.com/cabecera.xml">
Entidades no analizadas

Hacen referencia a objetos que no pueden ser analizados, como imgenes, ejecutables, etc. Por ejemplo: <!ENTITY logo SYSTEM "http://www.miservidor.com/logo.png">
Entidades parmetro externas e internas

Son aquellas entidades que slo pueden usarse en la DTD y no en documento XML. Se usan para reutilizar el cdigo DTD y se crean e invocan usando el carcter % en vez de &. <!DOCTYPE texto[ <!ENTITY % elemento-usa "<!ELEMENT USA (#PCDATA)>"> ... %elemento-usa; ]> O externa: <!DOCTYPE texto[ <!ENTITY % elemento-usa SYSTEM "usa.ent"> ...

%elemento-usa; ]> Limitaciones de las DTD Estas son las reglas bsicas de definicin de un DTD. Como vemos existen algunas limitaciones y no podemos definir algunas cosas, como por ejemplo el contenido de tipo numrico; elementos locales slo vlidos en ciertos elementos; elementos con contenido mixto de texto y elementos hijos; o especificar los tipos de datos permitidos en un atributo. Esta necesidad llev a la creacin de otros lenguajes de definicin de esquema como el XML Schema.

2.3.4. XML Schema


Conforme se ha ido popularizando el uso de XML en las aplicaciones, ha ido aumentando la complejidad de los documento y la variedad de casos de uso, por lo que DTD se quedaba corto en muchos de estos casos. W3C introdujo como recomendacin XML Schema para poder definir la estructura de cualquier documento XML mediante este lenguaje de definicin de esquemas, reemplazando as a las DTD. XML Schema es a su vez XML y como tal sigue las reglas propias de los documentos XML.

2.3.5. Beneficios del uso de esquemas XML


La ventaja de los XML Schemas con respecto a los DTDs son: Usan sintaxis de XML, al contrario que los DTDs. Permiten especificar los tipos de datos con mucha precisin. Son extensibles, por ejemplo, los usuarios pueden definir sus propios tipos de datos. Soportan espacios de nombres (namespaces). Un XML Schema permite definir: Elementos que pueden aparecer en el documento Atributos que aparecen en los elementos Que elementos dependen de otros Orden de los elementos Cantidad de elementos hijos Tipo de datos de elementos y atributos Valor por defecto y valor fijo de elementos/atributos

2.3.6. Estructura de los Schemas XML


Elemento raz Como documento XML todo XML Schema debe tener un nido elemento raz, en este caso se llama <schema>. <?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> </xs:schema> El fragmento siguiente: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> indica que los elementos y tipos de datos usados en el esquema vienen del espacio de nombres http://www.w3.org/2001/XMLSchema y deben ser escritos precedidos con xs. Namespaces O espacio de nombres es un identificador que permite agrupar un conjunto de nombres de atributo y elementos, de manera que podamos distinguir entre varios espacios de nombres precediendo cada elemento con dicho identificador. En el ejemplo anterior se define el espacio de nombres ws. Elemento simple Permiten definir elementos con contenido sin elemento hijos ni atributos: <xs:element name="nombre_elemento" type="tipo_dato"/> Tipos de datos Se usan tanto para definir el contenido de los elementos como el de los atributos. Tipos de datos generales: Tipo xs:Entero xs:positiveEntero xs:negativeEntero xs:nonPositiveEntero Representacin Entero (precisin infinita) Enteros positivos (precisin infinita) Enteros negativos (precisin infinita) Enteros negativos incluyendo 0 (precisin infinita)

xs:nonNegativeEntero Enteros positivos incluyendo 0 (precisin infinita)

xs:byte xs:unsignedByte xs:short xs:unsignedShort xs:int xs:unsignedInt xs:long xs:decimal xs:float xs:double xs:Boolean xs:string

Entero representado por 8 bits Entero representado por 8 bits (sin signo) Entero representado por 16 bits Entero representado por 16 bits (sin signo) Entero representado por 32 bits Entero representado por 32 bits (sin signo) Entero representado por 64 bits (sin signo) Nmero decimal (precisin infinita) Precisin sencilla coma flotante (32-bit) Precisin doble coma flotante(64-bit) Booleano Cadena de texto

Tipos de datos para fecha y tiempo: Tipo xs:time xs:dateTime Representacin Hora del da Fecha y hora de un da

xs:date xs:gYear

Fecha Ao

xs:gYearMonth Ao y mes xs:gMonth Mes

xs:gMonthDay Mes y da xs:gDay Da

Tipos de datos de compatibilidad con DTD: Tipo xs:ID xs:IDREF xs:IDREFS xs:ENTITY xs:ENTITIES xs:NOTATION xs:NMTOKEN Representacin Especificacin XML 1.0 para tipo ID Especificacin XML 1.0 para tipo IDREF Especificacin XML 1.0 para tipo IDREFS Especificacin XML 1.0 para tipo ENTITY Especificacin XML 1.0 para tipo ENTITIES Especificacin XML 1.0 para tipo NOTATION Especificacin XML 1.0 para tipo NMTOKEN

xs:NMTOKENS Especificacin XML 1.0 para tipo NMTOKENS

Es posible definir un elemento por defecto mediante el atributo default e incluso establecer un valor fijo mediante el atributo fixed. Adems el usuario puede definir sus propios tipos de datos. Ejemplos: <xs:element name="color" type="xs:string" default=rojo/> <xs:element name="age" type="xs:Entero" fixed=18/> <xs:element name="dateborn" type="xs:date"/> Atributos Mediante el elemento attribute podemos definir atributos: <xs:attribute name="nombre_atributo" type="tipo_dato"/>
Opcionales o requeridos

Por defecto los atributos son opcionales, aunque se puede establecer como requeridos usando el atributo use, on incluso como prohibido si no queremos que se puede completar: <xs:attribute name="lang" type="xs:string" use="optional"/> <xs:attribute name="lang" type="xs:string" use="requered"/> <xs:attribute name="lang" type="xs:string" use="prohibited"/>
Restricciones a los valores

Es posible limitar los valores de un campo numrico: <xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element>
Restringir a un conjunto de valores

Podemos limitar los valores de un atributo a un conjunto de valores determinado: <xs:element name="coche"> <xs:simpleType> <xs:restriction base="xs:string">

<xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>


Restriccin de largo

Es posible delimitar el nmero de caracteres de un texto, sea un elemento o atributo: <xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:element> Restricciones Estas son las restricciones ms comunes que se pueden usar. Restriccin enumeration Descripcin Define lista de valores aceptados

fractionDigits Nmero mximo de decimales. Mayor o igual que cero. length Nmero exacto de caracteres permitidos. Mayor o igual que cero.

maxExclusive Lmite superior para valores numricos. Debe ser menor que este valor. maxInclusive Lmite superior para valores numricos. Debe ser menor o igual que este valor. maxLength Mximo nmero de caracteres o elementos de lista permitidos.

minExclusive Lmite inferior para valores numricos. Debe ser mayor

que este valor. minInclusive Lmite inferior para valores numricos. Debe ser mayor o igual que este valor. Mnimo nmero de caracteres o elementos de lista permitidos. Define la secuencia exacta de caracteres. Nmero exacto de dgitos permitidos. Define como manejar los carcteres de blancos.

minLength

pattern totalDigits whiteSpace

Elementos complejos Un elemento complejo es un elemento formado por otros elementos o que tiene atributos. Los elementos que estn compuestos por otros elementos.
Indicadores de orden

Permiten definir el orden de los elementos hijo. xs:all, los hijos aparecen en cualquier orden pero solo una vez cada uno xs:sequence, establece el orden de aparicin de los hijos xs:choice, en el que slo puede aparecer uno de los hijos Para el siguiente XML: <director> <nombre>John</nombre> <apellidos>Smith</apellidos> </director> Podramos generar el XML schema: <xs:element name="director"> <xs:complexType> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="apellidos" type="xs:string"/>

</xs:sequence> </xs:complexType> </xs:element>

Indicadores de aparicin

maxOccurs: permite indicar un lmite superior de las veces que puede aparecer un elemento minOccurs: permite indicar un lmite inferior de las veces que puede aparecer un elemento

Un ejemplo, donde una persona puede tener entre 0 y 10 elementos hijo: <xs:element name="persona"> <xs:complexType> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="hijo" type="xs:string" maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>
Indicadores de grupo

Permiten definir conjuntos de elementos y ser reutilizados en otras partes de la definicin: <xs:group name="oficina"> <xs:sequence> <xs:element name="nombre" type="xs:string"/> <xs:element name="apellidos" type="xs:string"/> <xs:element name="cumple" type="xs:date"/> </xs:sequence> </xs:group> <xs:element name="persona" type="personaninfo"/> <xs:complexType name="personaninfo"> <xs:sequence> <xs:group ref="oficina"/> <xs:element name="pais" type="xs:string"/> </xs:sequence> </xs:complexType>

2.3.7. XML Namespaces


Los espacios de nombres permiten eliminar las ambigedades y solucionar los problemas de homonimia que se producen en los documentos, ya que en un mismo documento existen palabras con el mismo nombre (p.e. "capital"), pero con diferentes significados y espacios semnticos (trmino geogrfico/trmino econmicofinanciero). Por ejemplo, en el siguiente ejemplo el elemento nombre es ambiguo y se usa tanto para el nombre de la empresa como para el nombre del director: <?xml version="1.0" encoding="UTF-8"?> <empresa> <nombre>Comercializadora SL</nombre> <actividad>Comercializadora de alimentos saludables</actividad> <director> <nombre>Lluis</nombre> <apellido1>Vives Garca</apellido1> <apellido2/> </director> </empresa> Un espacio de nombres no es ms que un identificador nico que permite diferenciar elementos con el mismo nombre. Para que este identificador sea nico se pens en poner delante del nombre como prefijo, una URI o Identificador Uniforme de Recurso, que es una cadena de caracteres en una red o sistema y, que en el caso de internet, se corresponde con los enlaces web a los que estamos acostumbrados. Es muy importante tener en cuenta que los URIs slo se utilizan para que el nombre sea nico, no son enlaces, ni tienen que contener informacin, sin embargo, tambin los URIs sirven para acceder a recursos. Los XML Namespaces describen cmo se puede asociar una URI con cada etiqueta y atributo en un documento XML, si bien, para qu se utiliza el URI depende de la aplicacin que lea el URI. Por ejemplo, RDF (http://www.w3.org/TR/REC-rdf-syntax/) el estndar del W3C para metadatos, lo usa para enlazar cada metadato a un archivo definiendo el tipo de ese metadato). Una URI sigo siendo una cadena demasiado larga para ponerla delante de todos los elementos XML, ya que lo hara ilegible, para ello

podemos crear alias a las URIs que deseemos mediante el atributo xmlns seguido del nombre del Namespace: <?xml version="1.0" encoding="UTF-8"?> <empresa xmlns:negocio="http://www.negocio.com"> <negocio:nombre>Comercializadora SL</empresa:nombre> <negocio:actividad>Comercializadora de alimentos saludables</negocio:actividad> <negocio:director> <nombre>Lluis</nombre> <apellido1>Vives Garca</apellido1> <apellido2/> </negocio:director> </negocio:empresa> En el ejemplo anterior podemos ver como hemos definido el alias negocio a partir del URI http://www.negocio.com, por lo que ya podemos identificar claramente los elementos que pertenecen al espacio de nombres de un negocio. Podemos comprobar que la definicin del espacio de nombres slo es necesaria hacerla una vez y se aplica al propio elemento si no posee prefijo de espacio de nombres y a todos los elementos hijos. Si quisisemos ahora crear un espacio de nombres para personas, podramos hacer: <?xml version="1.0" encoding="UTF-8"?> <empresa xmlns:negocio="http://www.negocio.com"> <negocio:nombre>Comercializadora SL</empresa:nombre> <negocio:actividad>Comercializadora de alimentos saludables</negocio:actividad> <negocio:director xmlns:persona="http://www.persona.com"> <persona:nombre>Lluis</persona:nombre> <persona:apellido1>Vives Garca</persona:apellido1> <persona:apellido2/> </negocio:director> </negocio:empresa> De hecho ya habamos visto el uso de Namespaces antes, por ejemplo en los XML Schemas con el prefijo xs: <?xml version="1.0" encoding="UTF-8"?> <xs:schema

xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Libro"> <xs:complexType> <xs:sequence> <xs:element name="Ttulo" type="xs:string"/> <xs:element name="Autores" type="xs:string" maxOccurs="10"/> <xs:element name="Editorial" type="xs:string"/> </xs:sequence> <xs:attribute name="precio" type="xs:double"/> </xs:complexType> </xs:element> </xs:schema> Se pueden declarar mltiples prefijos de espacios de nombres como atributos de un nico elemento, como se muestra en el siguiente ejemplo: <?xml version="1.0"?> <!-- ambos prefijos de espacio de nombres estn disponibles a continuacin --> <lb:libro xmlns:lb=urn:loc.gov:libros xmlns:isbn=urn:ISBN:0395-36341-6> <lb:titulo>Ms barato que una Docena</lb:titulo> <isbn:numero>1568491379</isbn:numero> </lb:libro> Si no se especifica el carcter dos puntos y el nombre del espacio de nombres, entonces el nombre de espacio de nombres asociado es el del espacio de nombres por defecto en el mbito del elemento al que est adjunto la declaracin. <?xml version="1.0"?> <!-- los nombres no prefijados pertenecen a "libros" --> <libro xmlns=urn:loc.gov:libros xmlns:isbn=urn:ISBN:0395-36341-6> <titulo>Ms barato que una Docena</titulo> <isbn:numero>1568491379</isbn:numero> </libro> En resumen, los espacios de nombres sirven para evitar las colisiones entre elementos del mismo nombre, y en general, para distinguir los distintos grupos de elementos en un mismo documento. Cada espacio de nombres se asocia con una URI, que slo sirve

como identificador nico y no tiene por qu ser vlida.

2.4. Herramientas de trabajo con XML


2.4.1. Herramientas de Validacin
Como hemos visto los procesadores XML o parsers XML permiten interpretar un documento XML y modelizarlo mediante una estructura lgica que nos permita trabajar con l. Muchos de estos procesadores se encuentran en los editores ms comunes y en los ms especializados para facilitar la creacin de documentos XML. Tambin los podemos encontrar en los navegadores e incluso en entornos de trabajo integrados. Existen multitud de procesadores XML para los lenguajes ms conocidos, veamos algunas de las soluciones disponibles para cada uno de los principales lenguajes. muchas de ellas son completas libreras que ofrecen otros recursos aparte del procesador y que incluso estn disponibles como parte de las libreras bsicas del entorno correspondiente. JAVA JDOM (http://www.jdom.org/) XMLBeans (http://xmlbeans.apache.org/) Xerces (http://xml.apache.org/xerces-j/) Y muchos ms disponibles en: http://java-source.net/opensource/xml-parsers Ruby REXML (http://www.ruby-doc.org/stdlib1.9.3/libdoc/rexml/rdoc/index.html) Lib XML Ruby (http://libxml.rubyforge.org/rdoc/) Hpricot /(https://github.com/hpricot/hpricot) PHP

SimpleXML (http://php.net/manual/en/book.simplexml.php) XML Parser (http://www.php.net/manual/en/book.xml.php) XMLReader (http://www.php.net/manual/en/book.xmlreader.php) XML Expat Parser (http://www.w3schools.com/php/php_xml_parser_expat.asp) Xerces (http://xerces.apache.org/xerces-c/) MSXML (http://msdn.microsoft.com/enus/library/ms763742(VS.85).aspx) libxml (http://xmlsoft.org/)

Arabica (http://c-plusplus.org/index.php? option=com_mtree&task=viewlink&link_id=106&Itemid=57) LTXML (http://www.ltg.ed.ac.uk/software/ltxml2) XmlReader de System.Xml: (http://msdn.microsoft.com/enus/library/gg145036.aspx)

.Net

Python XML Toolkit (http://csmctmto.interpoint.net/didx/xml.html) Pyxie (http://www.pyxie.org/) XML Tools (http://www.logilab.org/xmltools/)

Validadores de XML La mayora de editores especialidados en XML o integrados en entornos de trabajo o IDE, permiten validar los XML que generemos, ya que incrustan procesadores XML. Prcticamente todos comprueban que estn correctamente formados, y muchos de ellos permiten validar el documento XML contra DTD y XML Schemas, identificando los posibles errores. En el punto 2.1.10 de este documento tienes alguno de ellos. Validacin online de XML Adems en Internet existen servicios externos que nos permiten realizar dicha validacin: http://validator.w3.org/ http://www.w3schools.com/xml/xml_validator.asp http://www.stg.brown.edu/service/xmlvalid/ http://www.xmlvalidation.com/ http://www.validome.org/xml/ Validacin online de DTD / Schema De igual manera en Internet tambin existen validadores de DTD y Schema para XML: http://www.w3schools.com/dtd/dtd_validation.asp http://www.validome.org/grammar/ http://schneegans.de/sv/ http://validate.openlaboratory.net/

2.4.2. Herramientas de Conversin


XML es ya aceptado como un estndar para todo tipo de datos, incluso documentos, por lo que la mayora de aplicaciones que generaban documentos se ha apresurado a adoptar la especificacin

XML para sus propios documentos. Por ejemplo, Microsoft Office guarda los documentos en formato XML, de ah que la extensin sea hora DOCX o XLSX. Existen multitud de herramientas para la conversin de XML a otros formatos o viceversa, mostramos a continuacin algunos ejemplos:

JSON - XML: http://jsontoxml.utilities-online.info/ XML a TXT con una XSLT: https://www.fpds.gov/wiki/index2.php/XML_Conversion_Utility Datos a XML: http://www.stylusstudio.com/convert_to_xml.html MySQL a XML en PHP (http://sentidoweb.com/tag/mysql-xml) XML a CSV, TXT, XLS, SQL (http://www.xmlconverter.com/spanish/) ODBC, MS SQL Server, Oracle, MySQL, TXT, CSV, (DOC, XLS, MDB) a XML (http://download.cnet.com/XML-ConverterStandard-Edition/3000-7241_4-10120976.htm)

2.5. XML en la prctica


2.5.1. Sindicacin de Contenidos: RSS y Atom
La sindicacin de contenidos permite publicar contenido apto para que otras aplicaciones puedan hacer uso de l, y para ello, que mejor que XML. Existen dos estndares que se han popularizado en la sindicacin de contenidos. RSS Son las siglas de Really Simple Syndication o sindicacin simple de contenidos, que no es ms que un formato XML de estructura sencilla con el que difundir informacin actualizada a los usuarios que se han suscrito a la fuente web de contenidos. Actualmente se encuentra en la versin 2.0, que es incompatible con la anterior. Los RSS no son ms que documentos XML con extensin .xml o .rss que describen los contenidos disponibles en la fuente web, de manera que los podamos consultar con una aplicacin. Por ejemplo, esto son fuentes web en RSS: Diario El Pas: ep01.epimg.net/rss/elpais/portada.xml Google News: news.google.es/news? pz=1&cf=all&ned=es&hl=es&topic=h&num=3&output=rss

Novedades GNU: www.gnu.org/rss/whatsnew.rss

Atom Es otra especificacin para la sindicacin de contenidos y que presupone algunas mejoras frente a RSS, principalmente en su compatibilidad con versiones anteriores. Sin embargo, su mayor baza es la apuesta de Google por Atom. Algunos ejemplos de fuentes en Atom: Diario Pblico: www.publico.es/estaticos/rss/ Google News: news.google.es/news? pz=1&cf=all&ned=es&hl=es&topic=h&num=3&output=atom Agregadores Para suscribirnos a un canal RSS o Atom necesitamos de una aplicacin que se conecte peridicamente a la fuente de contenido y obtenga los nuevos contenidos, estas aplicaciones se conocen como agregadores, y pueden ser aplicaciones de escritorio o de mvil, e incluso que estn en la propia web. Los agregadores permiten suscribirnos a multitud de fuentes web y clasificarlas segn nuestra conveniencia y consumir la informacin en funcin a nuestros intereses, configurando as nuestra manera de estar actualizados. En la actualidad la mayora de agregadores son capaces de leer ambas fuentes de noticias RSS y Atom, incluso muchas pginas web proveen de ambos tipos de fuentes de contenido. Los navegadores adems permiten identificar las fuentes con un icono naranja en la barra de nevegacin para poder fcilmente suscribirnos a las fuentes que deseemos. Agregadores de escritorio FeedReader (Windows). NetNewsWire (Mac). Liferea (Linux). Naufrago! (Linux). Agregadores en servicios web Google Reader. My Yahoo!. Bloglines. Netvibes. IGoogle Sitios Agregadores

Existen sitios web que valindose de la sindicacin de contenidos los agregan en sus sistemas para diversos propsitos, como mejorar la experiencia del usuario, enriquecer el contenido con opiniones, clasificarlos de otra forma, etc. Es el caso de sitios como Mename, Noticias.com o Divlgame.

2.5.2. Servicios Web


Un servicio web es una porcin de software que usa un conjunto de protocolos y estndares que sirven para intercambiar datos entre aplicaciones. Es decir, permite que distintas aplicaciones desarrolladas en lenguajes diferentes, y ejecutadas en cualquier tipo de plataforma, puedan utilizar servicios web para intercambiar datos en redes de ordenadores como la propia Internet. Qu ofrece XML a un servicio web? XML como formato estndar para el intercambio de datos. XML-RPC o XML Remote Procedure Call, que son los protocolos sobre los que se establece el intercambio de informacin. WSDL o Lenguaje de Definicin de Servicios Web (Web Service Description Language) que es el lenguaje de la interfaz pblica de los servicios web y permite describir a las aplicaciones que hagan uso del servicio cmo funciona ste. Ejemplo de servicios web Alicia se quiere ir de vacaciones a Italia para lo que consulta su sitio web de viajes favorito e introduce las fechas del viaje. La aplicacin se conecta al servicio web de varias compaas de vuelo para obtener el precio ms barato y las horas de salida y llegada. Alicia selecciona un vuelo y el aeropuerto de destino y, antes de pagar, la aplicacin consulta con otro servicio web los hoteles disponibles en la ciudad de destino para ofrecrselos a Alicia. Alicia ya tiene alojamiento y se dispone a pagar, la aplicacin se conecta al servicio web de su banco, verifica los fondos y obtiene la confirmacin, efectuando el pago y notificndoselo a Alicia. Ventajas de los servicios web Se basan en estndares abiertos y en protocolos de texto que hacen muy sencillo entender cmo funcionan Interoperabilidad entre las aplicaciones de software independientemente de cmo estn construidas y sobre qu plataformas funcionen Permiten ofrecer servicios integrados al ofrecer que las empresas ubicadas en distintos lugares puedan combinar sus servicios Desventajas de los servicios web

Rendimiento bajo comparado con otros modelos distribuidos Al apoyarse en HTTP se pueden esquivar medidas de seguridad basadas en firewalls

2.5.3. CSS con XML


Hay veces en las que nos interesa presentar un documento XML de la manera ms clara posible para facilitar su legibilidad. En estos casos podemos usar hojas de estilo en cascada o CSS para dar formato a un documento XML. Para usar una CSS en un documento XML lo hacemos as: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="ejemplo.css" type="text/css"?> Diferencias con las CSS para HTML Las principales diferencias de las CSS para XML respecto a las CSS para HTML son: Los elementos a los que se puede asignar una regla de estilo no estn limitados Los navegadores HTML no procesarn las etiquetas HTML y las mostrarn como texto Los navegadores HTML tienen un formato restringido, mientras que XML no La especificacin de CSS para documentos XML es la misma que para los documentos HTML, por lo que las reglas de estilos dentro de la hoja de estilos se definen usando los mismos selectores y cadenas de estilos que se usan para HTML, teniendo en cuenta que ahora el nombre de las etiquetas puede se cualquiera. Veamos un ejemplo y enseguida comprenderemos su uso. Esta es la hoja de estilos directorio-empresas-css.css: [snippets/directorio-empresas-css.css] Y el XML: [snippets/directorio-empresas-css.xml]

2.5.4. XHTML
Son las siglas de eXtensible HyperText Markup Language o Lenguaje de Marcado de Hypertexto Extensible, y a grandes rasgos sera HTML

expresado como XML bien formado, cumpliendo todas las reglas que hemos visto en los captulos anteriores para documentos XML bien formados. XHTML surge como el primer paso de la W3C para separar claramente la informacin de la presentacin y facilitar a las aplicaciones la comprensin de los documentos para que puedan interpretarlos semnticamente de manera correcta. Es lo que se conoce como Web semntica. Ventajas del XHTML respecto al HTML Al ser XML se pueden aplicar herramientas de procesamiento de documentos XML (editores, XSLT, ...) El procesado del documento es ms sencillo al estar correctamente formado y no tener que estar haciendo suposiciones en casos de cierres incorrectos, malas anidaciones, etc. Se pueden usar Espacios de nombres XML Diferencias entre HTML y XHTML Los elementos vacos o no deben cerrarse siempre La anidacin de los elementos deber ser correcta Los valores de los atributos deber ir siempre entre comillas Los nombres de los elementos y atributos deben ir en minsculas Los atributos deben de tener siempre valor, aunque sea la cadena vaca Los atributos desaprobados en HTML 4.01 no forman parte de XHTML Doctype de XHTML En un documento XHTML el <!DOCTYPE> es obligatorio y permite elegir el DTD empleado para construccin y validacin del documento. Existen varias versiones de XHTML como por ejemplo la 1.0, 1.1, Bsico, etc. W3C provee para cada una de ellas una DTD con la que podemos validar nuestro documento XHTML. Por ejemplo, para incluir la DTD de XHTML 1.1 podra especificarse de la siguiente forma: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es"> <head>

<title>Ttulo</title> </head> <body> ... </body> </html> Doctypes para XHTML


XHTML 1.0 Strict

Esta DTD contiene todos los elementos y atributos HTML, pero NO INCLUYE los elementos de presentacin, o en desuso (como font). Los framesets no estn permitidos. El marcado tambin debe ser escrito como XML bien formado. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Transitional

Esta DTD contiene todos los elementos y atributos HTML, pero INCLUYE los elementos de presentacin, o en desuso (como font). Los framesets no estn permitidos. El marcado tambin debe ser escrito como XML bien formado. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
XHTML 1.0 Frameset

Igual que XHTML 1.0 Transitional pero permite el uso de framesets. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1frameset.dtd">
XHTML 1.1

Este DTD es igual a XHTML 1.0 Strict, pero permite aadir mdulos (por ejemplo, para proporcionar apoyo para idiomas de Asia Oriental). <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

2.5.5. Ajax
Es el acrnimo para Asynchronous JavaScript And XML o JavaScript asncrono y XML, y es una tcnica de desarrollo de pginas web para crear aplicaciones interactivas. Estas aplicaciones se ejecutan en el navegador en el cliente en vez de en el servidor y realizan una comunicacin asncrona con el mismo en segundo plano.

Asncrona quiere decir que los datos se solicitan al servidor en segundo plano sin interferir con la visualizacin y el comportamiento de la pgina. Una vez que se cargan los datos se ejecuta algn procedimiento como por ejemplo recargar parte de la pgina. Est relacionado con XML porque usa el protocolo de comunicacin XMLHttpRequest, sin embargo es posible enviar los datos en cualquier otro formato (por ejemplo JSON, texto plano o HTML). Las pginas que usan Ajax pueden ser ms amigables y fciles de usar al no estar cargando una pgina en cada interaccin con el usuario, permitiendo una mejor experiencia de uso. Inconvenientes Las pginas con Ajax son ms difciles de desarrollar que las pginas estticas. Las pginas creadas dinmicamente mediante peticiones sucesivas Ajax, no son registradas de forma automtica en el historial del navegador, as que haciendo clic en el botn de "volver" del navegador, el usuario no ser devuelto a un estado anterior de la pgina, en cambio puede volver a la ltima pgina que visit. Los motores de bsquedas no entienden JavaScript. La informacin en la pgina dinmica no se almacena en los registros del buscador. Por seguridad hay problemas usando Ajax entre nombres de dominios. Los sitios con Ajax usa ms recursos en el servidor. Es posible que pginas con Ajax no puedan funcionar en telfonos mviles, PDA u otros aparatos. Ajax no es compatible con todos los software para ciegos u otras discapacidades.

Anda mungkin juga menyukai