extensible Markup Language (XML) 1. INTRODUCCIÓN Jennifer Pérez Benedí Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia C/Camino de Vera s/n E-46071 Valencia- España jeperez@dsic.upv.es El estándar XML surge como una necesidad de estandarizar la definición de lenguajes de marcas. En la actualidad se ha convertido en la forma ideal de realizar el intercambio de información. A partir de XML han surgido otras iniciativas, como el protocolo SOAP (Simple Object Access Protocol), que habilita a XML para llamar a métodos de un computador remoto en Internet, incluso a través de firewalls 1 y diferentes plataformas. 2. QUÉ ES XML? Es un lenguaje de marcado que permite la definición de tus propias marcas y el intercambio de datos a través de la red. Puede considerarse una ampliación de HTML, ya que aprovecha sus ventajas e incrementa su funcionalidad. El que sea un lenguaje de marcado quiere decir que a ciertas partes del documento se le asocian unas marcas. La mejora que proporciona un lenguaje de marcado es que define un documento diciendo, por ejemplo: las cabeceras que eran en negrita cambiarlas a negrita y cursiva, consiste únicamente en acceder al tipo de cabecera y añadir cursiva. De este modo, se evita acudir a cada una de las cabeceras y realizar el cambio una a una. XML es el mejor lenguaje de marcado que hay en la actualidad para cumplir los objetivos de creación de mensajes con formato estándar, la separación de datos, la presentación de datos en páginas web y la llamada a métodos a través de firewalls y diferentes plataformas. XML está compuesto por cuatro partes: - Documentos XML - XML DTD / XML Schemas - XML parser - Aplicaciones XML 1 Software que funciona en un servidor, generalmente conectado a un router que, a su vez, está conectado a una red externa. La función del cortafuegos es proteger una Intranet evitando que entren en ella transmisiones de red no deseadas, aplicando la filosofía de lo que no está permitido expresamente es negado. 1
3. XML vs HTML(Hypertext Markup Language) HTML es un lenguaje de marcado que describe documentos de hipertexto permitiendo presentar documentos en la Web. Los inconvenientes de este lenguaje son los siguiente: - Estructura no rígida. - Inflexible, las únicas marcas posibles son las predefinidas. - Limitado. - El DTD está fijo. - Sistema de enlaces inadecuado. - No está diseñado para almacenar información. HTML no es rígido en la estructura del documento, no respeta el orden de las etiquetas y permite la inclusión de etiquetas en el cuerpo del documento entre otras cosas. Sin embargo, XML es muy rígido en su estructura y sólo será correcto el documento si las etiquetas son las adecuadas y están usadas de acuerdo con la estructura definida para el documento, es decir, en el orden correcto. La característica que más diferencia XML de HTML es que XML describe el contenido de lo que etiqueta, ya que permite crear nuevas marcas. Pudiendo definir la descripción y estructura de la información que se va a intercambiar, es decir, puede definir sus propios tipos de documentos (sus propias etiquetas) y, por tanto, ya no dependerá de un único e inflexible tipo de documento, tal y como ocurre en HTML. Uno de los problemas de HTML es la forma en la que establece los enlaces entre sus documentos, ya que se incorporan dentro del código del documento y si cambian los enlaces debe modificarse el código del documento. Actualmente se necesita un método de enlace de documentos más sofisticado ya que la Web está sufriendo cambios continuamente. Este inconveniente lo soluciona XML, ya que permite asociar enlaces para cualquier elemento y enlazar con múltiples direcciones. Mientras que XML es ideal para almacenar información, HTML no está diseñado para hacerlo, ya que cuesta mucho almacenar información y no se puede validar la información necesaria y requerida para el documento. Otra diferencia entre ambos es que un fichero XML contiene datos que se autodefinen, es decir, en ningún momento se enfatiza en la presentación de la estructura, sino en el contenido. 4. CARACTERÍSTICAS Y FUNCIONALIDAD XML proporciona una funcionalidad potente y diversificada. Entre sus características podemos destacar la forma tan simple en la que es capaz de combinar información y metainformación 2 en el intercambio de datos por la web. Además, su enlace con la web hace que sea un lenguaje común de etiquetas, rompiendo la necesidad de trabajar obligatoriamente dentro de una única infraestructura. 2 Etiquetas que definen y describen el contenido que hay dentro de ellas 2
Un DTD (Data Type Definition) y un XML Schema permiten definir un conjunto de reglas que especifican la estructura de la información que aparece en un documento. La definición de DTD y un XML Schema consiste en la definición de etiquetas y el lugar que éstas deben ocupar dentro del documento. La definición de la estructura hace que los documentos XML sean poco ambiguos y rígidos sintácticamente. Sin embargo, XML es sencillo y flexible, tanto en la definición de sus etiquetas como en el hecho de poder definir documentos sin DTD o XML Schema asociado. XML esta soportado por una gran variedad herramientas comerciales e industriales (Adobe, ArborText, DSTC, HP(Hewlett Packard), IBM, Microsoft, Nestcape, Oracle, Platium, Unisys, Select, Sun, Xerox Web etc)y tiene un sistema de enlaces a través de la red muy avanzado. La potencia de integración y compartición de datos de XML es debida a que permite crear aplicaciones con datos compartidos, ya que sus documentos pueden ser leídos por aplicaciones mediante el uso de parsers. Otra de las principales características de XML es que etiqueta e identifica el contenido de sus documentos, olvidándose en un principio de la presentación. Después, la información incluida en un documento XML puede ser utilizada por una página XSL (Extensible Style Sheet Language) para presentarla en un navegador. Esto permite tener más de una vista de un documento, porque tiene separado el contenido de la presentación. De este modo, XML va a permitir que un mismo documento se pueda ver de distinta forma desde varias máquinas, sólo con que cada máquina tenga su StyleSheet adecuada. No se cambia ni el contenido ni la estructura, tan sólo su presentación. Al ser un lenguaje tan flexible permite que un documento pueda usarse para una gran variedad de propósitos. Por ejemplo, la información puede utilizarse para leerla y después mostrársela al usuario, para guardarla en una BD, o usarla en otra aplicación. Por otro lado, facilita el desarrollo de aplicaciones para navegar por la Web, buscadores, y el intercambio de datos, generalmente entre BD, basándose en un DTD. Hay que destacar que no pretende reemplazar a los SGBD S, simplemente facilita el intercambio de información y la cooperación entre las empresas mediante el comercio electrónico (business-to-business). 5. DTD(Document Type Definition) Un DTD es el lugar donde se realiza la definición de la estructura y el contenido de un tipo de documento. En un DTD de XML se definen los elementos, atributos y entidades que van a formar un documento, cómo se estructuran y relacionan. De esta forma se especifica los elementos y atributos que pueden usarse dentro de un documento XML y especifica que caracteres se usarán para marcar el texto. Un DTD define las reglas que han de cumplir el conjunto de documentos XML que se han creado usando la plantilla de dicho DTD, esto es posible porque la estructura y el contenido van separados. 3
Un elemento de un DTD define una etiqueta para los documentos XML que se basen en él. Las reglas definen la estructura lógica del documento XML y se usan para comprobar la validez de los documentos. La regla es una declaración genérica y uno o más elementos, agrupados o desordenados <!ELEMENT nombre del elemento regla> Un elemento puede contener una definición de tipo texto (PCDATA), correspondiente al valor que va a contener la etiqueta en el documento XML, puede estar compuesto por otros elementos o puede estar vacío. Esto se indica a través de gramáticas. Por ejemplo: <!ELEMENT cliente (DNI, nombre, apellidos, direccion)> <!ELEMENT nombre (#PCDATA)> El DTD es necesario para que los parsers puedan obtener la información que incluyen los documentos XML. Un DTD puede ser interno al documento XML, es decir, el DTD y el propio documento se incluyen en el mismo archivo, o externo, cuando el DTD y el documento están en archivos distintos. Un DTD nos permite controlar aspectos sintácticos, validando los documentos que se basen en él. Entre estos aspectos está el lugar en el que puede incluirse una determinada etiqueta y el número de veces que puede aparecer dicha etiqueta (una vez obligatoriamente, una vez opcionalmente, una vez o más, más de una vez sin necesidad de que aparezca obligatoriamente). También permite expresar composición de elementos, bien por conjunción (y) o bien por disyunción (o) de subelementos. Un ejemplo de DTD es el que se muestra a continuación: <?xml version="1.0" encoding="utf-8"?> <!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com) by JENNIFER PÉREZ BENEDÍ --> <!ELEMENT esquema (clase+, agregacion*, especializacion*)> <!ELEMENT clase (nombre, atributo+, restriccion_integridad*, alias+)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT atributo (nombre, tipo, tipo_dato, nulos, tamaño?, formula_derivacion?)> <!ELEMENT tipo(#pcdata)> <!ELEMENT tipo_dato (#PCDATA)> <!ATTLIST tipo_dato valor (int date bool real string) #REQUIRED > <!ELEMENT nulos (#PCDATA)> <!ELEMENT tamaño (#PCDATA)> <!ELEMENT formula_derivacion (#PCDATA)> <!ELEMENT restriccion_integridad (#PCDATA)> <!ELEMENT alias (#PCDATA)> 6. XML Schema Un XML Schema, al igual que un DTD, define la estructura y el contenido de un tipo de documento. Sin embargo XML Schema mejora la propuesta de los DTD, resolviendo algunas de sus carencias, por ese motivo los XML Schema están reemplazando a los DTDs. 4
Algunos de los inconvenienetes de los DTDs son: - No se ciñen a la sintaxis de XML, utilizan su propio formato de texto para escribirlos. - Limitan el contenido de forma que solamente puede ser textual - El mecanismo de control de repetición de elementos resulta muy complicado. XML schema se caracteriza por usar la sintaxis XML, soporta otros tipos que no son el string, como pueden ser números y fechas, permite especificar tipos de datos y definir rangos de valores para los atributos de los elementos y usa conceptos de la orientación a objetos como la herencia. 7. DOCUMENTOS XML El documento XML es el que incluye toda la información delimitada mediante marcas y que se envía a través de la web. Cuando un documento XML cumple la especificación del lenguaje XML se dice que es un documento XML bien formado, y en caso de que esté asociado a un DTD o XML Schema, si cumple la sintaxis definida en este, se dice que es un documento XML valido. La forma de asociarle a un documento un DTD o XML Schema puede ir implícita en el propio documento o de forma externa, es decir, habiéndola escrito en un fichero distinto. - Implícita: <!DOCTYPE documento[ ]> - Externa: <!DOCTYPE documento SYSTEM nombre del fichero > Los documentos XML pueden construirse usando composición mediante los métodos de enlace (namespaces) de XML, es decir se puede construir documentos por medio de la selección de partes de otros documentos. Un ejemplo de documento XML: <clase > <nombre> <valor>hombre</valor> </nombre> <atributo> <nombre> <valor>doc. Nac. Ident.</valor> </nombre> <tipo> <valor_tipo valor="constante"/> </tipo> <tipo_dato> <valor_tipo_dato valor="int"/> </tipo_dato> <nulos> <valor_nulos valor="false"/> </nulos> </atributo> </clase> 5
9. NAMESPACES Un namespaces es un método de enlace que especifica de dónde proviene una determinada información XML, proporciona un mecanismo de asociación de un elemento y/o atributo con su lugar de origen. Un uso básico de un namespaces es el de especificar en el documento XML la URL dónde se ubica el DTD o el XML Schema que define las etiquetas que utiliza dicho documento. 10. PARSERS XML (PROCESADORES XML) Un parser es la herramienta principal de cualquier aplicación XML. Permite comprobar si los documentos están bien formados o válidos. Es un programa de bajo nivel que lee un documento XML y almacena tanto las etiquetas como el contenido que ha leído en una estructura. El hecho de que las etiquetas de XML tengan una carga semántica, es decir, que proporcionen información sobre el texto que contienen, hace que sirvan para realizar consultas y búsquedas sobre el documento. Hay dos formas de obtener la información: - Objetual: Árbol de objetos (DOM) El XML Document Object Model (DOM) es una plataforma neutral y un lenguaje neutral para la interfaz que permite a los desarrolladores crear aplicaciones y scripts para acceder y modificar el contenido, estilo y estructura de documentos XML. El DOM está compuesto por objetos que incluyen propiedades y métodos que pueden usarse para recoger la información incluida en el árbol del documento y navegar por otros objetos del árbol. Una vez se ha cargado el documento, la aplicación puede procesar, navegar y manipular la información incluida en el documento. - Eventos: Dentro de la aplicación se ejecutan eventos para capturar información del documento XML que se desea leer, una vez obtenida se puede procesar y guardar. Un parser permite hacer búsquedas sobre el documento. Al tener poca ambigüedad por su fuerte estructuración, las búsqueda se mejoran considerablemente, pudiéndolas hacer por una sola etiqueta o por un conjunto de etiquetas. 6
10. XSL(Extensive Style Language) XSL es un lenguaje que proporciona un mecanismo, basado en hojas de estilo, para la manipulación y presentación de documentos XML. Permite transformar un documento XML en otro XML o HTML o en un formato de impresión (PDF), etc. Las hojas de estilos de XSL utilizan plantillas de presentación, manipulan información XML, contienen información del formato de un documento XML y permiten personalizar la presentación. Pueden usarse en aplicaciones cliente, la visualización en este caso es responsabilidad del cliente. Cuando el cliente no soporta XML, el documento XSL ha de estar en el servidor, se utiliza para transformarlo en un documento HTML y se envía al cliente. XSL permite filtrar y enviar sólo lo que interesa y decir cómo se desea ver la información y hacer selecciones sobre el contenido interno.todos los documentos XSL son XML, luego respetan sus reglas. En un documento XML antes de la referencia al DTD o al XMLSchema se ha de incluir: <?xml-stylesheet type= text/xsl href= library.xsl > Este documento se verá tal como especifica library.xsl. Si el cliente quiere verlo de otra forma tendrá que modificar lo especificado en el servidor. 7