unidad 7 xml

39
Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Upload: sarai-tuz-lopez

Post on 12-Jan-2016

8 views

Category:

Documents


0 download

DESCRIPTION

Lenguaje de marcas extensible

TRANSCRIPT

Page 1: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Page 2: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

INTRODUCCIÓN

El lenguaje de marcas extensible (Extensible Markup Language, XML), es un lenguaje que no se considera para las base de datos, se considera como lenguajes estándar generalizado de marcas, éstos estructuran documentos, lo cual es esta unidad se hablara de ello. Podremos observar qué diferencia hay entre los lenguajes HTML y XML. A pesar de que no se considera para la base de datos, pueden representar datos de base de datos. Este lenguaje tiene muchas aplicaciones, las cuales veremos en este documento, entre ellas con la medición de datos y el intercambio de datos, como por ejemplo en negocios, como en empresas. También lo que es el almacenamiento de documentos XML.

Los documentos XML contienen elementos que están entre etiquetas, este es el constructor fundamental del documento. Estos elementos pueden estar anidados, al igual que tener atributos. Dichos atributos pueden definirse de diferentes tipos como son los CDATA, ID, IDREF o IDREFS, más adelante se definirán cada uno de ellos.

También se definirá las estructuras de los datos mediante esquemas, de tipo DTD, pero estos documentos XML también se pueden representar como tipo árbol, padre-hijo.Después de almacenar información en los documento XML, se pueden extraer, para ello se define las consultas y las transformaciones.

Page 3: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

TABLA DE CONTENIDO

UNIDAD VI

Introducción………………………………………………………………………… 2

XML……………………………………………………….………………………….. 4

7.1 Antecedentes………………………………………………………................. 4

7.2 Estructura de los datos XML.…………………………………………….... 6

7.3 Esquema de los documentos XML……………………………………….. 9

7.3.1 Definición de tipos dedocumento (DTD)…………………………… 10

7.3.2 Esquemas de XML……………………………………………………… 13

7.4 Consulta y transformación………………………………………………… 14

7.4.1 Xpath……………………………………………………………………… 15

7.4.2 Xquery……………………………………………………………………. 17

7.4.3 XSLT………………………………………………………………………. 20

7.5 Almacenamiento de datos XML……………………………………………. 23

7.5.1. Bases de datos relacionales………………………………………… 23

7.5.2 Almacenamientos de datos no relacionales………………………. 24

7.6 Aplicaciones. …………………………………………………………………. 25

7.6.1. Intercambio de datos…………………………………………………. 25

7.6.2 Mediación de datos…………………………………………………….. 26Conclusión...…………………………………………………………………………

27

Bibliografía………………………………………………………………………….. 28

Page 4: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Unidad VII XML.

(Extensible Markup Language, lenguaje de marcas extensible)

7.1 Antecedentes de los lenguajes XML.

El término marca se refiere a cualquier elemento en un documento del que no se tiene intención que sea parte de la salida impresa. En un procesamiento electrónico de documentos un lenguaje de marcas es una descripción formal de qué parte del documento es contenido, qué parte es marca y lo que significa la marca.Los lenguajes de marcas evolucionaron desde la especificación de instrucciones que indicaban cómo imprimir partes del documento para la función del contenido.

Por ejemplo, con marcas funcionales, el texto que representa los encabezamientos de sección (para esta sección la palabra «Antecedentes») se marcaría como un encabezamiento de sección en lugar de marcarse como un texto con el fin de ser impreso en un tamaño grande, con fuente en negrita. Dicha marca funcional permite que el documento tenga distintos formatos en situaciones diferentes. También ayuda a que distintas partes de un documento largo, o distintas páginas en un sitio Web grande, tengan un formato uniforme. La marca funciona también ayuda a la extracción automática de partes claves de los documentos.

Para la familia de lenguajes de marcado, en los que se incluye HTML, SGML y XML las marcas adoptan la forma de etiquetas encerradas entre corchetes angulares, < >. Las etiquetas se usan en pares, con <etiqueta> y </etiqueta> delimitando el comienzo y final de la porción de documento a la cual se refiere la etiqueta.

Por ejemplo, el título de un documento:

<title>Fundamentos de bases de datos</title>

En XML no prescribe las etiquetas permitidas, y se pueden establecer etiquetas según cada necesidad. Esta característica es la clave de la función principal de XML en la representación e intercambio de datos, mientras que HTML se usa principalmente para el formato de documentos.

Por ejemplo, en nuestra aplicación del banco, la información de la cuenta y del cliente se puede representar como parte de un documento XML. Estas etiquetas proporcionan el contexto de cada valor y permiten identificar la semántica del valor.

Page 5: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Representación XML de información bancaria.

</banco> / /uso de etiqueta<cuenta>

<número-cuenta> C-101 </número-cuenta> // uso de etiqueta<nombre-sucursal> Centro </nombre-sucursal><saldo> 500 </saldo>

</cuenta><cuenta>

<número-cuenta> C-102 </número-cuenta><nombre-sucursal> Navacerrada </nombre-sucursal><saldo> 400 </saldo>

</cuenta><cuenta>

<número-cuenta> C-201 </número-cuenta><nombre-sucursal> Galapagar </nombre-sucursal><saldo> 900 </saldo>

</cuenta><cliente>

<nombre-cliente> González </nombre-cliente><calle-cliente> Arenal </calle-cliente><ciudad-cliente> La Granja </ciudad-cliente>

</cliente><cliente>

<nombre-cliente> López </nombre-cliente><calle-cliente> Mayor </calle-cliente><ciudad-cliente> PeguEtrerosos </ciudad-cliente>

</cliente><impositor>

<número-cuenta> C-101 </número-cuenta><nombre-cliente> González </nombre-cliente>

</impositor><impositor>

<número-cuenta> C-201 </número-cuenta><nombre-cliente> González </nombre-cliente>

</impositor><impositor>

<número-cuenta> C-102 </número-cuenta><nombre-cliente> López </nombre-cliente>

</impositor></banco>Ejemplo 1

Comparado al almacenamiento de los datos en una base de datos, la representación XML puede parecer poco eficiente, puesto que los nombres de las etiquetas se repiten por todo el documento. Sin embargo, a pesar de esta desventaja, una representación

Page 6: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

XML presenta ventajas significativas cuando se usa para el intercambio de datos como, por ejemplo, parte de un mensaje.

La presencia de las etiquetas hace que el mensaje sea autodocumentado, es decir, no se tiene que consultar un esquema para comprender el significado del texto. Se puede leer fácilmente el fragmento anterior.

