lunes, junio 14, 2010

7.5. Almacenamiento de datos XML

Los documentos y los requerimientos de almacenamiento de datos XML pueden ser pensados a menudo en dos categorías generales: centrados en los datos y centrados en los documentos. Las demandas centradas en los datos suelen incluir documentos menos estructurados, y es apropiada para ítemes. Si el documento XML tiene una estructura bien definida y contiene datos actualizables usados en maneras diversas, el documento es típicamente centrado en los datos. Los datos centrados en el documento tienden a ser más impredecibles
en tamaño y contenido que los centrados en los datos los cuales son altamente estructurados, con tipos de datos de tamaño limitado y reglas menos flexibles para campos opcionales y contenido.

Los sistemas de bases de datos deben ser capaces de exponer los datos relacionales como XML y almacenar el XML recibido como datos relacionales para transferir, obtener y almacenar transparentemente los datos requeridos por la aplicación.

Si bien es posible almacenar datos centrados en el documento en bases de datos relacionales u orientados al objeto, esto resultará típicamente en duplicar el trabajo de un sistema administrador de contenido. Similarmente, dado que un sistema de administración de contenido está usualmente construido sobre una base de datos orientada al objeto o jerárquica, tratar de usarlo como base de datos probablemente será frustrante.

Las estrategias existentes pueden ser descompuestas en tres métodos básicos:

1.- Almacenar el documento completo en forma de texto, como un gran objeto binario (BLOB) en una base de datos relacional.

Esta es una buena estrategia si el documento XML contiene contenido estático que sólo será modificado cuando el documento completo es reemplazado. Esta estrategia es común para datos centrados en el documento conforme estos datos son obtenidos y almacenados típicamente como una unidad. Almacenar el documento completo en formato de texto es fácil de implementar dado que no se necesita mapeo o traducción, pero puede limitar también la búsqueda, indexamiento y granularidad de la obtención de documentos XML. Por otro lado, el documento XML se mantiene como era antes de ser almacenado, lo que minimiza el trabajo de rearmarlo luego de su obtención.

2.- Almacenar una forma modificada del documento completo en el sistema de archivos. Este método es popular cuando el número de documentos es pequeño y los documentos XML son infrecuentemente actualizados y transferidos entre sistemas de archivos. Almacenar una forma modificada del documento completo en el sistema de archivos es bastante limitado dado que el sistema de archivos no hace una base de datos muy buena. Este método funciona para un número menor de documentos XML y típicamente puede ser incluido solamente en el diseño dado que el documento XML se está moviendo por el sistema de archivos. Eventualmente, los contenidos de un documento XML podrían terminar en una base de datos.

3.- Mapear la estructura de los datos en el documento en la base de datos. Por ejemplo, mapear un documento XML que contiene una orden de ventas con tablas como Ordenes, Itemes, Partes, y Clientes u objetos como Orden, Item, Parte, y Cliente. Si la estructura del documento XML no es compatible con la estructura de la base de datos, el documento debe ser transformado para ajustarlo a la estructura de la base de datos antes de almacenarlo. Mapear la estructura de los datos en el documento a la base de datos es una opción muy popular y es el foco de muchas características habilitadoras de XML en los productos principales de bases de datos y es el tema de muchos artículos y libros en el último par de años.

La diferencia entre los datos centrados en los datos y los centrados en el documento no siempre es fácil de identificar. Típicamente los requerimientos que manejan los datos se inclinan con mayor peso en una dirección o la otra. Mas aún, tomarse mayor tiempo en entender si los datos son más centrados en el documento o en los datos será ventajoso cuando se elija la estrategia de almacenamiento.

7.4.3 XSLT

