viernes, 1 de agosto de 2014

XML con C# (C1A1): ¿Qué es XML?

Índice

0. Introducción
1. Breve Historia de XML
2. ¿Qué es XML?
3. Ejemplo Básico de un Documento XML
4. Beneficios de XML
5. Aplicaciones con XML
6. Conclusiones
7. Glosario
8. Literatura & Enlaces

0. Introducción

En este primer artículo describiré el concepto de XML, además de su historia, versiones lanzadas y futuras, aplicaciones, el futuro de, y el porqué de esta tecnología. Es importante introducir todos estos conceptos y datos para comprender su existencia en el mundo de la construcción de soluciones software, y la estrecha relación con Microsoft .NET Framework.

1. Breve Historia de XML

XML empieza como una propuesta para la estructuración de datos, en la que sobresalen características que otras soluciones existentes no cubrían:
  • Personalización de la estructura por parte del usuario (programador o autor de contenido).
  • Flexibilidad en la composición, lectura, escritura, y otras tareas típicas de manipulación.
  • Facilidad de lectura e interpretación por parte de humanos y máquinas.
  • Composición de gramáticas de acuerdo al contexto de aplicación.
  • Compatibilidad e integración con el desarrollo de aplicaciones en el auge de Internet y la World Wide Web (WWW).
  • (Entre muchas otras características importantes.)
XML tiene sus raíces en el estándar SGML [7] (Standard Generalized Markup Language, ~estándar de lenguaje de marcado generalizado). Este último propone guías para el diseño de documentos basados en etiquetas y estructura simple. Debido a la generalización de este lenguaje, XML se presenta como un estándar más simple para la composición de documentos estructurados y basados en etiquetas (o marcas). Las personas involucradas en esta propuesta son:
  • Michael Sperberg-McQueen: Encargado de las decisiones de diseño del lenguaje, y el marco teórico. (4 de diciembre de 1997.)
  • James Clark: Líder técnico del equipo de trabajo XML, y contribuidor del término XML. Otras alternativas a este nuevo estándar, también fueron propuestas:
    • MAGMA: Minimal Architecture for Generalized Markup Application
    • SLIM: Structured Language for Internet Markup
    • MGML: Minimal Generalized Markup Language
  • Tim Brag: Junto con Michael Sperberg-McQueen y Jean Paole como co-editores de la especificación del lenguaje.
Durante más de 20 semanas de trabajo (julio a noviembre de 1996) el lenguaje XML ya contiene su propia especificación en un borrador. Después de más de un año de trabajo adicional la primera versión -XML 1.0- fue lanzada como recomendación de la W3C [8]: 10 de febrero de 1998.


Entre las principales metas de diseño de este lenguaje establecidas por el grupo de trabajo están [2]:
  • Uso en aplicaciones Internet
  • Compatibilidad con SGML
  • Multipropósito
  • Facilidad de autoría
  • Legibilidad
  • Formalización
  • Conciso

2. ¿Qué es XML?

XML (Extensible Markup Language) es un lenguaje de marcado para la descripción o representación de datos [1]. Está compuesto por un conjunto de reglas para la representación de datos textuales legible tanto para humanos y máquinas. Los datos representados en un documento de este tipo, no llevan a cabo ninguna tarea o aplicación interesante, para ello hay que utilizar otras herramientas para que permitan su manipulación: un analizador o parser.

La flexibilidad de este lenguaje facilita la creación de documentos para la representación de estructuras de datos arbitrarias, es decir, de acuerdo al contexto o dominio de aplicación.


Por otro lado, es importante expresar la diferencia entre uno de los lenguaje de marca más conocidos -HTML (Hypertext Markup Language)- [9] y XML: HTML es usado para la presentación de datos, por otro lado XML, está enfocado en la representación (estructuración) de los datos. Otra diferencia notable, es que XML consiste en un conjunto de etiquetas (o marcas) definidas por el propio usuario, esto se traduce en alta flexiblidad y usabilidad en la creación de estructuras de datos para la representación de documentos arbitrarios a un dominio de aplicación; mientras, HTML (por poner como caso, nuevamente) tiene definido un conjunto estricto de etiquetas.

3. Ejemplo Básico de un Documento XML

Veamos un ejemplo de un archivo XML que representa una estructura de datos de clientes.

En la primera línea se especifica la versión y el sistema de codificación para este documento XML:
  • Versión: 1.0
  • Codificación: UTF-8
Un documento XML define una etiqueta raíz de la cual se pueden desprender otras etiquetas a modo de anidamiento. Este tipo de jerarquización es conocida como árbol. Notemos en este caso como la etiqueta exterior clientes contiene al mismo otras, las cuales podríamos describir como hijas o instancias. Del mismo modo, las etiquetas anidadas (cliente) poseen otras etiquetas anidadas. Cada una de estas etiquetas describen y estructuran la información que almacenaremos en el documento XML para su futura manipulación por parte de un parser (o analizador).

4. Beneficios de XML

