El presente tutorial tiene como objetivo introducir los conceptos fundamentales de XML y sus principales tecnologías relacionadas como son DTD, XML Schema y XSL. El mismo está orientado a personas que no tengan conocimientos en el área de estudio y quieran conocer de una manera rápida los principales tópicos de XML por medio de los conceptos teóricos fundamentales y guías prácticas.

Diego Sánchez Schenone , Arquitecto de Software, IBM China

Desde el año 2004, Diego Sánchez Schenone se ha desempeñado como consultor, comenzando como programador J2EE Senior, Arquitecto de Software y Líder de Tecnología primariamente para Toyota Argentina S.A. Actualmente en IBM desempeña el rol de WME Specialist en el área de Global Delivery / E-Business Hosting, brindando soluciones de middleware. Ante cualquier consulta o comentario contactar a Diego por email a la dirección schenone@ar.ibm.com..



29-07-2011

Introducción

El presente tutorial tiene como objetivo introducir los conceptos fundamentales de XML y sus principales tecnologías relacionadas como son DTD, XML Schema y XSL. El mismo está orientado a personas que no tengan conocimientos en el área de estudio y quieran conocer de una manera rápida los principales tópicos de XML por medio de los conceptos teóricos fundamentales y guías prácticas. El tutorial está dividido en cuatro partes a ser publicadas en cuatro artículos distintos:

Como entorno de desarrollo fue seleccionado Rational Application Developer (RAD). RAD ofrece una cantidad innumerable de herramientas que facilitan el desarrollo de software, en este caso, el manejo de XML. A través de cada artículo la perspectiva de XML será estudiada mostrándose todas las ventajas y trucos que esta ofrece. Desde el punto de vista de la enseñanza RAD es una excelente opción dado que el entorno guía y asiste en cada paso al desarrollador haciendo el trabajo mucho más fácil. Esta asistencia es de gran utilidad para personas que se inicien en el área de estudio dado que el entorno casi no deja margen a que se produzcan errores en el desarrollo.

La disposición del contenido del tutorial es tal que, en el primer artículo se presenta una visión general de los lenguajes de marcado llegando hasta XML (sintaxis y validación). En el segundo artículo se estudia la perspectiva de XML de WSAD, realizando ejercicios prácticos de los temas presentados. El tercer artículo trata el lenguaje XML Schema para validar documentos XML. Por último se presenta el lenguaje XSL para lograr transformaciones y poder así realizar presentaciones de documentos XML. En los dos últimos artículos se realiza una conjunción entre los conceptos teóricos de cada tecnología que se presenta y su aplicación práctica utilizando WSAD.


Un poco de historia

Podemos decir que los orígenes de XML se dan en el año 1969 en IBM (International Business Machines) Para ese entonces IBM tenía gran cantidad de información que debía ser almacenada y procesada, pero el inconveniente que existía era que dicha información era de distinta naturaleza, por ejemplo, se debían almacenar manuales de procedimientos, contratos, informes de prensa, especificaciones de proyectos, etc. A simple vista uno puede darse cuenta de la gran heterogeneidad de esta información, lo cual es un problema a la hora de almacenarla, procesarla y consultarla. Para dar una solución al problema mencionado y como proyecto de investigación interno, Charles F. Goldfarb desarrolló en IBM un lenguaje de marcado generalizado llamado GML (Generalized Markup Language). Para lograr un marcado genérico, GML fue creado bajo dos premisas fundamentales que son:

Estas dos técnicas formaron las bases del Document Composition Facility Generalized Language (DCF GML). Dado el éxito que tuvo GML, a principios de los años 80 el Dr. Goldfard utilizo los conceptos del proyecto DCF GML como los cimientos para desarrollar un nuevo esquema de marcado generalizado para la ANSI (American National Standards Institute). En 1986 el esquema propuesto por el Dr. Goldfard se convirtió en el estándar ISO 8879:1986, más conocido como SGML (Standard Generalized Markup Language). Es relevante destacar que SGML es considerado uno de los estándares más importante que ha existido en el contexto de la estructuración de documentos de gran tamaño.


SGML