XSLT o Transformaciones XSL es un estándar de la organización W3C que presenta una forma de transformar documentos XML en otros e incluso a formatos que no son XML. Las hojas de estilo XSLT - aunque el término de hojas de estilo no se aplica sobre la función directa del XSLT - realizan la transformación del documento utilizando una o varias reglas de plantilla. Estas reglas de plantilla unidas al documento fuente a transformar alimentan un procesador de XSLT, el que realiza las transformaciones deseadas poniendo el resultado en un archivo de salida, o, como en el caso de una página web, las hace directamente en un dispositivo de presentación tal como el monitor del usuario.

Actualmente, XSLT es muy usado en la edición web, generando páginas HTML o XHTML. La unión de XML y XSLT permite separar contenido y presentación, aumentando así la productividad.

7.4.2 Xquery

XQuery proporciona los medios para extraer y manipular información de documentos XML, o de cualquier fuente de datos que pueda ser representada mediante XML, como por ejemplo Bases de Datos Relacionales o documentos ofimáticos.

XQuery utiliza expresiones XPath para acceder a determinadas partes del documento XML. Añade además unas expresiones similares a las usadas en SQL, conocidas como expresiones FLWOR. Las expresiones FLWOR toman su nombre de los 5 tipos de sentencias de las que pueden estar compuestas: FOR, LET, WHERE, ORDER BY y RETURN.

También incluye la posibilidad de construir nuevos documentos XML a partir de los resultados de la consulta. Se puede usar una sintaxis similar a XML si la estructura (elementos y atributos) es conocida con antelación, o usar expresiones de construcción dinámica de nodos en caso contrario. Todos estos constructores se definen como expresiones dentro del lenguaje, y se pueden anidar arbitrariamente.

El lenguaje se basa en el modelo en árbol de la información contenida en el documento XML, que consiste en siete tipos distintos de nodo: elementos, atributos, nodos de texto, comentarios, instrucciones de procesamiento, espacios de nombres y nodos de documentos.

El sistema de tipos usado por el lenguaje considera todos los valores como secuencias, asumiéndose un valor simple como una secuencia de un solo elemento. Los elementos de una secuencia pueden ser valores atómicos o nodos. Los valores atómicos pueden ser números enteros, cadenas de texto, valores booleanos, etc. La lista completa de los tipos disponibles está basada en las primitivas definidas en XML Schema.

XQuery 1.0 no incluye capacidad de actualizar los documentos XML. Tampoco puede realizar búsquedas textuales. Estas dos capacidades están siendo objeto de desarrollo para su posible incorporación en la siguiente versión del lenguaje.

XQuery es un lenguaje de programación funcional que consta en su totalidad de expresiones. No hay sentencias, aun cuando algunas de las palabras claves utilizadas puede sugerir un comportamiento similar al de una sentencia. Para ejecutar una función, la expresión dentro del cuerpo de la misma se evalúa y se retorna el resultado obtenido. Por ejemplo, para escribir una función que duplique el valor suministrado como argumento, escribiríamos:

declare function local:doubler($x) { $x * 2 }

Para escribir una consulta XQuery que retorne el texto "Hola, Mundo", escribimos la expresión:

"Hola, Mundo"

Aplicaciones

Una relación de algunos ejemplos de uso de XQuery:

* Extraer información de una base de datos para usarla en un Servicio Web.

* Generar un resumen de la información almacenada en una base de datos XML.

* Realizar búsquedas textuales en la web y compilar los resultados de la misma.

* Seleccionar y transformar datos de XML a XHTML de forma que se puedan publicar en la Web.

* Obtener datos desde diferentes fuentes con vistas a ser integradas por la aplicación.

* Dividir un documento XML que representa una serie de múltiples transacciones en varios documentos XML, uno por cada transacción.

7.4.1 Xpath

XPath (XML Path Language) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y seleccionar teniendo en cuenta la estructura jerárquica del XML. XPath fue creado para su uso en el estándar XSLT, en el que se usa para seleccionar y examinar la estructura del documento de entrada de la transformación.
El modelo de datos de XPath

