Se puede establecer que siete categoras de productos:
Middleware: Software que es invocado desde nuestras aplicaciones para transferir datos entre documentos XML y Bases de Datos. Orientados a aplicaciones basados en datos. Bases de Datos XML-Enabled: Bases de Datos que pueden transferir datos entre documentos XML y ellas mismas. Orientados principalmente para aplicaciones basados en datos. Bases de Datos de XML Nativo: Base de Datos que almacenan XML en su forma nativa, generalmente tanto texto indexado como alguna variante del DOM. Son tanto para aplicaciones basados en datos o basados en documentos. Servidores XML: Plataforma que brinda servicio de datos (en forma de documentos XML) desde y hacia aplicaciones distribuidas, como e-commer Los documentos XML deben ser fciles de crear ce y aplicaciones business to business. Orientados principalmente a aplicaciones basados en datos. Servidores de Aplicaciones XML: Servidores de aplicaciones Web que brindan servicio de XML a los navegadores. Son tanto para aplicaciones basados en datos o basados en documentos. Sistemas de Administracin de Contenidos: Sistemas para administrar documentos legibles e incluyen soporte para editar, controlar las versiones, crear nuevos documentos a partir de documentos existentes. Principalmente destinados a aplicaciones basados en documentos Motores de consulta de XML: Aplicaciones que permiten realizar consultas sobre documentos XML.
Middleware. Middleware es el software utilizado por aplicaciones centradas en datos para transferir datos entre documentos XML y bases de datos. Por lo general, de peso ligero, se ejecuta en el mismo espacio de proceso como la aplicacin. La mayora de middleware de acceso a los datos en bases de datos relacionales mediante ODBC, JDBC, o OLE DB, aunque algunos productos existen para otros tipos de bases de datos, como de varios valores, jerrquica, o bases de datos orientadas a objetos. Se pueden clasificar los diferentes middleware en funcin de su escalabilidad y su tolerancia a fallos: Remote Procedure Call (RPCs): El cliente realiza una llamada a procedimientos que estn corriendo en mquinas remotas. Pueden ser sncronos o asncronos. Publish/subscribe: Este tipo de monitores middleware activan y entregan informacin relevante para los subscriptores. Message Oriented Middleware (MOM): Los mensajes enviados al cliente se recogen y se almacenan hasta que son solicitados, mientras el cliente contina con otros procesos. Object Request Broker (ORB): Este tipo de middleware permite que los clientes enven objetos y soliciten servicios en un sistema orientado a objetos. SQL-oriented Data Access: middleware entre las aplicaciones y los servidores de base de datos. Algunos productos son: ADO puede persistir un objeto Recordset como un documento XML. Tambin puede abrir un documento XML como un objeto Recordset. Esto proporciona una forma de transferir datos entre XML y una base de datos, con registros como objetos intermedios. Allora es un middleware que llamamos aplicaciones para transferir datos entre un documento XML y una base de datos relacional. Altova MapForce permite a los usuarios transferir datos entre documentos XML, bases de datos relacionales, ficheros planos, EDI (UN / EDIFACT, ANSI X12) documentos. Un objeto COM para transferir datos entre un documento XML y una fuente ODBC u OLE DB de datos.
Bases de datos. BASES DE DATOS XML-ENABLED Este tipo de Bases de Datos son (usualmente relacionales) las que brindan la posibilidad de transferir datos entre documentos XML y ellas mismas. Estas Bases de Datos son generalmente diseadas para almacenar y recuperar documentos basados en datos. Esto es porque los datos son transferidos desde y hacia tablas definidas por el usuario, en lugar de tablas especialmente diseadas para modelar el documento XML. Sin embargo, muchas de estas pueden almacenar documentos basados en documentos en una sola columna. Muchas de las Bases de Datos pueden publicar documentos en el Web, esto implica que la lnea que separa entre las Bases de Datos XML-Enabled y los Servidores de XML es confusa, pero cabe destacar que estos ltimos estn diseados primariamente para construir aplicaciones basadas en el Web. Con ms claridad se puede diferenciar las Bases de Datos XML-Enabled y los Servidores de Aplicaciones XML, los cuales no puede recibir datos como documentos XML. Dentro de este tipo de Bases de Datos, encontramos los productos: DB2 XML Extender and DB2 Text Extender IBM Informix Informix Microsoft SQL Server 2000 Microsoft Oracle 8i 9i Oracle DB2 XML Extender y DB2 Text Extender. Desarrollador: IBM
BASES DE DATOS DE XML NATIVO Dentro de las Bases de Datos de XML Nativo encontramos dos tipos de categoras: Almacenamiento basado en texto. Guarda el documento entero en forma de texto. Una estrategia simple es guardar documento como un BLOB (Binary Large Object) en una Base de Datos relacional o como un documento en un File system que brinde bsquedas sobre documentos. Almacenamiento basado en el Modelo Grabar: Un modelo binario del documento en un repositorio de datos existente. Por ejemplo, estos deben mapear el DOM a tablas relacionales como los elementos, atributos o entidades. Las Bases de Datos de XML Nativo difieren de las Base de Datos XML-Enabled en tres formas principales: Las Bases de Datos de XML Nativo pueden preservar la estructura fsica, como tambin los comentarios, DTDs, etc. Mientras que las Bases de Datos XML-Enabled pueden hacer esto en teora, pero es no es realidad en la practica. Las Base de Datos de XML Nativo pueden almacenar documentos XML sin conocer su esquema (DTD). La nica conexin con los datos de una Base de Datos de XML Nativo es XML y las tecnologas relacionadas como XPath, DOM u otras API. En el otro sentido, las Base de Datos XML-enabled, ofrecen acceso directo a los datos como por ejemplo por ODBC. Dentro de esta categora podemos encontrar los siguientes productos: 4Suite 4Suite Server FourThought Birdstep DataBase Engine Birdstep DbXML The dbXML Group EXcelon eXcelon Corp. Lore Stanford University Virtuoso OpenLink Software
Sistemas de administracin de contenidos. Sirven para almacenar, recuperar e integrar documentos XML. Incluyen caractersticas como editores, controladores de versiones y control de accesos a usuarios concurrentes. Ofrecen funcionalidades en el manejo de documentos, como por ejemplo controlador de versiones. La mayora de ellos pueden publicar XML en el Web, pero son primariamente diseados para administrar documentos basados en documentos. Motores de consulta. Son programas que puede realizar consultas sobre un Documento XML. Actualmente, existen una gran variedad de lenguajes: XQL, XPath, XML-QL, Quilt, XQuery, etc. Se espera que en el futuro el W3C logre estandarizar estos lenguajes en: XPath y XQuery. Xpath Es un lenguaje que permite recuperar informacin de un documento XML. Para ello define una sintaxis para establecer partes en un documento XML, permitiendo navegar a travs de sus elementos y atributos, adems permite manipular de forma bsica booleanos, nmeros y cadenas. En lneas generales se podra decir que se basa en relaciones de parentesco entre esos elementos. Utiliza un tipo de notacin similar a las rutas de los ficheros, pero haciendo referencia a los nodos de un XML. Con XPath, todos los elementos del documento XML ( etiquetas, atributos, texto, comentarios ) son tratados cmo nodos de un rbol en el que se establecen relaciones padre-hijo ( por ejemplo, el nodo que representa la etiqueta phone tiene un nodo hijo que representa al atributo pais ). A partir de este rbol, podemos crear rutas referirnos a un nodo o conjunto de nodos utilizando las siguientes expresiones:
nombreNodo Selecciona todos los nodos de nombre nombreNodo. / Selecciona el nodo raz o nodos hijo del nodo actual. Si la ruta empieza por / significa que se evala sobre el nodo raz, si no se evala sobre el nodo actual o contexto. // Selecciona todos nodos hijo, nieto del nodo actual. . Selecciona el nodo actual. .. Selecciona el nodo padre del nodo actual. @ Selecciona atributos del nodo actual [ ] Selecciona nodos que cumplen una propiedad. Las expresiones entre [ y ] se suelen llamarpredicados. * Selecciona cualquier nodo o atributo | Selecciona mltiples expresiones de forma simultnea XQuery Lenguaje que permite definir de forma rpida y compacta, consultas o recorridos complejos sobre colecciones de datos XML los cuales devuelven todos los nodos que cumplan ciertas condiciones. Este es un lenguaje declarativo, es decir, independiente e la forma en que de se realice el recorrido o de donde se encuentren los datos. Es independiente de la fuente de datos: esta fuente de datos puede ser archivos XML hasta base de datos relacionales con funciones de conversin de registros a XML. XQuery ha sido construido sobre la base de Xpath, ya que Xpath es un lenguaje declrativo para la localizacin de nodos y fragmentos de informacin en rboles XML. XQuery se basa en este lenguaje para realizar la seleccin de informacin a travs del conjunto de datos. Una consulta en XQuery es una expresin que lee una secuencia de datos en XML y devuelve como resultado otra secuencia de datos en XML. En XQuery las expresiones y los valores que devuelven son dependientes del contexto. Por ejemplo, los nodos del resultado dependen de los namespaces, de la posicin donde aparezca la etiqueta raz del nodo (dentro de otra, por ejemplo), etc. Las clausulas ms identificables son 5: For: vincula una o mas variables a expresiones escritas en Xpath, creando un flujo de tuplas en el que cada tupla esta vinculada a una de las variables. Let: vincula una variable al resultado completo de una expresin aadiendo esos vnculos a las tuplas generadas por una clausula For o si no existe ninguna clausula For, creando una nica tupla que contenga esos vnculos. Where: filtra las tuplas eliminando todos los valores que no cumplan las condiciones dadas. Order by: ordena las tuplas segn el criterio dado. Return: construye el rbol XML resultado de la consulta para una tupla dada, despus de haber sido filtrada por la clausula where ordenada por la clausula order by. La siguiente consulta devuelve los ttulos de los libros del ao 2000: For $b in doc(libros.xml) Where $b/@ao=2000 Order by $b/titulo Return $b/titulo
El resultado es el siguiente: <titulo>Data on the web</titulo> <titulo>Millenium</titulo>