El formato del documento no es rígido. Por ejemplo, si algún remitente agrega información adicional tal como una etiqueta último- acceso que informa de la última fecha en la que se ha accedido a la cuenta, el receptor de los datos XML puede sencillamente ignorar la etiqueta.La habilidad de reconocer e ignorar las etiquetas inesperadas permite al formato de los datos evolucionar con el tiempo sin invalidar las aplicaciones existentes.

Puesto que el formato XML está ampliamente aceptado hay una gran variedad de herramientas disponibles para ayudar a su procesamiento, incluyendo software de búsqueda y herramientas de bases de datos.

Al igual que SQL es el lenguaje dominante para consultar los datos relacionales XML se está convirtiendo en el formato dominante para el intercambio de datos.

7.2 Estructura de los datos XML.

El constructor fundamental en un documento XML es el elemento. Un elemento es sencillamente un par de etiquetas de inicio y finalización coincidentes y todo el texto que aparece entre ellas.Los documentos XML deben tener un único elemento raíz que abarque el resto de elementos en el documento.En el ejemplo anterior el elemento <banco> forma el elemento raíz. Además, los elementos en un documento XML se deben anidar adecuadamente.

Por ejemplo<cuenta> … <saldo> … </saldo> … </cuenta> // Está anidado adecuadamente<cuenta> … <saldo> … </cuenta> … </saldo> // No está adecuadamente anidado.

Se dice que el texto aparece en el contexto de un elemento aparece entre la etiqueta de inicio y la etiqueta de finalización de dicho elemento. Las etiquetas están anidadas adecuadamente si toda etiqueta de inicio tiene una única etiqueta de finalización coincidente que está en contexto del mismo elemento padre.

Mezcla de texto con subelementos.…<cuenta>

Esta cuenta se usa muy rara vez por no decir nunca.<número-cuenta> C-102 </número-cuenta><nombre-sucursal> Navacerrada </nombre-sucursal>

Page 7: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

<saldo> 400 </saldo> </cuenta>… Ejemplo 2

El texto puede estar mezclado con subelementos de otro elemento.

Como con otras características de XML, esta libertad tiene más sentido en un contexto de procesamiento documentos que en el contexto de procesamiento de datos y no es particularmente útil para representar en XML datos más estructurados como son el contenido de las bases de datos.

La capacidad de anidar elementos con otros elementos proporciona una forma alternativa de representar información.

Representación XML anidada de información bancaria.<banco-1>

<cliente><nombre-cliente> González </nombre-cliente><calle-cliente> Arenal </calle-cliente><ciudad-cliente> La Granja </ciudad-cliente>

<cuenta><número-cuenta> C-101 </número-cuenta><nombre-sucursal> Centro </nombre-sucursal><saldo> 500 </saldo>

</cuenta><cuenta>

<número-cuenta> C-201 </número-cuenta><nombre-sucursal> Galapagar </nombre-sucursal><saldo> 900 </saldo>

</cuenta></cliente><cliente>

<nombre-cliente> López </nombre-cliente><calle-cliente> Mayor </calle-cliente><ciudad-cliente> PeguEtrerosos </ciudad-cliente>

<cuenta><número-cuenta> C-102 </número-cuenta><nombre-sucursal> Navacerrada </nombre-sucursal><saldo> 400 </saldo>

</cuenta></cliente>

</banco-1>Ejemplo3

Muestra una representación de la información bancaria del primer ejemplo, pero con los elementos cuenta anidadas con los elementos cliente, aunque almacenaría elementos cuenta de una forma redundante si pertenecen a varios clientes.

Page 8: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Las representaciones anidadas se usan ampliamente en las aplicaciones de intercambio de datos XML para evitar las reuniones.

Por ejemplo:Una aplicación de envíos almacenaría la dirección completa del emisor y receptor de una forma redundante en un documento de envío asociado con cada envío mientras que una representación normalizada puede requerir una reunión de registros de envío con una relación compañía-dirección para obtener la información de la dirección.

XML especifica la noción de atributo. Por ejemplo: el tipo de una cuenta se puede representar como un atributo, como se muestra en el ejemplo 4, Los atributos de un elemento aparecen como pares nombre = valor antes del cierre « >» de una etiqueta. Los atributos son cadenas y no contienen marcas, los atributos pueden aparecer solamente una vez en una etiqueta dada, al contrario que los subelementos, que pueden estar repetidos.

Uso de atributos.…<cuenta tipo-cuenta = «corriente»>

<número-cuenta> C-102 </número-cuenta><nombre-sucursal> Navacerrada </nombre-sucursal><saldo> 400 </saldo>

</cuenta> …Ejemplo 4

En un contexto de construcción de un documento es importante la distinción entre subelemento y atributo; un atributo es implícitamente texto que no aparece en el documento impreso o visualizado.Sin embargo, en las aplicaciones de bases de datos y de intercambio de datos de XML esta distinción es menos relevante y la elección de representar los datos como un atributo o un subelemento es frecuentemente arbitraria.

Una nota sintáctica final es que un elemento de la forma <elemento> < / elemento>, que no contiene subelementos o texto, se puede abreviar como <elemento/>; los elementos abreviados pueden, no obstante, contener atributos.

Puesto que los documentos XML se diseñan para su intercambio entre aplicaciones se tiene que introducir un mecanismo de espacio de nombres para permitir a las organizaciones especificar nombre únicos globalmente para que se usen como marcas de elementos en los documentos.La idea de un espacio de nombres es anteponer cada etiqueta o atributo con un identificador de recursos universal (por ejemplo, una dirección Web). Por ello, por ejemplo, si Banco Principal deseara asegurar que los documentos XML creados no duplican las etiquetas usadas por los documentos de otros socios del negocio, se puede anteponer un identificador único con dos puntos a cada nombre de etiqueta. El

Page 9: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

banco puede usar un URL Web como el siguiente: http://www.BancoPrincipal.com como un identificador único.

El uso de identificadores únicos largos en cada etiqueta puede ser poco conveniente, por lo que el espacio de nombres estándar proporciona una forma de definir una abreviatura para los identificadores.

Nombres únicos de etiqueta mediante el uso de espacios de nombres.

<banco xmlns:BP = «http://www.BancoPrincipal.com»> //el elemento raíz tiene un atributo xmlns:BP, Declara que BP está definido como abreviatura para el URL dado anteriormente…

<BP:sucursal> //Se puede usar entonces la abreviatura en varias marcas de elementos

<BP:nombresucursal> Centro </BP:nombresucursal><BP:ciudadsucursal> Brooklyn </BP:ciudadsucursal></BP:sucursal>

…</banco>Ejemplo 5