Un documento XML es procesado por un analizador (o parser) construyendo un árbol de nodos. Este árbol comienza con un elemento raíz, que se diversifica a lo largo de los elementos que cuelgan de él y acaba en nodos hoja, que contienen solo texto, comentarios, instrucciones de proceso o incluso que están vacíos y solo tienen atributos.

La forma en que XPath selecciona partes del documento XML se basa precisamente en la representación arbórea que se genera del documento. De hecho, los "operadores" de que consta este lenguaje nos recordarán la terminología que se utiliza a la hora de hablar de árboles en informática: raíz, hijo, ancestro, descendiente, etc.

Un caso especial de nodo son los nodos atributo. Un nodo puede tener tantos atributos como desee, y para cada uno se le creará un nodo atributo. No obstante, dichos nodos atributo NO se consideran como hijos suyos, sino más bien como etiquetas añadidas al nodo elemento.

Todo el procesamiento realizado con un fichero XML está basado en la posibilidad de direccionar o acceder a cada una de las partes que lo componen, de modo que podamos tratar cada uno de los elementos de forma diferenciada.

El tratamiento del fichero XML comienza por la localización del mismo a lo largo del conjunto de documentos existentes en el mundo. Para llevar a cabo esta localización de forma unívoca, se utilizan los URI (Unifom Resource Identifiers), de los cuales los URL (Unifom Resource Locators) son sin duda los más conocidos.

Una vez localizado el documento XML, la forma de seleccionar información dentro de él es mediante el uso de XPath, que es la abreviación de lo que se conoce como XML Path Language. Con XPath podremos seleccionar y hacer referencia a texto, elementos, atributos y cualquier otra información contenida dentro de un fichero XML.

XPath en sí es un lenguaje sofisticado y complejo, pero distinto de los lenguajes procedurales que solemos usar (C, C++, Basic, Java...). Además, como casi todo en el mundo de XML, aún está en estado de desarrollo, por lo que no es fácil encontrar herramientas que incorporen todas sus funcionalidades.

XPath es a su vez la base sobre la que se han especificado nuevas herramientas que aprovechar para el tratamiento de documentos XML. Herramientas tales como XPointer, XLink y XQuery (el lenguaje que maneja los documentos XML como si de una base de datos se tratase). Así, XPath sirve para decir cómo debe procesar una hoja de estilo el contenido de una página XML, pero también para poder poner enlaces o cargar en un navegador zonas determinadas de una página XML, en vez de toda la página.

7.4. Consultas y transformación.

Dado el creciente número de aplicaciones que usan XML para intercambiar, transmitir y almacenar datos, las herramientas para una gestión efectiva de datos XML están siendo cada vez más importantes. En particular las herramientas para consultar y transformar los datos XML son esenciales para extraer información de grandes cuerpos de datos XML y para convertir los datos entre distintas representaciones (esquemas) en XML. Al igual que la salida de una consulta relacional es una relación, la salida de una consulta XML puede ser un documento XML. Como resultado, la consulta y la transformación se pueden combinar en una única herramienta.

Se usa en todos estos lenguajes un modelo de árbol de datos XML. Un documento XML se modela como un árbol con nodos para los elementos y atributos. Los nodos elemento pueden tener nodos hijo, los cuales pueden ser subelementos o atributos del elemento. De igual forma, cada nodo (ya sea atributo o elemento) distinto del elemento raíz tiene un nodo padre, que es un elemento. El orden de los elementos y atributos en el documento XML se modela ordenando los nodos hijos de un árbol. Los términos padre, hijo, ascendiente, descendiente y hermano se interpretan en el modelo de árbol de datos XML.



7.3.2 Esquemas XML

Utilizado para describir la estructura y las restricciones de los contenidos de los documentos XML de una forma muy precisa, más allá de las normas sintácticas impuestas por el propio lenguaje XML. Se consigue así una percepción del tipo de documento con un nivel alto de abstracción. Fue desarrollado por el World Wide Web Consortium (W3C) y alcanzó el nivel de recomendación en mayo de 2001.

