viernes, 8 de agosto de 2014

XML con C# (C1A2): Reglas de la Gramática de XML

Índice

0. Introducción
1. Composición de un Documento XML
2. Reglas Gramaticales Básicas
2.1 Sensibilidad mayúsculas y minúsculas
2.2 Un único elemento raíz
2.3 Cierre y apertura de etiquetas
2.4 Anidamiento de etiquetas
2.5 Valores de atributos
3. Conclusiones
4. Glosario
5. Literatura & Enlaces

0. Introducción

Ya que hemos comprendido el concepto básico de XML, además de su utilidad en el primer artículo (C1A1 - ¿Qué es XML?); es momento de adentrarnos en los conceptos claves de las reglas de la gramática de XML. En esta oportunidad, describiremos con más detalles el vocabulario básico de composición de un documento XML, las reglas inherentes a este vocabulario para crear un documento XML bien formado (well-formed, en inglés), así como otras reglas de bastante interés a la hora de componer cualquier documento de esta naturaleza y poder representar correctamente la información requerida por nuestras aplicaciones.

1. Composición de un Documento XML

En la primera parte de esta serie de artículos XML (¿Qué es XML?) comprendimos de lo que se trata este lenguaje de representación de información, además, escribimos un documento que consistía en un listado de clientes con estructura XML. La descripción que hicimos fue muy breve debido a su propósito introductorio. Ahora, haremos un recorrido más detenido por cada parte de un documento de este naturaleza, con el objetivo de que empecemos a entender las reglas de su composición. Lo primero que tenemos que hacer es escribir un documento con detalles adicionales al presentando en [4]:

En la línea 1 tenemos lo que se conoce como instrucción de procesamiento. Esta instrucción de procesamiento indica a las aplicaciones de qué tipo de documento se está manipulando (i.e., lectura, escritura). Características de esta instrucción:
  • Etiquetas de apertura y de cierre: <? y ?>
  • Atributos:
    • version: Versión 1.0 (recomendación de W3C [5])
    • encoding: Sistema de codificación de caracteres del documento UTF-8 [6].
Sobre la línea 2 se especifica un comentario. Los comentarios son obviados por cualquier analizador de documentos. Estos comentarios nos sirven para documentar el archivo XML y dar indicios de su propósito. Con la sintaxis <-- comentario > podemos escribir cuanto texto sea necesario sobre múltiples líneas del documento. Más adelante, en la línea 3, nos encontramos con el elemento raíz: clientes. Este elemento raíz constituye el elemento de documento (o document element, en inglés) del documento XML. Estrictamente, un documento XML sólo puede contener un elemento de documento, como en el caso de ejemplo del archivo Clientes.xml. En [1] se refieren a este como elemento raíz. Gráficamente, este tipo de estructura la podemos representar como un árbol invertido; descrito en la Figura 1.
Estructura arbórea del documento XML Clientes
Figura 1. Estructura arbórea del documento XML Clientes.

En código el elemento raíz inscribe cualquier elemento contenido o anidado, en este caso cada uno de los clientes del documento. Esto se logra con las etiquetas de apertura y cierre:
  • Etiqueta de apertura: <clientes>
  • Etiqueta de cierre: </clientes>
Notemos que el contenido de las líneas 4-17 describen dos clientes. Estos clientes se representan con el uso de la etiqueta <cliente> y </cliente>. Aquí vale introducir un vocabulario diferenciador útil para comprender la gramática de XML:
  • Elemento: Se refiere a la apertura y cierre de etiquetas, como las instancias de cliente.
  • Etiqueta: Cualquiera de las dos etiquetas: apertura (<cliente>) y cierre (</cliente>).
  • Nodo: Se refiere a un elemento como tal, y a todos los elementos contenidos (anidados) en él mismo. Ejemplo de esto es el elemento clientes y cada instancia cliente. Al mismo tiempo cada elemento (instancia) ciente está constituido por otros nodos: nombre, telefono, y comentarios.