Un documento puede tener más de un espacio de nombres, declarado como parte del elemento raíz.Se pueden asociar entonces elementos diferentes con espacios de nombres distintos. Se puede definir un espacio de nombres predeterminado mediante el uso del atributo xmlns en lugar de xmlns:BP en el elemento raíz.Los elementos sin un prefijo de espacio de nombres explícito pertenecen entonces al espacio de nombres predeterminado.Algunas veces se necesitan almacenar valores que contengan etiquetas sin que sean interpretadas como etiquetas XML. XML permite esta construcción para ello:

<![CDATA[<cuenta> … </cuenta>]]>Debido a que el texto <cuenta> está encerrado en CDATA, se trata como datos de texto normal, no como una etiqueta. El término CDATAviene de datos de carácter(character data en inglés).

7.3 Esquema de los 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ón 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

Page 10: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

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.

7.3.1 Definición de tipos de documento (DTD).

La definición de tipos de documento (Document Type Definition, DTD) es una parte opcional de un documento XML. El propósito principal de DTD es similar al de un esquema: restringir el tipo de información presente en el documento. Sin embargo, DTD no restringe en realidad los tipos en el sentido de tipos básicos como entero o cadena. En su lugar solamente restringe el aspecto de subelementos y atributos en un elemento. DTD es principalmente una lista de reglas que indican el patrón de subelementos que aparecen en un elemento. En el ejemplo 6 se muestra una parte de una DTD de ejemplo de un documento de información bancaria.

Ejemplo de una DTD.

<!DOCTYPE banco [<!ELEMENT banco ( (cuenta |cliente| impositor)+)> // consiste en uno o más elementos cuenta, cliente o impositor<!ELEMENT cuenta ( número-cuenta nombre-sucursal saldo )> // se define para contener los subelementos número-cuenta, nombre-sucursal y saldo<!ELEMENT cliente ( nombre-cliente calle-cliente ciudad-cliente )> // se define para contener los subelementos<!ELEMENT impositor ( nombre-cliente número-cuenta )> // se define para contener los subelementos<!ELEMENT número-cuenta ( #PCDATA )> // se declara al elemento del tipo #PCDATA.<!ELEMENT nombre-sucursal ( #PCDATA )> // se declara al elemento del tipo #PCDATA.<!ELEMENT saldo( #PCDATA )> // se declara al elemento del tipo #PCDATA.<!ELEMENT nombre-cliente( #PCDATA )> // se declara al elemento del tipo #PCDATA.<!ELEMENT calle-cliente( #PCDATA )> // se declara al elemento del tipo #PCDATA.<!ELEMENT ciudad-cliente( #PCDATA )> // se declara al elemento del tipo #PCDATA.

] >Ejemplo 6

Cada declaración está en la forma de una expresión normal para los subelementos de un elemento. Así, en la DTD del ejemplo 6 un elemento bancario consiste en uno o más elementos cuenta, cliente o impositor; el operador | especifica «o» mientras que el operador + especifica «uno o más». Aunque no se muestra aquí, el operador * se usa para especificar «cero o más» mientras que el operador ? se usa para especificar un elemento opcional (es decir, «cero o uno»).

Page 11: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

La palabra clave #PCDATA indica dato de texto; deriva su nombre históricamente de parsed character data (datos de caracexplícito teres analizados). Otros dos tipos especiales de declaraciones son empty (vacío), que dice que el elemento no tiene ningún contenido, y any (cualquiera), que indica que no hay restricción sobre los subelementos del elemento; es decir, cualquier elemento, incluso los no mencionados en la DTD, puede ser subelemento del elemento. La ausencia de una declaración para un subelemento es equivalente a declarar explícitamente el tipo como any.

Los atributos permitidos para cada elemento también se declaran en la DTD. Al contrario que los subelementos no se impone ningún orden a los atributos. Los atributos se pueden especificar del tipo CDATA, ID, IDREF o IDREFS.

El tipo CDATA: simplemente dice que el atributo contiene datos de caracteres mientras que los otros tres no son tan sencillos, Por ejemplo, la siguiente línea de una DTD especifica que el elemento cuenta tiene un atributo del tipo tipo-cuenta con valor predeterminado corriente.

<!ATTLIST cuenta tipo-cuenta CDATA «corriente» >

Los atributos siempre deben tener una declaración de tipo y una declaración predeterminada. La declaración predeterminada puede consistir en un valor predeterminado para el atributo o #REQUIRED, queriendo esto decir que se debe especificar un valor para el atributo en cada elemento, #IMPLIED, lo que significa que no se ha proporcionado ningún valor predeterminado.

El tipo ID: proporciona un identificador único para el elemento; un valor que tiene un atributo ID de un elemento no debe estar presente en ningún otro elemento del mismo documento. A lo sumo se permite que el atributo de un elemento sea del tipo ID.

El tipo IDREF: es una referencia a un elemento; el atributo debe contener un valor que aparezca en el atributo ID de algún elemento en el documento.

El tipo IDREFS: permite una lista de referencias, separadas por espacios.

DTD con los tipos de atributo ID e IDREF.<!DOCTYPE banco-2 [

<!ELEMENT cuenta ( sucursal, saldo )><!ATTLIST cuentanúmero-cuenta ID #REQUIREDtenedores IDREFS #REQUIRED ><!ELEMENT cliente ( nombre-cliente, calle-cliente, ciudad-cliente )><!ATTLIST clientecliente-id ID #REQUIREDcuentas IDREFS #REQUIRED >· · · declaraciones para sucursal, saldo, nombre-cliente,

Page 12: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

calle-cliente y ciudad-cliente · · ·] > Ejemplo 7

En el ejemplo 7 se muestra una DTD de ejemplo en la que las relaciones de la cuenta de un cliente se representan mediante los atributos ID e IDREFS en lugar de los registros impositor. Los elementos cuenta usan número-cuenta como su atributo identificador; para realizar esto se ha hecho que número-cuenta sea un atributo de cuenta en lugar de un subelemento.

Los elementos cliente tienen un nuevo atributo identificador denominado cliente-ID. Además, cada elemento cliente contiene un atributo cuentas del tipo IDREFS, que es una lista de identificadores de las cuentas que posee el cliente. Cada elemento cuenta tiene un atributo tenedores del tipo IDREFS, que es una lista de propietarios de la cuenta.

Datos XML con atributos ID e IDREF.

<banco-2><cuenta número-cuenta = «C-401» tenedores = «C100 C102»>

<nombre-sucursal> Centro </nombre-sucursal><saldo> 500 </saldo>

</cuenta><cuenta número-cuenta = «C-402» tenedores = «C102 C101»><nombre-sucursal> Navacerrada </nombre-sucursal><saldo> 900 </saldo>