El término "XML Schema" es utilizado con varios significados dentro del mismo contexto de descripción de documentos, y es importante tener en cuenta las siguientes consideraciones:

1. "XML Schema" (Esquema XML) es el nombre oficial otorgado a la recomendación del W3C, que elaboró el primer lenguaje de esquema separado de XML (la definición de tipo de documentos (DTD) forma parte de XML).
2. Es habitual referirse a los esquemas como "XML schema" de forma genérica, pero se recomienda utilizar el término “documento esquema” (schema document) o "definición de esquema"(schema definition), y reservar “XML Schema” para la denominación de este lenguaje específico.
3. Aunque genéricamente se utilice "XML schemas", XSDL (XML Schema Definition Language) es el nombre técnico de los lenguajes de esquema de XML como:

* Definición de Tipo de Documento (DTD)
* XML Schema
* RELAX NG
* Schematron
* Namespace Routing Language (NRL)
* Document Schema Definition Languages (DSDL)
* Document Definition Markup Language (DDML)
* Document Structure Description (DSD)
* SGML
* Schema for Object-Oriented XML (SOX)

domingo, junio 13, 2010

Definicion de tipo de documentos

Una definición de tipo de documento o DTD (siglas en inglés de document type definition) es una descripción de estructura y sintaxis de un documento XML o SGML. Su función básica es la descripción del formato de datos, para usar un formato común y mantener la consistencia entre todos los documentos que utilicen la misma DTD. De esta forma, dichos documentos, pueden ser validados, conocen la estructura de los elementos y la descripción de los datos que trae consigo cada documento, y pueden además compartir la misma descripción y forma de validación dentro de un grupo de trabajo que usa el mismo tipo de información.

La DTD es una definición, en un documento SGML o XML, que especifica restricciones en la estructura y sintaxis del mismo. La DTD se puede incluir dentro del archivo del documento, pero normalmente se almacena en un fichero ASCII de texto separado. La sintaxis de las DTD para SGML y XML es similar pero no idéntica.

La definición de una DTD especifica la sintaxis de una aplicación de SGML o XML, que puede ser un estándar ampliamente utilizado como XHTML o una aplicación local.

Qué describe una DTD?
as DTD se emplean generalmente para determinar la estructura de un documento mediante etiquetas (en inglés tags) XML o SGML. Una DTD describe:

* Elementos: indican qué etiquetas son permitidas y el contenido de dichas etiquetas.
* Estructura: indica el orden en que van las etiquetas en el documento.
* Anidamiento: indica qué etiquetas van dentro de otras.

Esquema de documentos XML

Las bases de datos tienen esquemas que se usan para restringir qué información se puede almacenar en la base de datos y para restringir los tipos de datos de la informació almacenada. En cambio, los documentos XML se pueden crear de forma predeterminada sin un esquema asociado. Un elemento puede tener entonces cualquier subelemento o atributo. Aunque dicha libertad puede ser aceptable algunas veces, dada la naturaleza autodescriptiva del formato de datos, no es útil generalmente cuando los documentos XML se deben procesar automáticamente como parte de una aplicación o incluso cuando se van a dar formato en XML a grandes cantidades de datos relacionados.

El esquema de XML, publicado como recomendación de W3C en mayo de 2001, es una de varias lenguajes del esquema de XML. Era la primera lengua separada del esquema para que XML alcance estado de la recomendación por el W3C. Como todas las lenguajes del esquema de XML, el esquema de XML se puede utilizar para expresar un esquema: un sistema de las reglas con las cuales un documento de XML debe conformarse para ser considerado ‘ válido ‘ según ese esquema. Sin embargo, desemejante de la mayoría de las otras lenguajes del esquema, el esquema de XML también fue diseñado con el intento de la validación dando por resultado una colección de información que adhiriendose a los datatypes específicos, que pueden ser útiles en el desarrollo del documento de XML que procesa el software, pero que también ha provocado crítica.

