viernes, 12 de septiembre de 2014

XML con C# (C1A6): Lenguaje de Consulta de Documentos XML - XPath

Índice

0. Introducción
1. ¿Qué es XPath?
2. Consultas con XPath
3. XPath y C#
4. Conclusiones
5. Glosario
6. Literatura & Enlaces

0. Introducción

Ahora nos adentráremos en uno de los componentes de contexto XML para la realización de consultas sobre la estructura y el contenido de un documento de esta naturaleza. Aprenderemos acerca de los esenciales para realizar consultas a través del lenguaje XPath. Este lenguaje, como ya veremos, nos permite la selección de elementos de la estructura arbórea de un documento XML, para la exploración o extracción de contenido de interés. Lo que SQL es para las base de datos relacionales, XPath es para documentos XML.

1. ¿Qué es XPath?

XPath es un lenguaje de consulta para encontrar información de interés en un documento XML. Además, por medio de XPath podemos calcular valores a tipos de datos comunes (e.g., cadenas de caracteres, números, valores booleanos) a partir del contenido del documento XML.

Por otra parte, XPath ha sido definido por W3C [4], y en la actualidad existen tres versiones de este estándar [2]:
  • XPath 1.0: Lanzada el 16 de noviembre de 1999. Se le considera la versión mayormente implementada y en uso sobre API de lenguajes de programación (e.g., C#, Java, JavaScript).
  • XPath 2.0: Lanzada el 23 de enero de 2007. Posee un número mayor de construcciones y mayor soporte para tipos de sistema.
  • XPath 3.0 lanzada el 8 de abril de 2014. Provee soporte para nuevas funciones, en particular, funciones de para valores de primera clase (cuando trabajemos a fondo XML y XPath veremos ejemplos particulares de este tipo de construcciones con teoría y práctica extendidas).

2. Consultas con XPath

Para entender cómo se realizan consultas con XPath, pongamos como ejemplo esta estructura de documento XML:

<A>
    <B>
        <C/>
    </B>
</A>

Expresiones tales como /A/B/C nos permitirá seleccionar los elementos de tipo C que pertenezcan a B, y que este último sea hijo (en términos de la estructura arbórea) de A.

Como nos advierten en [2], este tipo de sintaxis utilizada por XPath está diseñada con base en los identificadores de recursos uniformes-URI y la sintaxis de rutas de directorios de sistemas operativos basados en UNIX.

A continuación, pasemos a crear un ejemplo concreto a partir de un archivo de configuración XML sobre el que especificaremos dos consultas XPath para extraer datos a partir del uso de valores de elementos:

Dos consultas que podríamos poner como ejemplos:

/config/databases/database[name='dev']/url

Resultado (uso de herramienta online XPath Tester [6]):

Element='127.0.0.1'

O:

/config/databases/database[name='produccion']/password


Da como resultado:

Element='Z#c|[U?[9l)'WXu'


En general, sobre la Figura 1 [1] se describe el proceso de selección de una un nodo y su el posterior procesamiento a través de XPath:
Esquema general de una consulta con XPath
Figura 1. Esquema general de una consulta con XPath [1].

3. XPath y C#

El lenguaje C# cuenta con elementos de programa en la biblioteca base de clases (e.g., System.Xml) que permite la manipulación de documentos XML además del uso de XPath para realizar consultas y obtener información de interés.

Para demostrar las capacidades de C# usaremos el archivo XML de la sección anterior, y la definición de un archivo C# para los elementos de una base de datos en concreto:

Nos interesa destacar la línea 18 en donde especificamos una de las consultas de la sección anterior para la extracción del texto del nodo url para la base de datos con nombre dev.

Compilación:


  1. csc /target:exe UsoXpath.cs

Ejecución assembly:


  1. .\UsoXpath.exe

> Prueba de ejecución:
Ejecución assembly UsoXpath.exe
Figura 2. Ejecución assembly UsoXpath.exe.

4. Conclusiones

Comprendimos los básicos para la realización de consultas sobre la estructura y contenido de un documento XML a través del lenguaje XPath. Vimos que este lenguaje provee una sintaxis muy sencilla análoga a la utilizada por los sistemas operativos basados UNIX y direcciones de identificadores uniformes de recursos-URI. En el próximo artículo XML conoceremos la integración de XML sobre la Microsoft .NET Framework.

5. Glosario

  • Consulta
  • Elemento
  • Estructura
  • Nodo
  • SQL
  • URI
  • W3C
  • XML

6. 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]: XPath - Wikipedia, the free encyclopedia - https://en.wikipedia.org/wiki/XPath
[3]: XPath Tutorial - XPath Tutorial
[4]: XML Path Language (XPath) - http://www.w3.org/TR/xpath/
[5]: Free Online XPath Tester / Evaluator - FreeFormatter.com - http://www.freeformatter.com/xpath-tester.html


S

No hay comentarios:

Publicar un comentario

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