</cuenta><cliente cliente-id = «C100» cuentas = «C-401»>

<nombre-cliente>Juncal</nombre-cliente><calle-cliente> Mártires </calle-cliente><ciudad-cliente> Melilla </ciudad-cliente>

</cliente><cliente cliente-id = «C101» cuentas = «C-402»>

<nombre-cliente>Loreto</nombre-cliente><calle-cliente> Montaña </calle-cliente><ciudad-cliente> Cáceres </ciudad-cliente>

</cliente><cliente cliente-id = «C102» cuentas = «C-401 C-402»>

<nombre-cliente>María</nombre-cliente><calle-cliente> Etreros </calle-cliente><ciudad-cliente> Alicante </ciudad-cliente>

</cliente></banco-2>Ejemplo 8

En el ejemplo 8 se muestra un ejemplo de documento XML basado en la DTD del ejemplo anterior. Se usa un conjunto distinto de cuentas y clientes del ejemplo anterior

Page 13: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

con el fin de ilustrar mejor la característica IDREFS. Los atributos ID e IDREF juegan la misma función que los mecanismos de referencia en las bases de datos orientadas a objetos y las bases de datos relacionales orientadas a objetos permitiendo la construcción de complejas relaciones de datos.Estas son algunas limitaciones de las DTD como mecanismo de esquema:

No se pueden declarar el tipo de elementos y atributos de texto individuales. Por ejemplo, el elemento saldo no se puede restringir para que sea un número positivo.

Es difícil usar el mecanismo DTD para especificar conjuntos desordenados de subelementos. El orden es rara vez importante para el intercambio de datos (al contrario que en el diseño de documentos, donde es crucial).

Hay una falta de tipos en ID e IDREF. Por ello no hay forma de especificar el tipo de elemento al cual se debería referir un atributo IDREF o IDREFS.

7.3.2 Esquemas de XML.

Un intento de reparar muchas de estas deficiencias de DTD produjo un lenguaje de esquema más sofisticado, XMLSchema. Presentamos aquí un ejemplo de XMLSchema y se listan algunas áreas en las cuales mejora a las DTD sin dar mucho detalle de la sintaxis de XMLSchema.

Representación mediante XMLSchema, del ejemplo 6.

<xsd:schema xmlns:xsd = «http://www.w3.org/2001/XMLSchema»> // elemento raíz banco<xsd:element name = «banco» type = «TipoBanco» /> // se declara<xsd:element name = «cuenta»> // se definen los elementos cuenta.

<xsd:complexType><xsd:sequence>

<xsd:element name = «número-cuenta» type = «xsd:string»/> // xsd:string para restringir los tipos de los elementos de datos<xsd:element name = «nombre-sucursal» type = «xsd:string»/><xsd:element name = «saldo» type = «xsd:decimal»/> //xsd:decimal para restringir los tipos de los elementos de datos

</xsd:sequence></xsd:complexType>

</xsd:element><xsd:element name = «cliente»> // se definen elemento cliente.

<xsd:element name = «número-cliente» type = «xsd:string»/><xsd:element name = «calle-cliente» type = «xsd:string»/><xsd:element name = «ciudad-cliente» type = «xsd:string»/>

</xsd:element><xsd:element name = «impositor»> // se definen elemento impositor.

<xsd:complexType><xsd:sequence><xsd:element name = «nombre-cliente» type = «xsd:string»/>

Page 14: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

<xsd:element name = «número-cuenta» type = «xsd:string»/></xsd:sequence></xsd:complexType></xsd:element><xsd:complexType name = «TipoBanco»>

<xsd:sequence><xsd:element ref = «cuenta» minOccurs = «0» maxOccurs = «unbounded»/><xsd:element ref = «cliente» minOccurs = «0» maxOccurs = «unbounded»/><xsd:element ref = «impositor» minOccurs = «0» maxOccurs = «unbounded»/>

</xsd:sequence></xsd:complexType></xsd:schema>Ejemplo 9

El ejemplo define el tipo TipoBanco para contener cero o más apariciones de cada cuenta, cliente e impositor. XMLSchema puede definir el número mínimo y máximo de apariciones de subelementos mediante minOccurs y maxOccurs. El valor predeterminado para las apariciones máximas y mínima es 1, por lo que se tiene que especificar explícitamente para permitir cero o más cuentas, impositores y clientes.

Entre los beneficios que ofrece XMLSchema respecto a las DTDs se encuentran los siguientes:

Permite crear tipos definidos por el usuario. Permite que el texto que aparece en los elementos esté restringido a tipos

específicos tales como tipos numéricos en formatos específicos o incluso tipos más complicados como listas o uniones.

Permite restringir los tipos para crear tipos especializados, por ejemplo especificando valores mínimos y máximos.

Permite la extensión de tipos complejos mediante el uso de una forma de herencia.

Es un superconjunto de DTDs. Permite restricciones de unicidad y de clave externa. Está integrado con espacios de nombres para permitir a diferentes partes de un

documento adaptarse a un esquema diferente.

7.4 Consulta y transformación.

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.

Varios lenguajes proporcionan grados crecientes de capacidades de consulta y transformación:

Page 15: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

XPath es un lenguaje para expresiones de rutas de accesos y es realmente un bloque constructor los dos lenguajes de consulta restantes.

XSLT fue diseñado para ser un lenguaje de transformación como parte del sistema de hojas de estilo XSL, que se usa para controlar el formato de los datos XML en HTML u otro lenguaje de impresión o visualización.

XQuery ha sido propuesto como un estándar para consultar datos XML. XQuery combina las características de muchas propuestas anteriores para la consulta de XML, en particular el lenguaje Quilt.

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.

El contenido textual de un elemento se puede modelar como un nodo de texto hijo del elemento. Los elementos que contienen texto descompuesto por subelementos intervinientes pueden tener varios nodos de texto hijo. Por ejemplo, un elemento que contenga «Éste es un <bold> buen </bold> libro» contiene un subelemento hijo correspondiente al elemento bold y dos nodos de texto hijo correspondientes a «Éste es un» y «libro». Puesto que dichas estructuras se usan comúnmente en los datos de una base de datos se asumirá que los elementos no contienen texto ni subelementos.

7.4.1 Xpath.

XPath trata partes de un documento XML mediante expresiones de rutas de acceso. Se puede ver el lenguaje como una extensión a las expresiones de rutas de acceso sencillas en las bases de datos orientadas a objetos y relacionales orientadas a objetos.