Un caso del esquema de XML es una definición del esquema de XML (XSD) y tiene típicamente la extensión “xsd” del nombre de fichero.

miércoles, junio 09, 2010

ESTRUCTURA DE LOS DATOS XML

La tecnología XML busca dar solución al problema de expresar información estructurada de la manera más abstracta y reutilizable posible

Un documento XML tiene dos estructuras, una lógica y otra física. Físicamente, el documento está compuesto por unidades llamadas entidades. Una entidad puede hacer referencia a otra entidad, causando que esta se incluya en el documento. Cada documento comienza con una entidad documento, también llamada raíz. Lógicamente, el documento está compuesto de declaraciones, elementos, comentarios, referencias a caracteres e instrucciones de procesamiento, todos los cuales están indicados por una marca explícita. Las estructuras lógica y física deben encajar de manera adecuada:
Los documentos XML se dividen en dos grupos, documentos bien formados y documentos válidos.

  • Bien formados: Son todos los que cumplen las especificaciones del lenguaje respecto a las reglas sintácticas sin estar sujetos a unos elementos fijados en un DTD. De hecho los documentos XML deben tener una estructura jerárquica muy estricta y los documentos bien formados deben cumplirla.
  • Válidos: Además de estar bien formados, siguen una estructura y una semántica determinada por un DTD: sus elementos y sobre todo la estructura jerárquica que define el DTD, además de los atributos, deben ajustarse a lo que el DTD dicte.


    Documentos XML bien formados

    Un documento XML se dice que está bien formado si encaja con las especificaciones XML de producción, lo que implica:

    Estructura jerárquica de elementos

    Los documentos XML deben seguir una estructura estrictamente jerárquica con lo que respecta a las etiquetas que que delimitan sus elementos. Una etiqueta debe estar correctamente "incluida" en otra. Asímismo, los elementos con contenido, deben estar correctamente "cerrados". A continuació se muestra un ejemplo incorrecto y posteriormente otro ejemplo escrito correctamente.

  • HTML permite esto .

  • En XML la estructura es jerárquica .


  • Etiquetas vacías

    HTML permite elementos sin contenido. XML también, pero la etiqueta debe ser de la siguiente forma . A continuación se muestra un ejemplo incorrecto y posteriormente otro correcto.

  • Esto es HTML en el que casi todo está permitido


  • En XML, es más restrictivo.


  • Un solo elemento raiz

    Los documentos XML sólo permiten un elemento raiz, del que todos los demás sean parte. Es decir, la jerarquía de elemento de un documento XML bien formado sólo puede tener un elemento inicial.

    Valores de atributos
    Los valores de atributos en XML siempre deben estar encerradas entre comillas simples (') o doble ("). En la siguiente ejemplo, la primera línea sería incorrecta en XML, no así la segunda:

    a HREF=http://www.dis.ulpgc.es/

    a HREF="http://www.dis.ulpgc.es/"


XML Antecedentes


XML proviene de un lenguaje inventado por IBM en los años setenta, llamado GML (General Markup Language), que surgió por la necesidad que tenía la empresa de almacenar grandes cantidades de información. Este lenguaje gustó a la ISO, por lo que en 1986 trabajaron para normalizarlo, creando SGML (Standard General Markup Language), capaz de adaptarse a un gran abanico de problemas. A partir de él se han creado otros sistemas para almacenar información.

En el año 1989 Tim Berners Lee creó la web, y junto con ella el lenguaje HTML. Este lenguaje se definió en el marco de SGML y fue de lejos la aplicación más conocida de este estándar. Los navegadores web sin embargo siempre han puesto pocas exigencias al código HTML que interpretan y así las páginas web son caóticas y no cumplen con la sintaxis. Estas páginas web dependen fuertemente de una forma específica de lidiar con los errores y las ambigüedades, lo que hace a las páginas más frágiles y a los navegadores más complejos.