Como se mencionó anteriormente SGML se enfoca en la estructuración de documentos, ignorando tamaño y formato de la página. Este último enfoque es lo que hace a SGML tan flexible y potente comparado con otros lenguajes de marcados. Otra ventaja de SGML es que el mismo fue desarrollado teniendo en cuenta que un ser humano podría tener un documento en mano para su lectura, por lo que la estructuración debería ser fácil de comprender por personas.

Figura 1 – Características de SGML

Figura 2 – Ejemplo de documento SGML

Una desventaja de SGML es que es demasiado complejo, no cualquiera puede desarrollar software que lo implemente, de hecho grandes compañías fueron las que lo utilizaron y sacaron los mayores beneficios de la potencia del lenguaje. Dos ejemplos de organizaciones que utilizaron SGML son: gobierno de Estados Unidos y compañías de aviación, es decir, compañías u organizaciones que cuentan con un gran respaldo económico y necesidades de estructurar gran cantidad de información.


HTML

La aplicación más conocida de SGML es el lenguaje HTML (HiperText Markup Language). HTML es un lenguaje de marcas orientado a dar formato a la información, este último punto debe ser considerado dado que es él que marca la diferencia, HTML está orientado a como se muestra la información y no a como ésta se estructura. Al ser HTML una aplicación de SGML, el mismo consta con un conjunto limitado de marcas orientadas a formatear datos, como por ejemplo ser: color de letra, color de fondo, cursiva, etc.

Figura 3 – Documento HTML y salida por navegador web

La figura 3, muestra un fragmento de código de un documento HTML y su correspondiente salida en un navegador web. Como se puede ver en el fragmento de código, HTML es un lenguaje de marcas donde cada una de estas indica un formato particular, por ejemplo: la marcas <I> </I> hacen que el texto que se encuentre entre las mismas tenga un formato de cursiva, las marcas <CENTER> </CENTER> hacen que la cadena encerrada aparezca centrada, etc. Por medio del ejemplo podemos ver que HTML no dice nada acerca de la estructura de la información que el documento contiene.

Si se presta un poco de atención se puede apreciar que almacenar información en documentos HTML trae una gran desventaja, que es que la información se mezcla con las marcas de formato. Por ejemplo, la marca que contiene el remitente del mensaje de correo es <TD> </TD> que es una marca utilizada para crear una celda dentro de una tabla, por lo tanto no hay relación entre la marca <TD> y el contenido que esta almacena.

Otro problema de HTML es que tiene un conjunto limitado de marcas predefinidas. HTML es una aplicación de SGML con un conjunto finito de etiquetas, si bien las mismas fueron incrementándose desde los orígenes del lenguaje siempre van hacer limitadas, dado que sería imposible que cada nueva especificación del lenguaje incorpore nuevas marcas para satisfacer las diferentes necesidades de un gran conjunto de organizaciones o empresas en sus áreas específicas de trabajo.

Por todas las limitaciones de HTML e inconvenientes de SGML, la W3C (World Wide Web Consortium) armó un grupo de investigación para desarrollar un nuevo estándar que tenga toda la potencialidad de SGML pero eliminando todas las desventajas del mismo. De la investigación realizada surge en 1996 el estándar denominado XML (eXtensible Markup Language).


XML

Lo primero y fundamental a definir a cerca de XML es que el mismo es un metalenguaje, es decir, un lenguaje utilizado por definir otros lenguajes. XML es lenguaje de marcado extensible, este se logra porque los autores pueden definir sus propias etiquetas y la tecnología define un mecanismo por medio del cual se pueden establecer reglas gramaticales que definen los nuevos lenguajes.

XML es un estándar para la creación de documentos no sólo para Internet, sino para todo tipo de actividad en la cual se necesite estructurar y publicar información sin importar el medio final donde esta será expuesta.

Desde el punto de vista de los negocios, la información es el recurso más valioso para poder salir competir un mundo globalizado, por esta razón es clave poder publicar documentos sin importar el medio final en donde estos serán expuestos. Hasta la aparición de XML el lenguaje que predomino en este contexto fue SGML. El problema de SGML es que complicado y no está al alcance de todo el mundo. Esta dificultad de procesamiento hace que SGML no pueda ser utilizado en aplicaciones web, este último punto fue uno de los motivos por lo cual se propuso crear un SGML más liviano para la web. En el mundo de los negocios, hoy implantado y consolidado en la web, los lenguajes de marcados son un elemento clave dado que los mismos permiten compartir documentos electrónicos entre diferentes plataformas de hardware, sistemas operativos y aplicaciones. La información debe estar al alcance de todos, si uno quiere compartir datos o información entonces no puede restringir a la misma en un formato particular donde solo algunos puedan procesarla. Se necesita de un medio por el cual la información puede ser reutilizada de diferentes formas sin tener que requerir de tiempos y esfuerzos adicionales.