Una expresión de ruta en XPath es una secuencia de pasos de ubicación separados por «/» (en lugar del operador «.»). El resultado de la expresión de ruta es un conjunto de valores. Por ejemplo, en el documento del ejemplo 8 la expresión XPath devolverá los mismos nombres, pero sin las etiquetas de cierre.

Como en una jerarquía de directorios el signo ‘/’ inicial indica la raíz del documento. Las expresiones de ruta se evalúan de izquierda a derecha. Cuando se evalúa la expresión de ruta el resultado de la ruta en cualquier punto consiste en un conjunto de nodos del documento. Cuando un nombre de elemento, tal como cliente, aparece antes de la siguiente ‘/’ se refiere a todos los elementos del nombre especificado que son hijos de elementos en el

Page 16: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

conjunto de elementos actual. También se puede acceder a los valores de atributo mediante el uso del símbolo «@».

Por ejemplo:/banco-2/cuenta/@número-cuenta devuelve un conjunto con todos los valores de los atributos número-cuenta de los elementos cuenta.

XPath soporta otras características:

La selección de predicados puede seguir cualquier paso en una ruta y están contenidos entre corchetes.

Por ejemplo:/banco-2/cuenta[saldo > 400] devuelve los elementos cuenta con un valor saldo mayor que 400 mientras que/banco-2/cuenta[saldo > 400]/@número-cuenta devuelve los números de cuenta de dichas cuentas.

Se puede comprobar la existencia de un subelemento mediante su listado sin ninguna operación de comparación; por ejemplo si se elimina «>400» de la expresión anterior devolvería los números de cuenta de todas las cuentas que tiene un subelemento saldo, sin considerar su valor.

XPath proporciona varias funciones que se pueden usar como parte de predicados incluyendo la comprobación de la posición del nodo actual en el orden de los hermanos y contando el número de nodos coincidentes.

Por ejemplo:La expresión de ruta /banco-2/cuenta/[cliente/count()> 2] devuelve las cuentas con más de dos clientes.Se pueden usar las conectivas lógicas and y or en los predicados y la función not (…) se puede usar para la negación.

La función id («foo») devuelve el nodo (si existe) con un atributo del tipo ID y cuyo valor sea «foo». La función id se puede incluso aplicar a conjuntos de referencias o incluso a cadenas que contengan referencias múltiples separadas por espacios vacíos, tales como IDREFS.

Por ejemplo:

La ruta /banco-2/cuenta/id(@tenedores) devuelve todos los clientes referenciados desde el atributo tenedores de los elementos cuenta.

El operador | permite unir resultados de expresiones.

Page 17: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Por ejemplo:Si la DTD de banco-2 también contiene elementos para préstamos con atributo prestamista del tipo IDREFS para identificar el prestamista de un préstamo, la expresión /banco-2/cuenta/id(@tenedores) | /banco-2/ préstamo/id(@prestamista) proporciona los clientes con cuentas o préstamos. Sin embargo, el operador | no se puede anidar dentro de otros operadores.

Una expresión XPath puede saltar varios niveles de nodos mediante el uso de «//».

Por ejemplo:La expresión /banco-2//name encuentra cualquier elemento name en cualquier lugar bajo el elemento /banco-2, sin considerar el elemento en el que está contenido.

Cada paso en la ruta no selecciona los hijos de los nodos del conjunto actual de nodos. Es solamente una de las distintas direcciones que puede tomar un paso en la ruta tales como padres, hermanos, ascendientes y descendientes. Nótese que «//», descrito anteriormente, es una forma abreviada de especificar «todos los descendientes» mientras que «..» especifica el padre.

7.4.2 Xquery.

Es un lenguaje de consulta de XML. El lenguaje XQuery se deriva de un lenguaje de consulta XML denominado Quilt; la mayor parte de las características de XQuery que se analizan aquí son parte de Quilt. Quilt por sí mismo incluye características de lenguajes anteriores, tales como XPath, y otros dos lenguajes de consulta XML: XQL y XML-QL.

A diferencia de XSLT, XQuery no representa consultas en XML. En su lugar se parece más a consultas SQL y se organizan en expresiones «FLWR» (pronunciado «flower», «flor» en inglés) que comprende cuatro secciones: for, let, where y return.

La sección for proporciona una serie de variables que cuyos valores son los resultados de expresiones XPath. Cuando se especifica más de una variable, los resultados incluyen el producto cartesiano de los valores posibles que las variables pueden tomar, haciendo la cláusula for similar en espíritu a la cláusula from de la consulta SQL.

La cláusula let permite que se asignen expresiones complicadas a los nombres de las variables por simplicidad de representación.

La sección where, como la cláusula SQL where, ejecuta comprobaciones adicionales sobre las tuplas reunidas de la sección for.

La sección return permite la construcción de resultados en XML.

Page 18: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Una expresión FLWR sencilla que devuelve los números de cuentas para las cuentas corrientes está basada en el documento XML del ejemplo 8, que usa ID e IDREFS:

for $x in /banco-2/cuentalet $numcuenta : = $x/@número-cuenta no es esencial ya que la consulta es sencillawhere $x/saldo > 400return<número-cuenta>$numcuenta</númerocuenta>$numcuenta se podría remplazar con $x/@número-cuenta.

Una consulta equivalente puede tener solamente cláusulas for y return:

for $x in /banco-2/cuenta[saldo > 400]return <número-cuenta> $x/@número-cuenta </número-cuenta>La cláusula let simplifica las consultas complejas.

Las expresiones de ruta en XQuery pueden devolver un multiconjunto con nodos repetidos. La función distinct aplicada a un multiconjunto devuelve un conjunto sin duplicación. La función distinct se puede usar incluso con una cláusula for. XQuery también proporciona funciones de agregado tales como sum y count que se pueden aplicar a colecciones tales como conjuntos y multiconjuntos. Aunque XQuery no proporciona una constructora group by, las consultas de agregado se pueden escribir mediante el uso de constructoras FLWR anidadas en lugar de agrupamientos.

Las reuniones se especifican en XQuery de forma parecida a SQL. La reunión de elementos impositor, cuenta y cliente del primer ejemplo, que se escribió en XSLT, se puede escribir en XQuery de la siguiente forma

for $a in /banco/cuenta,$c in /banco/cliente,$i in /banco/impositorwhere $a/número-cuenta = $i/número-cuentaand $c/nombre-cliente = $i/nombre-clientereturn <cuenta-cliente> $c $a </cuenta-cliente>

La misma consulta se puede expresar con las selecciones especificadas como selecciones XPath:

for $a in /banco/cuenta,$c in /banco/cliente,$i in /banco/impositor[número-cuenta = $a/número-cuentaand nombre-cliente = $c/nombre-cliente]return <cuenta-cliente> $c $a</cuenta-cliente>