En un principio enunciamos que XML fue presentando como una propuesta para la estructuración de datos basado en etiquetas, pero en sí, cuáles son las bondades o beneficios de este tipos de representación; de acuerdo con [1] y [2] con el uso de XML obtendríamos los siguientes beneficios:
  • Estándar industrial: Gracias a que XML es una recomendación de la W3C. Inherentemente, esto posibilita el establecimiento de XML como un estándar de industria independiente de cualquier propietario. Esto es lo que potencializa que la industria del software adopte XML como estándar para el intercambio de datos entre múltiples plataformas.

  • Descripción intuitiva: En el ejemplo de la sección 3 vimos que leer un documento XML resulta relativamente cómodo gracias a su forma de jerarquización basada en árbol.

  • Extensibilidad: Al final de la sección 2 mencionamos una diferencia sobresaliente entre HTML y XML: XML no posee límite en cuanto al número y tipo de marcas que podemos crear para estructurar un documento y sus datos.

  • Procesamiento: A diferencia de otros formatos (e.g., CSV [10]), XML no está limitado a la posición de sus elementos de datos, es decir, no existen delimitadores (como en CSV): esto evita que tengamos que conocer esas posiciones para procesar (leer, actualizar, eliminar) datos del documento.

  • Intercambio de datos: El diseño de XML facilita el intercambio de datos entre aplicaciones y plataformas heterogéneas. No importa si hemos elaborado una aplicación en Java, y tenemos otra en .NET, el establecimiento de un lenguaje común de comunicación lo podemos definir con XML.

  • Compartición de datos: Un sistema legado creado, por ejemplo, con FoxPro (sobre plataforma Windows) y uno moderno creado con Python (sobre plataforma Linux), pueden establecer como mecanismo de compartición de datos a XML.
  • Gramáticas personalizadas: XML es un lenguaje de marcas extensibles, por tanto, lo podemos utilizar para crear gramáticas o vocabularios personalizados al contexto de aplicación. Ejemplos actuales en el mercado:
    • WAP (Wireless Application Protocol), 
    • WML (Wireless Markup Language), 
    • SOAP (Simple Object Access Protocol.
  • Internacionalización: XML pueden contener datos textuales en múltiples idiomas gracias a su acoplamiento con el estándar Unicode [11].

5. Aplicaciones con XML

Para destacar los beneficios mencionados anteriormente, veamos un ejemplo particular de uso de XML como lenguaje de intercambio y comunicación entre distintos componentes de un arquitectura de aplicación: servidores, y clientes.

En la Figura 1 observamos una aplicación Web basada en la arquitectura cliente servidor. El cliente corresponde con un navegador Web que hace solicitudes al servidor. El servidor se encarga de realizar el procesamiento lógico de esas solicitudes, y retornar la respuesta en formato HTML.
Arquitectura cliente servidor tradicional
Figura 1. Arquitectura cliente servidor tradicional [1].
A pesar de su utilidad en múltiples contextos, esta arquitectura tiene ciertas desventajas. [1]:
  • Está dimensionada solo para clientes basados en navegador Web.
  • La respuesta desde el servidor es en formato HTML.
  • Al realizar cambios en la presentación de los datos, per se, debemos cambiar la lógica de presentación de estos mismos datos. Existe un alto grado de acoplamientos entre datos y la presentación de estos.
  • La inclusión futura de un nuevo tipo de cliente, por ejemplo desktop, requiere de maniobras complicadas.
Frente a estas desventajas, es cuando XML resulta ser la solución idónea para la comunicación e intercambio de datos e independiente de dispositivos o sistemas.

En la Figura 2 la comunicación entre diferentes clientes se realiza a través de un único lenguaje: XML. Esto posibilita la inclusión de nuevos clientes con relativa facilidad, ya que la estructura de los datos XML de solicitud y respuesta pueden ser manipulados a través de un parser (o analizador).
Arquitectura cliente servidor con XML
Figura 2. Arquitectura cliente servidor con XML [1].
Ventajas de esta arquitectura cliente servidor con XML:
  • La aplicación puede incluir una variedad de clientes.
  • Separación de responsabilidades en el procesamiento de datos y el formato de presentación.
  • La inclusión de un nuevo cliente no requiere del cambio de la lógica de procesamiento.
  • Cada cliente da formato a los datos generados por la respuesta generada por el servidor. Un cliente desktop puede utilizar estos datos usando los componentes WinForms, mientras que un cliente basado en navegador Web puede utilizar el conjunto de componentes HTML y CSS para dar formato a estos estos.

6. Conclusiones

Hemos estudiado la naturaleza del lenguaje de marcas extensibles XML, además de sus beneficios en la creación de aplicaciones internacionables, extensibles, intercomunicables, de arquitectura de comunicación neutra. Conocimos que XML estructura un documento basado en etiquetas, y que estas etiquetas se conforman en un árbol de jerarquía. Al final presentamos un ejemplo de un arquitectura cliente-servidor para resaltar la diferencia de comunicación con un lenguaje preestablecido (HTML) y uno genérico (XML); preferimos este último debido a su naturaleza que lo hace independiente de una tecnología o plataforma. Para la próxima ocasión, dedicaremos tiempo para comprender las reglas de la gramática de XML.

Glosario

  • Analizador
  • Arquitectura cliente-servidor
  • Desktop
  • Internet
  • Parser
  • SGCML
  • XML
  • WWW

Literatura & Enlaces

[1]: Beginning XML with C# 2008 From Novice to Professional by Bipin Joshi. Copyright 2008 Bipin Joshi, 978-1-4302-0998-0.
[2]: XML - The History of Xml - http://www.totalxml.net/history-xml.php
[3]: XML - Wikipedia, the free encyclopedia - http://en.wikipedia.org/wiki/XML
[4]: A Brief History of XML | Chris Collins - http://ccollins.wordpress.com/2008/03/03/a-brief-history-of-xml/
[5]: XML: An Introduction - Brief History - http://www.roseindia.net/xml/xml-history.shtml
[6]: A Brief History of XML | Flash Reference Guide | Peachpit - http://www.peachpit.com/articles/article.aspx?p=100577&seqNum=179
[7]: Standard Generalized Markup Language - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/SGML
[8]: World Wide Web Consortium - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/World_Wide_Web_Consortium
[9]: HTML - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/HTML
[10]: Comma-separated values - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/Comma-separated_values
[11]: Unicode - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/Unicode


S

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.