Utilizando XML se puede estructurar cualquier tipo información (registros, documentos, tablas de base de datos, audio, video, etc.) y hacer que la misma se encuentre al alcance de todos. XML es un estándar regulado por la W3C por lo que se garantiza una especificación rigurosa, donde todo aquel que la satisfaga podrá compartir y utilizar información por medio de esta tecnología.


Sintaxis de XML

La sintaxis de XML es tan sencilla como estricta. Solamente hay unas pocas reglas a respetar en el momento de crear una instancia (se suele utilizar el concepto de instancia para referirse a un documento XML particular). La figura siguiente muestra un documento XML que modela en una versión reducida de una clase del lenguaje Java.

Figura 4 – Clase de Java representada por un documento XML

Las principales reglas que se deben respetar el momento de crear un documento XML son las siguientes:

  1. Existe un único elemento raíz por cada documento XML.
  2. Todo documento XML está construido a partir de etiquetas, en donde existe una etiqueta de inicio, una etiqueta de fin y datos entre las mismas.
  3. Un documento XML debe estar perfectamente anidado en cuanto a su estructura.
  4. Las etiquetas son “case sensitive”. La etiqueta <nombreClase> es distinta de la etiqueta <nombreclase>.
  5. Los valores de atributos deben estar encerrados entre comillas.

Analizando el ejemplo presentado en la figura 4, la raíz del documento es elemento <claseJava>, a partir de ese elemento se descuelgan todos los demás elementos. Como se puede ver la regla de inicio y fin de etiqueta también se cumple, cada elemento tiene una etiqueta de inicio, una etiqueta de fin y datos entre las mismas. La regla de perfecto anidamiento también es satisfecha, en el documento no se producen estructuras como en el código siguiente de la izquierda:

Figura 5 – Documento XML visto como árbol

Un documento XML debe tener una estructura bien formada de árbol n-ario. Al no satisfacer la regla de correcto anidamiento no se obtiene la jerarquía correcta.

Del ejemplo presentado también se puede ver que los valores de atributos siempre están encerrados entre comillas, como por ejemplo:

Los atributos siempre se deben definir en la etiqueta de inicio de cada elemento. Por lo general se utilizan atributos para almacenar información atómica que complementa al contenido del elemento.

Un tipo especial de elemento es el que aparece en la primera línea del documento y no ha sido nombrado en las reglas de sintaxis:

Este elemento es una instrucción de procesamiento llamada xml. Las instrucciones de procesamiento dan información adicional a los parsers (programas procesadores de instancias) para el procesamiento. En este caso, dicha instrucción proporciona información acerca de la versión del lenguaje y tipo de codificación que se está utilizando en el documento.

Un documento XML puede contener comentarios para dar información adicional, por ejemplo: brindar documentación acerca de algún elemento. A la hora de modelar documentos XML es posible tomar la decisión de poner datos dentro de comentarios, esto es posible porque nada dice que esto no se pueda hacer. Hay una importante regla de modelado ya definida que dice que “comentarios no deben ser considerados para almacenar datos”, un buen documento XML no almacena información en comentarios. Para definir un comentario se debe utilizar la siguiente sintaxis:


Validación

Anteriormente se mencionó que una de las características de SGML era la validación. Esta verificación puede lograrse dado que cada documento XML puede tener asociada la gramática que define los bloques de construcción válidos del mismo. Basándonos en el ejemplo, se podría decir que el elemento raíz es <claseJava>, donde ese elemento tiene los descendientes <nombreClase>, <superClase>,... etc. en el orden de aparición dado y además tiene los atributos abstracta y paquete. Esta definición coloquial se puede expresar formalmente por medio de un DTD (Document Type Definition), definiendo en el mismo la estructura completa del documento.

Un DTD tiene como propósito definir los bloques válidos de un documento XML. Un DTD puede ser interno al documento o externo, en ambos casos el DTD es el lugar donde han sido puestas las reglas que definen los bloques válidos de construcción de una instancia.