Un elemento, como cliente puede contener una serie de atributos. En las líneas 4 y 11 se especifica el atributo ID como miembro de cliente, que en este caso asigna un identificador unívoco a cada instancia de este elemento.


Vale agregar, que para la inclusión de cadenas de caracteres que pudieran contener caracteres especiales para la composición de la gramática de un documento XML, podemos recurrir al uso de la sección CDATA (character data) para representar tal información sin degenerar la estructura del documento.

Ahora que contamos con esta referencia básica, podemos pasar a dictar y entender cada una de las reglas de la gramática de XML para la composición de documentos bien formados (well-formed).

2. Reglas Gramaticales Básicas

2.1 Sensibilidad Mayúsculas y Minúsculas

XML, como C#, es un lenguaje sensible a mayúsculas y minúsculas; esto quiere decir que XML diferencia entre los caracteres constituyes del nombre de una etiqueta. En el caso particular, un analizador de documentos XML reconoce como elementos distintos:
  • <clientes>
  • <Clientes>
  • <CLIENTES>

2.2 Un único elemento raíz

En la Figura 1 mostramos la estructura arbórea de un documento XML. Este tipo de estructura de datos dicta que un documento XML sólo puede contener un elemento raíz (o elemento de documento). Para el ejemplo del archivo clientes.xml, el elemento raíz es clientes.

2.3 Cierre y apertura de etiquetas

A diferencia de otros lenguajes de marcado, como HTML, XML resulta ser estricto en la apertura y cierre de etiquetas. Esto quiere decir que cada vez que abramos una etiqueta, estamos obligados a cerrarla. Sin embargo para etiquetas que no contienen elementos anidados, se puede utilizar la notación simplificada:

<cliente ID="C001"/>

2.4 Anidamiento de etiquetas

Las etiquetas se deben anidar siguiendo el siguiente orden:
  • <A>
    • <B>
    • </B>
  • </A>
Esto significa que la etiqueta A es la última en cerrarse después de que todas sus etiquetas anidadas se hayan cerrado correctamente. Esta regla la podemos aplicar de forma recursiva para cualquier anidamiento que sea necesario.

2.5 Valores de atributos

El valor de un atributo debe ir encerrado entre comillas dobles: "".

Esto es mandatorio en XML, en otros lenguajes como HTML, se puede omitir o incluir el uso de las comillas dobles para el valor de un atributo. Por ejemplo:

<IMG SRC=logo.png>

o

<IMG SRC="logo.png">


Para XML se debe utilizar esta última notación.

3. Conclusiones

Hemos descrito hasta 5 reglas gramaticales básicas para la composición de un documento XML: sensibilidad a mayúsculas y minúsculas, un único elemento raíz de la estructura arbórea, correcto uso de apertura y cierre de etiquetas, recursividad del anidamiento de las etiquetas, y al final, el uso de comillas dobles para asignación de valor a un atributo. El hecho de seguir estas reglas gramaticales nos permitirá componer documentos XML bien formados. Para el próximo artículo hablaremos sobre los artefactos y esquemas de validación de XML.

4. Glosario

  • Árbol invertido
  • Atributo
  • Character data
  • Composición
  • Elemento
  • Estructura de árbol
  • Etiqueta
  • Instrucción de procesamiento
  • Representación
  • Sistema de codificación
  • Validación
  • W3C
  • XML

5. 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 - Wikipedia, the free encyclopedia - http://en.wikipedia.org/wiki/XML
[3]: An introduction to XML grammar - TechRepublic - http://www.techrepublic.com/article/an-introduction-to-xml-grammar/#
[4]: XML con C# (C1A1): ¿Qué es XML? | OrtizOLón Software (xCSw) - http://ortizol.blogspot.com/2014/08/xml-con-csharp-c1a1-que-es-xml.html
[5]: World Wide Web Consortium - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/World_Wide_Web_Consortium
[6]: UTF-8 - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/UTF-8


J

No hay comentarios:

Publicar un comentario

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