Las expresiones XQuery FLWR se pueden anidar en la cláusula return con el fin de generar anidamientos de elementos que no aparecen en el documento origen.

Page 19: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Por ejemplo, la estructura XML mostrada en el ejemplo 3, con los elementos de la cuenta anidados en elementos cliente, se puede generar a partir de la estructura del ejemplo 1 mediante esta consulta:<banco-1>

for $c in /banco/clientereturn

<cliente>$c/*for $i in /banco/impositor[nombre-cliente =

$c/nombre-cliente],$a in /banco/cuenta[número-cuenta =$i/número-cuenta]

return $a</cliente>

</banco-1>

La consulta también introduce la sintaxis $c/*, que se refiere a todos los hijos del nodo, que está ligada a la variable $c. De forma similar, $c/text() proporciona el contenido textual de un elemento, sin las etiquetas.Una de las extensiones de sintaxis útiles es el operador ->, que se puede usar para desreferenciar IDREFs, al igual que la función id(). Se puede aplicar el operador sobre un valor del tipo IDREFS para obtener un conjunto de elementos. Se puede usar, por ejemplo, para encontrar todas las cuentas asociadas con un cliente, con la representación ID/IDREFS de la información bancaria.

En XQuery los resultados se pueden ordenar si se incluye una cláusula sortby al final de cualquier expresión. Por ejemplo, esta consulta tiene como salida todos los elementos cliente ordenados por el subelemento name:

for $c in /banco/cliente,return <cliente> $c/* </cliente> sortby(name)

Para ordenar de forma decreciente podemos usar sortby(name descending). La ordenación se puede realizar en varios niveles de anidamiento. Por ejemplo se puede obtener una representación anidada de la información bancaria ordenada según el nombre del cliente, con las cuentas de cada cliente ordenadas según el número de cuenta:

<banco-1>for $c in /banco/clientereturn

<cliente>$c/*

for $d in /banco/impositor[nombre-cliente = $c/nombre-cliente],

$a in /banco/cuenta[número-cuenta = $d/número-cuenta]return <cuenta> $a/* </cuenta> sortby (número-cuenta)

Page 20: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

</cliente> sortby(nombre-cliente)</banco-1>

XQuery proporciona una serie de funciones incorporadas y soporta funciones definidas por el usuario.Por ejemplo, la función incorporada document(name) devuelve la raíz de un documento con nombre; la raíz se puede usar entonces en una expresión de ruta para acceder al contenido del documento. Los usuarios pueden definir funciones tal como se ilustra con esta función, que devuelve una lista de todos los saldos de un cliente con un nombre especificado:

function saldos(xsd:string $c) returns list(xsd: numeric) {for $i in /banco/impositor[nombre-cliente = $c],

$a in /banco/cuenta[número-cuenta =$i/número-cuenta]

return $a/saldo}

XQuery también proporciona funciones para realizar conversiones entre tipos. Por ejemplo, number(x) convierte una cadena a un número. Otras características, tales como cláusulas if-then-else, las cuales se pueden usar con cláusulas return, y la cuantificación existencial y universal, que se pueden usar en predicados en cláusulas where.

7.4.3 XSLT. (XSL Transformations)

Una hoja de estilo es una representación de las opciones de formato para un documento, normalmente almacenado fuera del documento mismo, por lo que el formato está separado del contenido.

XSL (XML Stylesheet Language), el lenguaje de hojas de estilo XML, estaba originalmente diseñado para generar HTML a partir de XML y es por ello una extensión lógica de hojas de estilo HTML. El lenguaje incluye un mecanismo de transformación de propósito general, denominado XSLT (XSL Transformations, transformaciones XSL), que se puede usar para transformar un documento XML en otro documento XML, o a otros formatos como HTML. Las transformaciones XSLT son bastante potentes y en realidad XSLT puede incluso actuar como un lenguaje de consulta.

Las transformaciones XSLT se expresan como una serie de reglas recursivas, denominadas plantillas. En su forma básica las plantillas permiten la selección de nodos en un árbol XML mediante una expresión XPath. Una plantilla sencilla para XSLT consiste en una parte de coincidencia (match) y una parte de selección (select). Consideremos el siguiente código XSLT. La instrucción xsl:template match contiene una expresión XPath que selecciona uno o más nodos.<xsl:template match = «/banco-2/cliente»> busca coincidencias de elementos cliente que aparecen como hijos del elemento raíz banco-2.

Page 21: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

<xsl:value-of select = «nombre-cliente»/> xsl:value-of devuelve valores de los nodos</xsl:template><xsl:template match = «*»/> La primera plantilla devuelve el valor del subelemento nombre-cliente; nótese que el valor no contiene la marca element. Nótese que la segunda plantilla coincide con todos los nodos.

Cualquier texto o etiqueta de la hoja de estilo XSLT que no esté en el espacio de nombres xsl se copia a la salida sin cambios. El ejemplo 10 muestra cómo usar esta característica para hacer que cada nombre de cliente del ejemplo aparezca como un subelemento del elemento «<cliente>» mediante la ubicación de la instrucción xsl:value-of entre <cliente> y </cliente>.

Uso de XSLT<xsl:template match = «/banco-2/cliente»>

<cliente><xsl:value-of select = «nombre-cliente»/></cliente>

</xsl:template><xsl:template match = «*»/>Ejemplo 10

La creación de un atributo, como id-Cliente, en el elemento Cliente generado, es más complicado y requiere el uso de xsl:attribute.

La recursividad estructural es una parte clave de XSLT. La idea de la recursividad estructural es la siguiente:

Cuando una plantilla coincide con un elemento en la estructura de árbol XSLT puede usar la recursividad estructural para aplicar las reglas de la plantilla recursivamente a los subárboles en lugar de simplemente devolver un valor. Aplica las reglas recursivamente mediante la directiva xsl:apply-templates, que aparece dentro de otras plantillas.

Por ejemplo:

Los resultados de nuestra consulta anterior se pueden ubicar en un elemento <clientes> mediante la adición de una regla usando xsl:apply-templates.

Aplicación recursiva de reglas.<xsl:template match = «/banco»>

<clientes><xsl:apply-templates/></clientes>

</xsl:template>

Page 22: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

<xsl:template match = «/cliente»><cliente><xsl:value-of select = «nombre-cliente»/></cliente>

</xsl:template><xsl:template match = «*»/>Ejemplo 11.

La nueva regla coincide con la etiqueta externa «banco» y construye un documento resultado mediante la aplicación de otras plantillas a los subárboles que aparecen en el elemento banco, pero envolviendo los resultados en el elemento <clientes> </clientes> dado. Sin la recursividad forzada por la cláusula <xsl:apply-templates/> la plantilla devolvería <clientes> </clientes> y entonces aplicaría otras plantillas a los subelementos.

XSLT proporciona una característica denominada key (clave), que permite la búsqueda de elementos mediante el uso de valores de subelementos o atributos; los objetivos son similares a los de la función id() en XPath, pero permite usar atributos distintos a los atributos ID. Las claves se definen mediante una directiva xsl:key la cual tiene tres partes.

Por ejemplo: <xsl:key name = «numcuenta» match = «cuenta» use = «número-cuenta»/>

El atributo name se usa para distinguir claves distintas. El atributo match especifica los nodos a los que se aplica la clave. El atributo use específica la expresión a usar como el valor de la clave.

La expresión no tiene que ser única para un elemento; esto es, más de un elemento puede tener el mismo valor de expresión. Las claves se pueden usar en plantillas como parte de cualquier patrón mediante la función key. Esta función toma el nombre de la clave y un valor y devuelve el conjunto de nodos que coinciden con ese valor. Por ello, el nodo XML para la cuenta «C-401» se puede referenciar como key («numcuenta», «C-401»). Las claves se pueden usar para implementar algunos tipos de reuniones, como se muestra en el siguiente ejemplo:

Combinaciones en XSLT.<xsl:key name = «numcuenta» match = «cuenta» use = «número-cuenta»/><xsl:key name = «numcliente» match = «cliente» use = «nombre-cliente»/><xsl:template match = «impositor»>

<cuenta-cliente><xsl:value-of select = key(«numcliente», «nombre-cliente»)/><xsl:value-of select = key(«numcuenta», «número-cuenta»)/></cuenta-cliente>

</xsl:template><xsl:template match = «*»/>Ejemplo 12

Page 23: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

En la función key reúne los elementos impositor con los elementos coincidentes cliente y cuenta.El resultado de la consulta consiste en pares de elementos cliente y cuenta encerrados en elementos cuenta-cliente.XSLT permite ordenar los nodos. Un ejemplo sencillo muestra cómo se usaría xsl:sort en la hoja de estilo para devolver los elementos cliente ordenados por el nombre:

<xsl:template match = «/banco»><xsl:apply-templates select = «cliente»> select lo restringe para que sólo se aplique a los subelementos cliente.<xsl:sort select = «nombre-cliente»/> xsl:sort en el elemento xsl:applytemplate hace que los nodos se ordenen antes de ser procesados</xsl:apply-templates>

</xsl:template><xsl:template match = «cliente»>

<cliente><xsl:value-of select = «nombre-cliente»/><xsl:value-of select = «calle-cliente»/><xsl:value-of select = «ciudad-cliente»/>

</cliente></xsl:template><xsl:template match = «*»/>

7.5 Almacenamiento de datos XML.

Muchas aplicaciones requieren el almacenamiento de datos XML. Una forma de almacenar datos XML es convertirlos a una representación relacional y almacenarlos en una base de datos relacional. Hay varias alternativas para almacenar datos XML.

7.5.1. Bases de datos relacionales Puesto que las bases de datos relacionales se usan ampliamente en aplicaciones existentes es una gran ventaja almacenar datos XML en bases de datos relacionales de forma que se pueda acceder a los datos desde aplicaciones existentes.La conversión de datos XML a una forma relacional es normalmente muy sencilla si los datos se han generado en un principio desde un esquema relacional y XML se usó simplemente como un formato de intercambio de datos para datos relacionales. Sin embargo, hay muchas aplicaciones donde los datos XML no se han generado desde un esquema relacional y la traducción de los datos a una forma relacional de almacenamiento puede no ser tan sencilla. En particular los elementos anidados y los elementos que se repiten (correspondientes a atributos con valores de conjunto) complican el almacenamiento de los datos XML en un formato relacional.

Page 24: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

Hay diversas alternativas.

Almacenamiento como cadena. Es almacenar cada elemento hijo del elemento de mayor nivel como una cadena en una tupla separada de la base de datos. Por ejemplo, los datos XML del primer ejemplo se podrían almacenar como un conjunto de tuplas en una relación elementos(datos), con el atributo datos de cada tupla almacenando un elemento XML (cuenta, cliente o impositor) en forma de cadena.

Representación en árbol. Los datos XML arbitrarios se pueden modelar como un árbol y almacenar mediante el uso de un par de relaciones:

nodos(id, tipo, etiqueta, valor)hijo(id-hijo, id-padre)

A cada elemento y atributo de los datos XML se le proporciona un identificador único. Una tupla insertada en la relación nodos para cada elemento y atributo con su identificador (id), su tipo (atributo o elemento), el nombre del elemento o atributo (etiqueta) y el valor textual del elemento o atributo (valor). La relación hijo se usa para guardar el elemento padre de cada elemento y atributo. Si la información de orden de los elementos y atributos se debe preservar, se puede agregar un atributo extra posición a la relación hijo para indicar la posición relativa del hijo entre los hijos del padre.

Asignación a relaciones. Según este enfoque los elementos XML cuyo esquema es conocido se asignan a relaciones y atributos. Los elementos cuyo esquema es desconocido se almacenan como cadenas o como una representación en árbol.

Se crea una relación para cada tipo de elemento cuyo esquema sea conocido. Todos los atributos de estos elementos se almacenan como atributos de la relación. Todos los subelementos que suceden más de una vez dentro de estos elementos (según se especifica en DTD) también se pueden representar como atributos de la relación; si el subelemento puede contener solamente texto, el atributo almacena el valor de texto. En otro caso, la relación correspondiente al subelemento almacena los contenidos del subelemento junto con un identificador para el tipo padre y el atributo almacena el identificador del subelemento. Si el subelemento tiene más subelementos anidados se aplica el mismo procedimiento al subelemento.

7.5.2 Almacenamientos de datos no relacionales

Hay varias alternativas para almacenar datos XML en sistemas de almacenamientos de datos no relacionales:

Almacenamiento en archivos planos.

Puesto que XML es principalmente un formato de archivo, un mecanismo de almacenamiento natural es simplemente un archivo plano. Este enfoque tiene

Page 25: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

muchos de los inconvenientes sobre el uso de sistemas de archivos como base para las aplicaciones de bases de datos. En particular hay una carencia de aislamiento de datos, comprobaciones de integridad, atomicidad, acceso concurrente y seguridad. Sin embargo, la amplia disponibilidad de herramientas XML que funcionan sobre archivos de datos hace relativamente sencillo el acceso y consulta de datos XML almacenados en archivos. Por ello, este formato de almacenamiento puede ser suficiente para algunas aplicaciones.

Almacenamiento en una base de datos XML.

Las bases de datos XML son bases de datos que usan XML como su modelo de datos básico. Las bases de datos XML antiguas implementaban el modelo de objetos documento sobre una base de datos orientada a objetos basada en C++. Esto permite reusar gran parte de la infraestructura de bases de datos orientada a objetos mientras se usa una interfaz XML estándar. La adición de un lenguaje de consulta XML proporciona consultas declarativas. También es posible construir bases de datos XML como una capa en la parte superior de las bases de datos relacionales.

7.6 Aplicaciones.

Un objetivo central en el diseño para XML es hacer más sencillo comunicar la información en Web y entre aplicaciones permitiendo que la semántica de los datos se describa con los mismos datos. Por ello, aunque la gran cantidad de datos XML y su uso en aplicaciones de negocios indudablemente requerirán y se beneficiarán de las tecnologías de bases de datos XML, es principalmente un medio de comunicación.

Dos aplicaciones XML para comunicación (intercambio de datos y mediación de recursos de información Web) ilustran cómo XML logra su objetivo de soportar el intercambio de datos y demuestran cómo la tecnología e interacción de las bases de datos son la clave en dar soporte a aplicaciones basadas en el intercambio.

7.6.1. Intercambio de datos

Se están desarrollando estándares para la representación XML de los datos de una gran variedad de aplicaciones especializadas que van desde aplicaciones de negocios tales como banca y transportes a aplicaciones científicas tales como química y biología molecular.

Veamos algunos ejemplos:

La industria química necesita información sobre los compuestos químicos tales como su estructura molecular y una serie de propiedades importantes tales como los puntos de fusión y ebullición, valores caloríficos, solubilidad en distintos solventes.

Page 26: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

En el transporte, los transportes de mercancías y los agentes de aduana e inspectores necesitan los registros de los envíos que contengan información detallada sobre los bienes que están siendo transportados, por quién y desde dónde se han enviado, a quién y a dónde se envían, el valor monetario de los bienes.

Un mercado en línea en que los negocios pueden vender y comprar bienes requiere información tal como los catálogos de producto, incluyendo descripciones detalladas de los productos e información de los precios, inventarios de los productos, ofertas a comprar y cuotas para una venta propuesta.

El uso de esquemas relacionales normalizados para modelar requisitos de datos tan complejos genera un gran número de relaciones que son complicadas de gestionar por los usuarios. Las relaciones frecuentemente tienen un gran número de atributos; la representación explícita de nombres de atributos y elementos con sus valores en XML ayuda a evitar confusiones entre los atributos. Las representaciones de elementos anidados ayudan a reducir el número de relaciones que se deben representar, así como el número de combinaciones requeridas para obtener la información, con el posible coste de redundancia.Cuando se usa XML para intercambiar los datos entre aplicaciones de negocio los datos se originan muy frecuentemente en bases de datos relacionales. Los datos en las bases de datos relacionales deben ser publicados, esto es, convertidos a formato XML para su exportación a otras aplicaciones. Los datos de entrada deben ser despiezados, es decir, convertida desde XML a un formato normalizado de relación y almacenado en una base de datos relacional. Una base de datos con capacidades XML permite una correspondencia automática de su modelo relacional interno (relacional, relacional orientado a objetos u orientado a objetos) con XML. Estas correspondencias pueden ser sencillas o complejas.

Una correspondencia sencilla podría asignar un elemento a cada fila de una tabla y hacer de cada columna en esa fila bien un atributo o bien un subelemento del elemento de la fila.

Una correspondencia más complicada necesitaría que se crearan estructuras anidadas. Las extensiones de SQL con consultas anidadas en la cláusula select se han desarrollado para permitir una creación fácil de salidas XML anidadas.

7.6.2 Mediación de datos

La compra comparada es un ejemplo de aplicación de mediación de datos en la que los datos sobre elementos, inventario, precio y costes de envío se extraen de una serie de sitios Web que ofrecen un elemento en particular de venta. Un gestor financiero personal es una aplicación similar en el contexto de la banca. Consideremos un consumidor con una gran cantidad de cuentas a gestionar, tales como cuentas bancarias, cuentas de ahorro y cuentas de jubilación.Supongamos que estas cuentas pueden estar en distintas instituciones. Es un reto importante proporcionar una gestión centralizada de todas las cuentas de un cliente. La

Page 27: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

mediación basada en XML soluciona el problema extrayendo una representación XML de la información de la cuenta desde los sitios Web respectivos de las instituciones financieras donde están las cuentas individuales. Esta información se puede extraer fácilmente si la institución la exporta a un formato XML estándar, e indudablemente algunas lo harán. Para aquellas que no lo hacen se usa un software envolvente para generar datos XML a partir de las páginas Web HTML devueltas por el sitio Web. Las aplicaciones envolventes necesitan un mantenimiento constante, puesto que dependen de los detalles de formato de las páginas Web, que cambian constantemente. No obstante, el valor proporcionado por la mediación frecuentemente justifica el esfuerzo requerido para desarrollar y mantener las aplicaciones envolventes.Una vez que las herramientas básicas están disponibles, se usa una aplicación mediadora para combinar la información extraída bajo un único esquema. Esto puede requerir más transformación de los datos XML de cada sitio, puesto que los distintos sitios pueden estructurar la misma información de una forma diferente.

Page 28: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

CONCLUSIÓN

Como se pudo observar en este documento se dieron varios ejemplos de cómo representar los documentos XML, cómo están estructurados y también de que manera se almacena información. Dicha información también puede ser extraída por así decirlo, por medio de consulta. Hay varios lenguajes que se pueden utilizar para hacer las consultas, entre ellos están lo que el XQuery, XPath y XSLT, que están diseñados para la capacidad de transformación.

XQuery esta basado en el lenguaje de consulta de Quilt, este lenguaje es similar al SQL ya que utiliza las clausulas for, where, return y let; estas son expresiones llamadas FLWR. XPath, es un lenguaje para expresiones de rutas, estas expresiones se pueden usar para recorrer la estructura de arboles XML. Y por ultimo XSLT se diseño para la aplicación de hojas de estilo, es una representación de formato para un documento.

Definimos lo que era un elemento, elemento raíz, los elementos anidados, los ID, IDREF e IDREFS, plantillas, espacio de nombre, entre otros.

Page 29: Unidad 7 XML

Unidad 7 XML. (Extensible Markup Language, lenguaje de marcas extensible)

BIBLIOGRAFIA

Silberschatz, A. H. Fundamento de Base de Datos, cuarta edicion . Nueva York: MCGRAW-HILL.