Cuando un Parser procesa un documento XML verifica si tiene asociado un DTD. En caso afirmativo verifica si el documento satisface las reglas que se han definido en el DTD y sigue procesando. De encontrar un error el proceso de parsing termina. Un Parser no hace nada para corregir un error. La especificación del procesamiento de documentos XML dada por la W3C deja claro que al encontrar un error el proceso de parsing finaliza. Si una instancia satisface las reglas gramaticales pasa a ser válido, caso contrario el Parser informa del error ocurrido. Esta decisión de cortar el procesamiento a la hora de encontrar un error trata de evitar el proceso de análisis de los parsers de HTML. Un browser de HTML por lo general omite errores en documentos HTML y los sigue procesando con el objetivo de poder mostrarlos, ya sea completamente o parcialmente.

Figura 6 – Esquema de validación

Cabe destacar que un DTD está compuesto por una serie de elementos o entidades cuyas definiciones se expresan en EBNF (Extended Backus-Naur Form) modificado. Para definir un DTD se utiliza una forma modifica de EBNF, mientras que las especificaciones de la W3C se encuentran en EBNF puro. Una ventaja de utilizar EBNF es que el mismo está diseñado para que sea entendido tanto por computadoras como por personas, por lo tanto la lectura es muy natural e intuitiva para los seres humanos


DTD

La definición de un DTD no es nada complicada porque desde el punto de vista de un DTD un documento XML está formado por los siguientes simples bloques de construcción:

Los elementos son el principal bloque de construcción, los mismos están formados por una etiqueta de inicio y una etiqueta de fin. Un elemento puede tener uno o más atributos, todos los atributos deben ser puestos en la etiqueta de inicio del elemento. Por lo general, los atributos se utilizan para dar información extra, con la característica que la misma tiene la particularidad de ser atómica.

Declarando elementos

La sintaxis para definir elementos es la siguiente:

(1) <!ELEMENT nombreElemento TipoElemento>

o bien

(2) <!ELEMENT nombreElemento (tipoDeContenido)>

Para ver con ejemplos del uso de estas declaraciones, definamos la marca <br> del lenguaje HTML. La marca <br> no tiene contenido por lo que se debería utilizar la opción (1). La definición de la misma sería la siguiente:

<!ELEMENT br EMPTY>

Para definir un elemento que contenga un texto (como por ejemplo nombreClase) se tiene que utilizar la siguiente definición:

<!ELEMENT nombreClase (#PCDATA)>

Cuando se quiere indicar que un elemento tiene descendientes también se tiene que utilizar la declaración (2). Por ejemplo, la definición del elemento atributo sería como sigue:

<!ELEMENT atributo (nombreAtributo, tipoAtributo)>

Donde nombreAtributo y tipoAtributo deberían estar declarados en algún lugar del DTD. La declaración anterior indica que el elemento atributo tiene únicamente dos descendientes que aparecen en el orden que indica la secuencia (nombreAtributo, tipoAtributo). También es posible indicar la ocurrencia de un descendiente, es decir, el número de veces que éste puede aparecer en una instancia dada. La siguiente tabla resume los tipos de ocurrencias que se pueden utilizar.

Figura 7 – Tipos de ocurrencias de elementos

Declarando atributos

Para definir un atributo o una lista de atributos se debe utilizar el tipo de declaración siguiente:

<!ATTLIST nombreElemento nombreAtributo tipoAtributo valorPorDefecto>
Donde:

nombreElemento:es el nombre del elemento al cual se le está definiendo él atributo
nombreAtributo:es el nombre de atributo.
tipoAtributo:define el tipo de atributo.
valorPorDefecto:es opcional y puede ser utilizado para asignar un valor por defecto a un atributo.

Las dos tablas siguientes resumen los tipos de atributos y valores por defecto más utilizados.

Figura 8 - Algunos tipos de atributos

Figura 9 – Valores por defecto de atributos

Para definir el atributo final del elemento claseJava se debe realizar la siguiente declaración: <!ATTLIST claseJava final (true | false) “false”>.


Definición parcial de un DTD

Figura 10 – DTD para modelar una clase de Java

Como se puede observar definir un DTD no es nada complicado, hay una pocas reglas a saber y el proceso de creación es muy intuitivo. Lamentablemente un DTD no permite realizar validaciones más estrictas sobre documentos XML. Algunas de las validaciones que no son posibles realizar son las siguientes:

Obviamente que con todas estas limitaciones, la validación de documentos XML es poco segura dado que un documento podría satisfacer la estructura dada por un DTD pero podría contener cualquier dato. Para dar solución a este problema la W3C definió el

lenguaje XML Schema el cual es más rico y potente a la hora de validar documentos XML. XML Schema es un lenguaje basado en XML, es decir que cuando se define un documento de este tipo esta creando un documento XML.

Otro motivo por el cual fue necesario este nuevo lenguaje, es que si bien un DTD proporciona una forma fácil de validación, la sintaxis del mismo es totalmente diferente a lo que es XML. En busca de unificar un procesamiento común fue considerado definir un nuevo lenguaje basado en XML, logrando de esta manera así tener un criterio de procesamiento universal para todo documento.

Figura 11 – Documento de XML Schema


Aplicaciones de XML: XML RPC, WebServices y BPEL

Hoy en día las aplicaciones de XML se encuentran en un gran amplio espectro que abarca de simples usos (archivos de configuración, almacenamiento simple de datos, etc.) hasta tecnologías avanzadas basadas en XML (WebServices, lenguaje BPEL, etc.).

A continuación se presentan dos aplicaciones del uso de XML, por medio de estás se puede comprender cómo XML soluciona en gran parte el problema de la interconectividad de sistemas heterogéneos. Estas aplicaciones estas relacionadas por el problema que intentan solucionar, la primera de ellas es XML RPC y la segunda es el modelo de WebServices,

XML RPC

Una de las primeras aplicaciones de XML fue XML RPC (Remote Procedure Call). Esta aplicación basada en XML fue creada para poder realizar llamadas a procedimientos remotos sobre Internet. XML RPC fue el primer intento de crear una sintaxis para poder invocar a procedimientos remotos. Es importante mencionar, que antes que aparezca XML RPC ya se encontraban en el mercado CORBA y RMI. La idea de XML RPC era eliminar todas las complejidades que estas tecnologías traían consigo, por ejemplo en XML RPC no fueron consideradas características como el recolector de residuos, serialización de objetos, objetos stubs, etc.

XML RPC define de manera sencilla como enviar el nombre de un método y una lista de argumentos de un sistema a otro. La idea fundamental de XML RPC es que un documento XML es utilizado para indicar el nombre de un método y la lista de argumentos que este necesita. Este documento XML es enviado a un servidor web utilizando HTTP POST. El servidor procesa el documento XML y ejecuta el método solicitado, retornado luego el resultado en otro documento XML.

Para ver mejor el funcionamiento del protocolo, supongamos que se quiere ejecutar el método factorial el cual recibe como argumento un valor entero y retorna como resultado él factorial del argumento recibido. Este método podría ser ejecutado en el servidor cuya dirección es:

http://ww.xml-rpc.org/factorial.cgi

El siguiente documento XML representa la llamada al método remoto

       <?xml version="1.0"?> 
       <methodCall> 
     
                    <methodName>
                    factorial
                    </methodName> 
                    <params> 
                                  <param> 
                                  <value> <int> 3 </int> </value> 
                                  </param> 
                     </params> 
         </methodCall>

Al ser utilizado el método POST de HTTP, la llamada tendría el siguiente formato:

POST /factorial.cgi HTTP/1.0 
        Host: ww.xml-rpc.org 
        Content-Type: text/xml 
        Content-length: 167
        
        <?xml version="1.0"?> 
        <methodCall> 
                     <methodName>
                              factorial
                     </methodName> 
                     <params> 
                              <param> 
                              <value>  <int> 3 </int> </value>
                              </param> 
                    </params> 
        </methodCall>

Una característica de XML RPC es que no se encuentra orientado a un lenguaje particular, sino que simplemente define el formato de mensaje. Esta característica hace que el protocolo sea independiente del lenguaje, por lo tanto un cliente Java usando XML RPC podría ejecutar un procedimiento remoto implementado por ejemplo en lenguaje Perl o C.


                    HTTP/1.0 200 OK 
                    Date: Thu, 10 Jun 2004 20:12:36 GMT 
                    Server: Apache/1.3.12 (Unix) mod_perl/1.24 
                    Last-Modified: Thu, 10 Jun 2004 20:10:36 GMT 
                    Content-Length: 140 
                    Connection: close 
                    Content-Type: text/xml  
                    <?xml version="1.0"?>   
                    <methodResponse> 	
                        <params 	
                    
                            <param> 
                                <value> <int> 6 </int> </value> 
                            </param> 
                        </params    
                    </methodResponse>

El fragmento anterior muestra la respuesta del servidor a la llamada del método factorial.

XML RPC también contempla tipos más complejo de datos más complejos como ser arreglos o registros, el siguiente fragmento de código representa un arreglo de datos:

<array> 	
         <data> 		
               <value><string> Bach</string></value>		 
               <value><string> Heitor Villa Lobos  </string></value>	 	
               <value><string> Piazzola </string></value>	 	
        </data> 
</array>

Un arreglo tiene la particularidad de poder contener una secuencia de tipos no homogéneos de datos. Para representar tipos de datos más complejo de los lenguajes de programación (registros, clases, structs, etc.) XML RPC define el tipo struct, el siguiente ejemplo muestra una instancia de este tipo de dato

        <struct> 	
                        <member> 	
                        
                            <name>autor</name> 
                            <value><string> Sebastián Bach </string></value> 
                    
                        </member> 	
                    
                        <member> 	
                    
                            <name> fechaDeNacimiento </name> 
                            <value><string> 21 de Marzo de 1685 </string></value> 	
                    
                        </member> 
                    
                        <member> 	
                        
                            <name>ciudadYPaisDeNacimiento</name> 
                            <value><string> Eisenach-Alemania </string></value> 
                    
                        </member>
        </struct>

Para finalizar, la siguiente figura muestra el DTD que define el lenguaje XML RPC.

Figura 12 – Gramática de XML RPC

WebServices

Un servicio web es una aplicación que tiene las características de poder descubrirse, publicarse, localizarse, e invocarse a través de una red. Para el usuario o consumidor, el servicio es una caja negra que brinda una función, abstrayéndose del lenguaje de programación, entorno o sistema donde esa función esta implementada.

La idea fundamental es que un servicio es una aplicación que puede ser consumida por un cliente, no importa la plataforma subyacente, lenguaje de programación o entorno de desarrollo. Para lograr este alto nivel de abstracción, en el cual, sistemas de distinta naturaleza pueden comunicarse es necesario definir ciertos estándares que individualmente ataquen una parte del problema. Primero se necesita tratar los datos de manera uniforme para ello se utiliza XML, usando XML se puede lograr una representación de datos independiente de lenguaje. Para poder lograr la transferencia de mensajes fue definido el protocolo SOAP (Simple Object Access Protocol) el cual define el formato de los mensajes a ser intercambiados. Para la autodescripción del servicio se utiliza el lenguaje WSDL (WebServices Description Language). Tanto SOAP como WSDL son lenguajes basados en XML. Por último para poder exponer los servicios se definió un registro para la publicación conocido como UDDI (Universal Description, Discovery and Integration).

En este modelo forman parte diferentes componentes que juegan roles bien definidos, la siguiente figura muestra el esquema genérico de este modelo y sus principales componentes.

Figura 13 – Interacción de los componentes del modelo WebServices

Servicio

Es la aplicación que se expone para ser consumida. La aplicación debe ser implementada sobre una plataforma accesible en la red.

Proveedor del servicio

Puede verse como la plataforma que provee el servicio.

Registro del servicio

Es un repositorio el cual almacena las descripciones de los servicios. Es el lugar donde los proveedores de servicios publican sus ofertas y es el lugar donde los consumidores buscan los servicios.

Consumidor del servicio

Es la aplicación o cliente que busca e invoca el servicio.

El proceso de publicar consiste en que los proveedores de servicio publicitan la disponibilidad de un servicio dado en uno o más Registros de Servicios. La búsqueda es cuando los solicitantes del servicio interactúan con los Registros de Servicios para poder descubrir aquellos servicios que les son de interés. Por último el mecanismo de ligar es cuando los solicitantes de servicios negocian con los proveedores de servicios para poder acceder e invocar a los servicios acordados.

Lenguaje BPEL

El lenguaje BPEL define una notación para especificar el comportamiento del proceso del negocio basándose en WebServices. Esta notación estándar es llamada Business Process Execution Language for WebServices (BPEL4WS). El ser un modelo basado en WebServices los procesos que se describen en BPEL4WS exportan e importan funcionalidades usando solamente interfaces de servicios web.

Los procesos del negocio pueden ser descriptos de dos formas, en la primera de ella los procesos del negocio modelan el comportamiento actual de un participante en una interacción de negocio. En la segunda, los protocolos del negocio, usan descripciones del proceso que especifican el comportamiento del intercambio de mensaje mutuamente visible de cada una de las partes involucradas en el protocolo, sin revelar o exponer su conducta interna.

BPEL4WS proporciona una notación formal de los procesos del negocio y protocolos de interacción de negocios. Este nuevo modelo extiende el modelo de servicios web y habilita a soportar transacciones comerciales. BPEL4WS define un modelo de integración interoperable que debe facilitar la expansión del proceso de integración, ya sea, a nivel de intra-corporación (dentro de la misma empresa) como así también en la interacción con el exterior (empresa a empresa).

Este lenguaje define un modelo y una gramática para poder describir el comportamiento de un proceso de negocio basado en interacciones entre partners. Las interacciones entre los partners se produce por medio de interfaces de servicios web y la estructura de la relación al nivel de interface se encapsula en lo que se denomina partner-link. BPEL4WS define como las interacciones de servicios con estos partners son coordinadas para lograr una meta comercial, como así también el estado y lógica necesaria para esta coordinación. BPEL4WS también introduce los mecanismos sistemáticos necesarios para tratar con excepciones comerciales y las fallas de procesamiento. Por último, BPEL4WS introduce un mecanismo para definir, cómo actividades individuales o compuestas dentro de un proceso serán compensadas en caso que ocurra una excepción o un partner pida una revocación.

Desde el punto de vista de XML y sus tecnologías relacionadas, este lenguaje se encuentra en la cima de las especificaciones de: WSDL 1.1, XML Schema 1.0 y XPath 1.0 y muestra una vez más la potencialidad de XML.

Figura 14 – Fragmento de un documento BPEL

Es importante destacar que la última versión de WS llamada WebSphere Business Integration Server Foundation ya trae incorporada una perspectiva para el modelado de los procesos del negocio utilizando BPEL. Esta nueva versión brinda todas las funcionalidades necesarias (wizards, editor gráfico de BPEL, etc) para modelar el proceso de negocio, crear servicios web y enlazarlos, todo esto de una manera casi transparente para el desarrollador (afortunadamente).

Otras aplicaciones

CML (Chemical Markup Language)
El lenguaje de marcado de química (Chemical Markup Language), es una aplicación que fue desarrollada por Peter Murray-Rust. Esta aplicación es considerada la primer aplicación de XML. Este lenguaje trata de manipular información química usando XML/SGML y el lenguaje de programación Java.

MathML (Mathematical Markup Language)
Este es un lenguaje que permite incluir fórmulas matemáticas en páginas web sin que exista la necesidad de utilizar algún tipo de conversor. La gramática del lenguaje es muy potente permitiendo definir toda la gramática de la aritmética elemental hasta la gramática de cálculo y ecuaciones diferenciales.


Resumen

En este primer capítulo fue descripta brevemente la historia de los lenguajes de marcados, desde GML hasta XML. Describir la evolución histórica, es importante, para dejar claro que el problema de estructurar y compartir información no es algo de estos últimos años. Este problema ya tiene una larga historia conocida, simplemente que por la gran interconectividad que se ha logrado por el crecimiento web en estos últimos tiempos, el problema tuvo mayor trascendencia.
También fueron presentados los tópicos principales en lo que es la sintaxis de documentos XML y como validar instancias por medio de un DTD, entendiendo las diferencias entre un documento válido y un documento bien formado.

Por último se describieron brevemente tres aplicaciones basadas en XML como son: XML RPC, WebServices y BPEL. Estas tecnologías muestran claramente los beneficios que trae aparejado XML y como el mismo es el sustento fundamental de las mismas.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=SOA y servicios web , Rational
ArticleID=604279
ArticleTitle=XML y Tecnologías Relacionadas: Introducción
publish-date=07292011