8. SERVICIOS WEB (WEB SERVICES)
8.2 SERVICIOS WEB: ESTÁNDARES
8.2.1 XML (Extensible Markup Language)
El XML es un lenguaje simple de marcas (tags) desarrollado por W3C como ya hemos visto, cuya función principal es la de describir datos. Juega un papel fundamental en el intercambio de información pudiendo definir gran variedad de datos. Es un lenguaje que deriva del estándar
64
SGML (Figura 44). Este estándar se creó con el objetivo de que los documentos electrónicos fuesen independientes de los formatos generados por los procesadores de texto y los sistemas operativos [13]. Posteriormente apareció el estándar ODA (Open Document Architecture), que siguiendo con la filosofía de crear documentos para estructurar la información, incluía la posibilidad de representar imágenes a partir de vectores. Esto supuso una limitación debido a que las aplicaciones debían de tener un software especial para interpretar estos datos gráficos. De todas formas, ODA sirvió de influencia para los estándares posteriores como HTML y XML. Tanto HTML como XML son lenguajes de marcas, la diferencia entre el lenguaje HTML y XML es que HTML está orientado al entorno web, en qué y cómo se debe visualizar la información en un navegador, en cambio, el lenguaje XML nos dice cómo se estructura la información en un ámbito general.
Fig. 44. Evolución histórica de los lenguajes de marcas o etiquetas.
El lenguaje XML se popularizó en la década de los 90 con la llegada de los negocios electrónicos o eBusiness [7], ya que los desarrolladores podían enriquecer la información enviada a través de Internet añadiéndole significado y contexto. En el contexto SOA, XML se convierte en un estándar de vital importancia debido a que establece el formato y la estructura de los mensajes enviados entre los servicios, es por ello que vale la pena conocer más sobre este estándar, como haremos en las secciones que vienen a continuación.
Diseño de un documento XML
Como se ha explicado, con el lenguaje XML podemos representar modelos de información de forma estructurada mediante el uso de etiquetas. Un ejemplo de ello es la Figura 45.
Fig. 45. Documento XML con su representación gráfica.
Se puede apreciar como a partir de una estructura jerárquica que representa a un cliente con su nombre y dirección, podemos trasladar dicha estructura a un documento de texto. detallar como se crea dicha estructura, vamos a relatar cómo se construye
El elemento a la cabeza de la estructura, en este caso Cliente, contiene todos los subelementos (Nombre y Dirección)
última etiqueta. Una etiqueta se construye con el nombre de la
angulares “<” y “>”. La etiqueta de cierre, para indicarla como tal, precederá al nombre de la etiqueta con el símbolo “/”. El resultado de la representación del elemento Cliente será el siguiente:
<cliente> </cliente>
El segundo paso será representar sus subelementos (Nombre y Dirección). Para indicar esta relación de pertenencia, incluiremos los subelementos entre las etiquetas de su entidad padre (Cliente) de la siguiente forma:
<cliente>
<nombre></nombre> <Direccion></Direccion> </cliente>
A su vez, la Dirección también tiene subelementos (Calle, Ciudad y CodigoPostal). Haremos lo mismo y anidaremos estos elementos dentro de la etiqueta Dirección:
<cliente>
<nombre></nombre> <Direccion>
<Calle></Calle>
65
Fig. 45. Documento XML con su representación gráfica.
Se puede apreciar como a partir de una estructura jerárquica que representa a un cliente con , podemos trasladar dicha estructura a un documento de texto. detallar como se crea dicha estructura, vamos a relatar cómo se construye paso a paso.
El elemento a la cabeza de la estructura, en este caso Cliente, contiene todos los (Nombre y Dirección). Por lo tanto, deberá abrir la primera etiqueta y cerrar la etiqueta. Una etiqueta se construye con el nombre de la etiqueta entre los
“<” y “>”. La etiqueta de cierre, para indicarla como tal, precederá al nombre de la etiqueta con el símbolo “/”. El resultado de la representación del elemento Cliente será el
undo paso será representar sus subelementos (Nombre y Dirección). Para indicar esta relación de pertenencia, incluiremos los subelementos entre las etiquetas de su entidad padre
Direccion>
A su vez, la Dirección también tiene subelementos (Calle, Ciudad y CodigoPostal). Haremos lo mismo y anidaremos estos elementos dentro de la etiqueta Dirección:
Se puede apreciar como a partir de una estructura jerárquica que representa a un cliente con , podemos trasladar dicha estructura a un documento de texto. Para
paso a paso.
El elemento a la cabeza de la estructura, en este caso Cliente, contiene todos los . Por lo tanto, deberá abrir la primera etiqueta y cerrar la etiqueta entre los corchetes “<” y “>”. La etiqueta de cierre, para indicarla como tal, precederá al nombre de la etiqueta con el símbolo “/”. El resultado de la representación del elemento Cliente será el
undo paso será representar sus subelementos (Nombre y Dirección). Para indicar esta relación de pertenencia, incluiremos los subelementos entre las etiquetas de su entidad padre
66
<Ciudad></Ciudad>
<CodigoPostal></CodigoPostal> </Direccion>
</cliente>
Así de esta forma, hemos conseguido representar en formato xml la estructura jerárquica. Después de esto, podemos añadir contenido para asignar un valor a cada etiqueta, para realizar esto hay que escribir el valor entre las etiquetas de apertura y cierre del elemento. Muestra de ello es por ejemplo el elemento Calle:
<Calle>La carrera 15</Calle>
Una cosa a tener en cuenta es que los elementos pueden tener atributos que añadan información sobre ellos. El atributo se escribe dentro de la etiqueta de apertura del el elemento seguido de un símbolo de igualdad “=” y entre comillas se indica el valor del atributo. Un ejemplo de ello es el elemento Dirección:
<Direccion verificada=”si”>
En el ejemplo descrito en la Figura 45 no se aprecia una sentencia que se suele utilizar en el principio del documento y no tiene carácter obligaotorio. Esta sentencia es el prólogo, como ejemplo de ello podríamos tener:
<?xml version="1.0" encoding="UTF-8"?>
El prólogo indica que el documento es del tipo XML mediante la etiqueta:
<? xml …?>
Entre los puntos suspensivos se pueden incluir uno o más comentarios o instrucciones de procesamiento. En el prólogo de ejemplo se muestran como atributos las instrucciones de procesamiento indicando la versión de XML y el tipo de encoding del documento, es decir, la codificación de los caracteres del documento, en este caso, UTF-8. Indicar la codificación de los caracteres es útil debido a que los mensajes XML pueden enviarse entre entornos con condiciones diferentes y éstos pueden trabajar con codificaciones de caracteres distintas. Esto puede causar problemas con caracteres especiales o acentos, si se indica la codificación, el procesador del mensaje XML en la parte del consumidor sabrá en qué codificación debe tratarlo.
Ya hemos descrito la construcción de mensajes XML, pero existen unas normas que se deben cumplir para que la estructura de un documento XML se interprete como tal. Los documentos que cumplen dichas normas se catalogan de documentos bien formados. Veamos a continuación dichas directrices.
Documentos XML bien formados
Los documentos denominados como bien formados o construidos (del inglés well formed) son aquellos que cumplen con todas las definiciones básicas de formato y pueden, por lo tanto,
67
analizarse correctamente por cualquier analizador sintáctico (parser) que cumpla con las normas. Estas normas son las siguiente :
• Los documentos deben seguir una estructura estrictamente jerárquica con lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente incluida en otra, es decir, las etiquetas deben estar correctamente anidadas. Los elementos con contenido deben estar correctamente cerrados.
• Los documentos XML sólo permiten un elemento raíz del que todos los demás sean parte, es decir, solo pueden tener un elemento inicial. Nuestro ejemplo de la Figura 45 cumpliría con esta norma, pues solamente existe un elemento raíz Cliente.
• Los valores atributos en XML siempre deben estar encerrados entre comillas simples o dobles.
• El XML es sensible a mayúsculas y minúsculas. Existen también un conjunto de caracteres llamados espacios en blanco (espacios, tabuladores, retornos de carro, saltos de línea) que los procesadores XML tratan de forma diferente en el marcado XML.
• Es necesario asignar nombres a las estructuras, tipos de elementos y entidades.
• Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan marcas; son partes del documento que el procesador XML espera entender. El resto del documento entre marcas son los datos “entendibles” por las personas. Comentarios
Por último, indicar que es posible incluir comentarios en un fichero XML. Un comentario es un texto aclarativo que no se tiene en cuenta cuando se analiza el fichero. Con estos comentarios haremos más entendible la información contenida en un fichero XML. Los comentarios se deben escribir entre los símbolos “<! --“ y “ -->” como el ejemplo siguiente:
<!-- Esto es un comentario: a continuación tenemos una etiqueta --> <etiqueta>Contenido de la etiqueta</etiqueta>
Una vez visto el estándar XML, estamos en posición de explicar tanto los estándares SOAP como WSDL, debido a que utilizan el lenguaje XML para ser implementados. Antes de de todo, introduciremos el estándar XML Namespaces, debido a que es de uso frecuente dentro de los mensajes SOAP y de los descriptores de fichero WSDL.