• No se han encontrado resultados

UNIVERSITAT OBERTA DE CATALUNYA

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSITAT OBERTA DE CATALUNYA"

Copied!
187
0
0

Texto completo

(1)

UNIVERSITAT OBERTA DE CATALUNYA

Segundo ciclo Ingeniería Informática

XML / XQuery Languages

Estado del arte

Alumne: Carlos Marín Muñoz Dirigit per: Alex Alfonso Minguillón CURS: Primer quatrimestre 2003-2004

(2)

A los creadores de los Simpsons y de Chin-Chan

por darme los únicos momentos de descanso y evasión durante todo este tiempo

A mis amigos, por su comprensión ante tantos desplantes

A la UOC, por ser la herramienta que me ha permitido alcanzar esta meta

(3)

Resumen de la memoria

El presente trabajo ha representado una síntesis de recopilación de información del estándar XML y los lenguajes de consultas XQuery, lenguajes de consultas diseñados para realizar accesos sobre este tipo de datos.

Se pretendía con este trabajo, y eso espero haber conseguido, hacer un análisis de cómo se encuentra actualmente el estándar XML y sobretodo como las bases de datos actuales, empiezan a asumir, si más no mediante herramientas y funcionalidades externas, la importancia de este estándar.

Así inicialmente, se plantea una primera parte de estudio, análisis y recopilación de información sobre XML, los principales elementos de este estándar y como no, dos de los más importantes estándares de transformación, el XSLT y el Xpath. La idea de esta primera parte es introducir al posible lector en el estándar de una manera clara y, espero, sencilla.

Ya he comentado que el mayor peso de este trabajo se lo ha llevado la relación que XML tiene con las bases de datos, es por este motivo que una segunda parte de la memoria se centra exclusivamente en los lenguajes de consultas sobre XML, los XQuery Languages, donde especialmente nos centramos en el estándar XQuery 1.0 del W3C exponiendo y detallando toda la sintaxis de este lenguaje.

Un análisis teórico sin una parte práctica no es completo, y de ahí la importancia de la tercera parte del trabajo, ver, analizar y comprobar (aunque esto haya llevado en alguna ocasión a la desilusión) como dos bases de datos totalmente diferentes, como es Oracle 9i, inminentemente relacional, y Tamino de AG, base de datos nativa, permiten, en mayor o menor medida el trabajo con el lenguaje XML. Esta parte del trabajo ha sido por descontado la más interesante de todas, ya que habiendo asentado los principios teóricos del XML y los lenguajes de consultas, es donde se pueden detectar las principales ventajas e inconvenientes que representa trabajar con una base de datos relacional o con una base de datos nativa.

Inicialmente la idea era realizar un caso práctico, el mismo, en ambos sistemas de bases de datos, pero debido a problemas surgidos a la hora de instalar y sobretodo configurar el Tamino, el análisis de Tamino ha tenido que hacerse un poco más teórico, algunos incluso pensaran que excesivamente teórico; pero creo que se ha conseguido que el usuario se haga una idea del funcionamiento de Tamino mediante el ejemplo práctico que se ha desarrollado.

De esta forma, en el primer capítulo se sintetiza los aspectos básicos del estándar XML haciendo una especial incidencia en el motivo que lo ha llevado y lo está llevando cada vez más a ser la elección más correcta e idónea como estándar de transmisión de información e intercambio. También es este capítulo se detallan los elementos básicos de la sintaxis del XML incluyendo un análisis exhaustivo sobre los archivos de definición de datos o DTDs y los XML Schemas. Por último se recogen los principales estándares de transformación para XML, el XSLT y el XPath.

En el segundo capítulo nos centramos en los lenguajes de consulta XQuery Languages, detallando las características que deben tener estos lenguajes para más tarde comentar brevemente cada uno de los que actualmente existen y comparándolos entre ellos

En el capitulo tercero se especifica detalladamente la sintaxis del lenguaje de consultas XQuery 1.0 según las directrices y documentos de trabajo del World Wide Web Consortium. Se hace un detalle exhaustivo de las expresiones, operadores y funciones que soporta este lenguaje de consultas. El capítulo está repleto de ejemplos para clarificar los conceptos vistos.

(4)

Una vez se ha hecho el análisis teórico del lenguaje XML y los estándares asociados a él, en el capítulo cuarto nos centramos en como Oracle 9i trata la información XML. Primero nos centramos en los parsers y APIs en Java de que dispone Oracle para después ver las herramientas propias de Oracle como el XML SQL Utitlity y el tipo de dato XMLType. Durante todo el capítulo se trabaja de modo práctico a través de un ejemplo básico con el fin de clarificar los conceptos.

Después de analizar como una potente base de datos relacional como es Oracle realiza el almacenamiento y acceso a datos XML, en el capítulo quinto nos centramos en analizar como una base de datos nativa, como es Tamino de AG Software realiza el almacenamiento y el acceso a este tipo de datos. Debido a lo novedoso de este tipo de bases de datos, se presenta un análisis más teórico en cuanto a arquitectura del sistema Tamino, componentes integrados y funcionalidades para acabar describiendo muy por encima los pasos para crear una base de datos nativa y la ejecución de consultas utilizando los dos lenguajes de consultas que Tamino soporta, el lenguaje de consultas XQuery 1.0 y el Tamino X-Query basado en Xpath 2.0

Ya por último, se presenta una sintetización de los dos sistemas vistos y que ventajas y/o desventajas aportan el uno sobre el otro.

(5)

Índice de contenidos

RESUMEN DE LA MEMORIA ... 3

ÍNDICE DE CONTENIDOS ... 5

INDICE DE FIGURAS ... 11

INTRODUCCIÓN... 12

1 DESCRIPCIÓN DEL PROYECTO ... 13

1.1 Objetivos del proyecto...13

1.2 Resultados esperados...13

1.3 Riesgos esperados ...14

2 Alcance de la propuesta ...14

2.1 Recopilación de información y estudio del XML...14

2.2 Recopilación de información y estudio del lenguaje de consultas XQuery...15

2.3 Estudio de las bases de datos que soportan XML...15

2.4 Desarrollo de un caso práctico XML Oracle vs. Tamino ...15

3 ORGANIZACIÓN DEL PROYECTO ... 16

3.1 Descripción de actividades...16

3.1.1 Arranque del proyecto...16

3.1.2 Estudio del lenguaje XML ...16

3.1.3 Estudio del lenguaje de consultas XQuery...16

3.1.4 Estudio del funcionamiento de Oracle 9i con XML...16

3.1.5 Estudio del funcionamiento de Tamino con XML ...16

3.1.6 Realización de un caso práctico sobre XML en Oracle vs Tamino...17

3.2 Calendario de Trabajo ...18

3.3 Hitos Principales...18

EL LENGUAJE DE MARCAS XML... 20

1 ORIGEN ... 21

1.1 Intercambio de información el la red...21

(6)

2 OBJETIVOS... 25

3 SINTAXIS XML. XML BIEN FORMADO... 27

3.1 Elementos ...27 3.2 Atributos ...28 3.3 Comentarios ...28 3.4 Elementos vacíos...29 3.5 Declaración XML ...29 3.6 Instrucciones de procesamiento ...29 3.7 El árbol XML...30

4 LAS HOJAS DE ESTILO EN CASCADA (CSS) ... 30

4.1 Concepto...31

4.2 Hojas de estilo en cascada y XML...31

5 DEFINICIÓN DE TIPO DE DOCUMENTO. LOS DTD’S ... 33

5.1 Sintaxis de los documentos DTD ...35

5.1.1 Declaración de elementos ...35

5.1.2 Declaración de atributos...36

5.2 XML Schema ...37

5.2.1 Namespaces...38

5.2.2 Tipos de datos nativos...39

6 ESTÁNDARES DE TRANSFORMACIÓN PARA XML: XSLT Y XPATH ... 40

6.1 XSLT ...40

6.1.1 Sintaxis del lenguaje de transformación XSLT...41

<xsl:stylesheet>... 43 <xsl:template> ... 43 <xsl:apply-templates> ... 43 <xsl:value-of> ... 44 <xsl:output> ... 44 <xsl:element> ... 44 <xsl:attribute> ... 45 <xsl:text> ... 45 <xsl:if> ... 46 <xsl:choose> ... 46 <xsl:for-each>... 46 <xsl:copy-of> ... 46 <xsl:copy> ... 47 <xsl:sort> ... 47 <xsl:variable> ... 47

(7)

6.2.3 Sintaxis del lenguaje de transformación XPath...51

LOS LENGUAJES DE CONSULTA XML ... 58

1 CARACTERÍSTICAS DE LOS LENGUAJES DE CONSULTA XML... 59

1.2 Características deseables en un lenguaje de consultas XML...59

1.2.1 Desde la perspectiva de datos semiestructurados...59

1.2.2 Desde la perspectiva búsqueda de información...60

2 EVOLUCIÓN HISTÓRICA ... 62

3 COMPARATIVA ENTRE LOS XQUERY LANGUAGES ... 63

3.1 Lorel...63 3.2 XSLT ...64 3.3 XML-QL ...66 3.4 XQL-99...67 3.5 XQuery ...68 3.5.1 Expresiones XPath ...68 3.5.2. Constructores de elementos...69 3.5.3. Expresiones FLWR ...69 3.5.4 Operadores ...70 3.6 Comparativa ...70

SINTAXIS DEL LENGUAJE XQUERY 1.0 ... 72

1 DOCUMENTOS DE REFERENCIA ... 73

2 XQUERY DATA MODEL ... 74

2.1 Introducción...74

2.2 Nodos, Valor atómico y secuencia ...74

2.3 Orden del documento ...75

2.4 Funciones de Acceso a Nodos ...75

2.4.1 Funciones adicionales de Documento ...76

2.4.2 Funciones adicionales de Elemento ...76

2 GRAMÁTICA DEL XQUERY 1.0 ... 77

2.1 Conceptos básicos ...77

2.2 Tipos ...77

(8)

2.3.1 Expresiones primarias ...78 2.3.2 Expresiones de recorrido...79 2.4 Expresiones de secuencias...81 2.5 Expresiones Aritméticas ...82 2.6 Expresiones Lógicas ...82 2.7 Constructores...83

2.7.1 Constructores directos de elementos ...83

2.7.2 Constructores Programados ...86

2.8 Expresiones FLWOR ...88

2.8.1 cláusulas For y Let ...89

2.8.2 La cláusula where...91

2.8.3 Las clausulas order by y return ...91

2.8.4 Ejemplos de expresiones FLWOR ...92

2.9 Expresiones condicionales...93

2.10 Expresiones de cuantificación...93

3 FUNCIONES Y OPERADORES ... 94

3.1 Funciones de acceso...95

3.2 Funciones constructoras ...95

3.3 Funciones y Operadores numéricos...97

3.3.1 Operadores para valores numéricos ...97

3.3.2 Comparacion de valores numéricos ...97

3.3.3 Funciones para valores numéricos ...97

3.4 Funciones de Strings...98

3.4.1 Igualdad y comparación de Strings ...98

3.4.2 Funciones para Strings ...98

3.4.3 Funciones de cadenas y patrones de concordancia...99

3.5 Funciones y operadores boleanos...100

3.6 Funciones y Operadores de fecha y hora...100

3.6.1 Operadores de Comparación de Fecha/Hora...100

3.6.2 Funciones de extracción de componentes ...102

3.6.3 Funciones aritméticas de fechas y horas ...104

3.7 Funciones y Operadores de Nodos ...105

3.8 Funciones y Operadores de Secuencias ...106

3.8.1 Funciones y operadores de secuencias ...106

3.8.2 Funciones de union, intersección y diferencia de secuencias...106

3.8.3 Funciones de agregados ...107

(9)

2 ORACLE 9I Y XML ... 110

2.1 Analizador XML de Oracle ...111

2.1.1 Instalación del analizador XML de Oracle...111

2.1.2 Ejecución del analizador XML de Oracle fuera de la base de datos ...112

2.1.3 Ejecución del analizador XML de Oracle desde el interior de la base de datos...122

2.2 El generador de clases XML de Oracle ...124

2.3 La SQL XML Utility de Oracle...140

2.4 Oracle 9i y bases de datos para XML ...145

2.4.1 Almacenamiento de documentos XML como CLOB ...146

2.4.2 Búsqueda dentro de un documento y a través de varios documentos...149

2.4.3 Manipulación de datos XML en columnas XMLType...150

Inserción de datos XML... 150

Modificación de datos XML ... 152

Borrado de datos XML ... 153

TRATAMIENTO DE XML SOBRE TAMINO ... 154

1 INTRODUCCIÓN ... 155

2 ARQUITECTURA GENERAL DE TAMINO ... 156

3 TAMINO XML SERVER ... 157

3.1 Introducción y concepto...157

3.1.1 Servicios de la base (Core Services) ...157

3.1.2 Servicios permitidos (Enabling services) ...157

3.1.3 Soluciones ...158

3.2 Arquitectura general de Tamino XML Server ...158

3.2.1 Native XML Data Store ...159

3.2.2 Data Map...160

3.2.3 X-Node...161

3.2.4 X-Tension...161

3.2.5 Tamino Manager ...162

3.3 Componentes y productos de Tamino...162

3.3.1 Tamino Schema Editor...162

3.3.2 Tamino Interactive Interface ...163

3.3.3 Tamino X-Plorer ...164

3.3.4 Tamino WebDAV Server...164

3.3.5 Interfaces de Programación de Aplicaciones (API’s)...165

3.4 Creación de una base de datos en Tamino ...166

3.5 Localización de objetos XML ...169

3.6 Consulta y manipulación de la base de datos Tamino...175

CONCLUSIONES Y RESUMEN ... 177

(10)

2 ESTRATEGIAS PARA EL ALMACENAMIENTO DE DATOS XML... 178

2.1 Almacenamiento del documento XML como un objeto CLOB...179

2.2 Modificación del documento XML y almacenamiento en el sistema de archivos ...179

2.3 Mapeado de la estructura de datos del documento y almacenamiento en la base de datos ...179

3 ORACLE 9I Y XML ... 180

4 TAMINO Y XML ... 180

5 CONCLUSIONES ... 181

6 POSIBLES LÍNEAS DE TRABAJO... 183

(11)

Índice de figuras

Figura 1.1. Problemas de intercambio de información mediante archivos binarios... 21

Figura 1.2. Elección de documentos texto para intercambio de información ... 22

Figura 1.3 a. Uso de HTML como estándar de intercambio ... 22

Figura 1.3 b. Uso de HTML como estándar de recepción de información ... 23

Figura 1.4. Arquitectura de las aplicaciones actuales ... 24

Figura 1.5. Arquitectura en capas y subcapas de las aplicaciones ... 24

Figura 1.6. Equivalencia entre documento HTML y documento XML ... 26

Figura 1.7. Representación en árbol de un documento XML ... 30

Figura 1.8. Esquema de un documento XML válido ... 34

Figura 1.9. Esquema de un documento XML bien formado ... 38

Figura 1.10. Funcionamiento del proceso de transformación XSLT ... 41

Figura 1.11. Representación del arbol de documento XML según XPath ... 50

Figura 1.12. Representación de los ejes (axis) XPath ... 53

Figura 2.1. Evolución histórica de los lenguajes de consulta XQuery Languages... 62

Figura 3.1. Jerarquía del tipo de datos en Xquery 1.0... 94

Figura 4.1. Intercambio de información vía web ... 109

Figura 4.2. Resultado de clases java a partir del generador de clases XML de Oracle... 127

Figura 4.3. Esquema de funcionamiento del XML SQL Utility de Oracle ... 141

Figura 5.1. Integración en Tamino de diferentes tipos de datos... 155

Figura 5.2. Visión conceptual del Tamino XML Server... 157

Figura 5.3. Arquitectura general de Tamino XML Server ... 158

Figura 5.4. Arquitectura y funcionamiento del Native Data Store de Tamino... 159

Figura 5.5. Funcionamiento del Data Map de Tamino... 160

Figura 5.6. Funcionamiento del X-Node... 161

Figura 5.7. Funcionamiento del X-Tension... 161

Figura 5.8. Arquitectura y funcionamiento del Tamino Manager... 162

Figura 5.9. Ejemplo de uso del Tamino Schema Editor... 163

Figura 5.10. Funcionamiento del Tamino Interactive Interface ... 163

Figura 5.11. Funcionamiento del Tamino X-Plorer ... 164

Figura 5.12. Esquema UML de la API para .NET ... 165

Figura 5.13. Arquitectura de la API para Java ... 165

Figura 5.14. Pantalla principal del Tamino Manager (creación de la base de datos I)... 167

Figura 5.15. Pantalla principal del Tamino Manager (creación de la base de datos II) ... 167

Figura 5.16. Pantalla principal del Tamino Manager (creación de la base de datos III)... 168

Figura 5.17. Pantalla principal del Tamino Manager (creación de la base de datos IV)... 168

Figura 5.18. Pantalla principal del Tamino Manager (arranque de la base de datos) ... 169

Figura 5.19. Uso del Tamino Schema Editor (creación del esquema de la base de datos I)... 170

Figura 5.20. Uso del Tamino Schema Editor (creación del esquema de la base de datos II).... 170

Figura 5.21. Uso del Tamino Schema Editor (creación del esquema de la base de datos III) .. 171

Figura 5.22. Uso del Tamino Schema Editor (creación del esquema de la base de datos IV) .. 171

Figura 5.23. Carga del esquema de la base de datos en Tamino Interactive Interface... 173

Figura 5.24. Carga del archivo XML de la base de datos en Tamino Interactive Interface ... 173

Figura 5.25. Ejecución de consulta XQuery... 175

(12)
(13)

1 Descripción del proyecto

El presente proyecto es la primera parte de un proyecto más amplio que se plantea el estudio del modelo de datos XML, de los diferentes lenguajes de consulta y de las diferentes bases de datos existentes en el mercado y que utilizan esta tecnología, siendo el objetivo principal del proyecto realizar un estudio sobre XML y su relación con el campo de las bases de datos.

En este proyecto mediante la recopilación de información se pretende realizar un estudio sobre XML, el lenguaje de consultas XQuery y de las diferentes bases de datos que existen en el mercado y que permiten utilizar XML como fuente de datos: tanto las bases de datos relacionales como las bases de datos nativas; en concreto, se centrará el estudio sobre Oracle 9i como sistema gestor de bases de datos relacional que permite el uso de XML y Tamino como base de datos nativa sobre XML.

1.1 Objetivos del proyecto

El objetivo principal de este proyecto es realizar un estudio sobre XML y su relación

con el campo de las bases de datos, concretamente Oracle 9i y Tamino

Para la consecución de este objetivo se pretende:

- Recopilar información sobre el XML así como los estándares de conversión

XSLT, XPath y DOM

- Recopilar información sobre los XML Query Languages haciendo especial

incidencia en el lenguaje de consultas XQuery

- Analizar como un Sistema Gestor de Bases de Datos Relacional como es Oracle

permite trabajar con datos XML

- Analizar como un Sistema de Bases de Datos Nativo como Tamino permite

trabajar con datos XML

1.2 Resultados esperados

Una vez finalizado el proyecto se pretende:

a) Obtener un estudio detallado del lenguaje de marcas XML así como del lenguaje

de consultas XQuery

b) Obtener un estudio comparativo sobre el tratamiento que Oracle 9i y Tamino

hacen respectivamente del uso de XML como fuente de datos, haciendo especial

incidencia en la arquitectura de cada una, características principales y ventajas

que ofrecen respecto a la otra

c) Analizar mediante un caso práctico de creación, acceso y manipulación de datos

XML las prestaciones que tanto Oracle 9i como Tamino ofrecen

(14)

1.3 Riesgos esperados

Actualmente el principal riesgo que se observa en este proyecto es sobretodo la escasa información que hay sobre el lenguaje de marcas XML y las bases de datos y por su lado la desmesurada información que hay para XML y la web.

Existe muchísima información sobre XML y la web (entorno tradicional en que el XML se ha desarrollado más contundentemente) y muchos aspectos que se tratan en esta documentación no se discernir si son adecuados para un proyecto como este en que solamente interesan los aspectos del XML relacionados con las bases de datos

Otro riesgo que observamos es que para el estudio de las bases de datos se ha optado por Oracle 9i como base de datos relacional y Tamino como base de datos nativa; es por todos conocida la gran complejidad y múltiples funcionalidades que Oracle ofrece en sus productos; por lo que el estudio sobre Oracle y XML no será trivial; pero además, hoy por hoy, desconozco totalmente la base de datos Tamino, con lo que el grado de trabajo y esfuerzo se verá incrementado.

2 Alcance de la propuesta

La presente propuesta cubre los siguientes contenidos: 1. Recopilación de información y estudio del XML

2. Recopilación de información y estudio del lenguaje de consultas XQuery 3. Estudio del tratamiento que las bases de datos hacen del XML

a. Tratamiento de XML sobre Oracle 9i b. Tratamiento de XML sobre Tamino

4. Realización de unos casos prácticos a modo de ejemplo sobre las bases de datos analizadas

2.1 Recopilación de información y estudio del XML

El primer desarrollo del proyecto consistirá en la recopilación de información sobre el lenguaje de marcas XML para el posterior estudio.

Se pretenden tratar los siguientes aspectos del XML: 1. Origen.

a. Intercambio de información en la web b. El XML y los SGBD

2. Objetivos

3. Sintaxis XML. XML bien formado 4. Las hojas de estilo en cascada (CSS)

5. Estándares de transformación para XML: XSLT y XPath 6. DTD

(15)

2.2 Recopilación de información y estudio del lenguaje de

consultas XQuery

Se pretende a través de la recopilación de información del World Wide Web Consortium (www.w3c.org) obtener un completo estudio sobre la sintaxis de este lenguaje de consultas. También se pretende comentar cual ha sido la evolución de los XML query languages hasta el estándar Xquery 1.0 del W3C.

El desarrollo de este apartado incluiría: 1. Origen y objetivos

2. Evolución histórica

3. Comparativa entre los principales XQuery Languages a. Lorel

b. XML-QL c. XQL d. XQuery

4. Sintaxis del XQuery 1.0

a. Elementos básicos de lenguaje b. Expresiones

c. Módulos y Prolog

2.3 Estudio de las bases de datos que soportan XML

Una vez se disponga de la información necesaria sobre XML y el lenguaje de consultas XQuery se pretende analizar el funcionamiento de las bases de datos que soportan XML. Para este estudio comparativo se ha elegido una base de datos relacional y una base de datos nativa, siendo las escogidas Oracle 9i y Tamino.

Se pretende analizar la arquitectura de estas bases de datos, características y realizar un exhaustivo estudio comparativo de las ventajas y desventajas que ofrecen una respecto a la otra.

2.4 Desarrollo de un caso práctico XML Oracle vs. Tamino

Por último, el proyecto finalizará con la realización de un caso práctico de transformación de datos entre documentos XML tanto en Oracle como en Tamino ofreciendo una exhaustiva información sobre la realización del caso ejemplo

3 Organización del proyecto

3.1 Descripción de actividades

3.1.1 Arranque del proyecto

El inicio del proyecto se llevará a cabo con la entrega del presente documento, aunque es importante destacar que el proyecto en sí comenzó durante el mes de julio, con la asignación del proyecto; durante ese mes se hizo mucho trabajo de recopilación de datos e información

(16)

3.1.2 Estudio del lenguaje XML

A partir de la información recopilada se realizará el estudio sobre el lenguaje de marcas XML haciendo especial incidencia en los aspectos relacionados con las bases de datos.

El principal problema de esta actividad va ser decidir que información, de la gran cantidad obtenida, es adecuada para su inclusión en el proyecto

Duración esperada: 3 semanas

3.1.3 Estudio del lenguaje de consultas XQuery

Al igual que en la tarea anterior, se pretende realizar el estudio sobre los XML query languages, haciendo especial incidencia en la evolución de estos. Finalizaremos el estudio mediante la realización de un detallado estudio sobre el lenguaje XQuery 1.0 del World Wide Web Consortium.

Duración esperada: 2 semanas

3.1.4 Estudio del funcionamiento de Oracle 9i con XML

En esta tarea se pretende a través de la lectura de la documentación de Oracle 9i y la realización de pequeñas pruebas-ejemplo comprender y documentar el funcionamiento que Oracle tiene respecto a XML

Duración esperada: 2 semanas

3.1.5 Estudio del funcionamiento de Tamino con XML

En esta tarea se pretende a través de la lectura de la documentación de Tamino y la realización de pequeñas pruebas-ejemplo comprender y documentar el funcionamiento que esta base de datos nativa tiene respecto a XML

Duración esperada: 2 semanas

3.1.6 Realización de un caso práctico sobre XML en Oracle vs.

Tamino

Por último se pretende realizar y documentar a través de un estudio comparativo la realización de un caso práctico en Oracle y Tamino con el fin de observar las diferencias que estas dos bases de datos ofrecen respecto al uso de XML

(17)

3.2 Calendario de Trabajo

3.3 Hitos Principales

Tal y como se observa en el calendario de trabajo anterior el proyecto se iniciará “oficialmente” el próximo 8 de Octubre de 2003 y finalizará el próximo 23 de Diciembre de 2003

Se han establecido los siguientes hitos en función de las actividades realizadas y concluidas

Hito 1: inicio del proyecto

Oficialmente el proyecto se iniciará con la entrega de este documento y debido a

problemas profesionales comenzará el próximo día 8 de Octubre en lugar del 1 de

Octubre como se indicó en un principio, de todas maneras destaco que mucha de las

tareas relacionadas con la búsqueda de información sobre XML y XQuery ya fueron

realizadas anteriormente

Hito 2: finalización del módulo sobre el lenguaje XML

Se incluye en esta hito las tareas de recopilación de información sobre XML así como

su selección para la inclusión en la memoria del proyecto

Hito 3: finalización del módulo sobre el X Query Languages

Al igual que en las tareas anteriores se incluye la recopilación de información sobre los

diferentes lenguajes de consultas sobre XML y su evolución así como la recopilación de

la sintaxis de este lenguaje (extraída del WWW Consortium)

(18)

Hito 4: Finalización del estudio sobre el funcionamiento de Oracle y Tamino

Hito que contendrá las tareas relacionadas con el tratamiento que tanto Oracle 9i como

Tamino hacen sobre datos XML: recopilación de información, lectura de

documentación, pruebas,…

Hito 5: Estudio comparativo a partir de un caso práctico del tratamiento de XML

que se hace en Oracle 9i y Tamino

Se presenta a continuación una posible temporalización de los diferentes hitos.

Fecha finalización

Hito 1

8 de Octubre

Hito 2

28 de octubre

Hito 3

21 de octubre

Hito 4

25 de noviembre

Hito 5

23 de diciembre

(19)
(20)

1 Origen

El origen de XML como estándar de intercambio de información se debe principalmente al hecho de una continua búsqueda de un estándar para el intercambio de información que no estuviese sujeto a un modelo o fabricante de software y que pudiese contener información adicional sobre la información del documento, sobretodo en Internet.

A partir de la fuerte apuesta que compañías como Microsoft, IBM y Netscape entre otras han hecho en los últimos tiempos por este estándar y debido a la gran proliferación de aplicaciones de la red vinculadas a accesos de Bases de Datos, es obvio destacar la importancia que el XML ha adquirido, y seguramente seguirá adquiriendo, como fuente de datos para las bases de datos. XML se utiliza para mejorar la comunicación de los datos y las bases de datos se centran en el almacenamiento y en la recuperación de los datos, esto hace que estas dos tecnologías se complementen entre si.

1.1 Intercambio de información el la red

Un archivo binario es el principal mecanismo de intercambio de datos. Cuando hablamos de un archivo binario, se entiende que es un archivo de datos en el que se han incluido ciertos códigos binarios que dan información sobre la información que contiene el archivo, los podemos considerar, en definitiva, metadatos. Por ejemplo en un archivo generado por un procesador de texto, los metadatos darán información sobre el formato del texto, caracteres especiales insertados, opciones de párrafos,…

Figura 1.1. Problemas de intercambio de información mediante archivos binarios

La principal ventaja del uso de archivos binarios es que es totalmente idóneo para los ordenadores ya que pueden interpretar estos archivos a gran velocidad y con gran eficiencia al tener que trabajar sobre códigos binarios

El principal problema que plantea el uso de archivos binarios es, pues, que para su decodificación y posterior manipulación es necesario disponer de la misma aplicación que generó el archivo binario ya que los metadatos son diferentes en función de la aplicación que generó el archivo; así, por ejemplo, si disponemos de un documento generado por un determinado procesador de texto y almacenado en formato binario, necesitaremos para su posterior lectura y/u uso el mismo procesador que lo generó.

(21)

Los archivos de texto son también una buena elección como codificación para compartir información, en este tipo de archivos la secuencia de bits está agrupada siguiendo un estándar lo que lleva a que los archivos de texto puedan ser compartidos por multitud de aplicaciones, desde un simple editor hasta navegadores.

Figura 1.2. Elección de documentos texto para intercambio de información

La principal desventaja de este tipo de archivos es la enorme dificultad que hay de añadirle metadatos, o sea, información sobre la información que contiene el archivo, solo tendremos información sin ninguna orden adicional sobre formato y estilo.

Del intento de fusionar las ventajas que tienen estos dos tipos de archivos para su posterior intercambio de información nació SGML (Standard Generalized Markup Language), el primer gran intento de encontrar un lenguaje que fuese universalmente intercambiable entre diferentes aplicaciones informáticas. Su objetivo principal era combinar un formato de datos universal (archivos texto) con la posibilidad de almacenar información adicional sobre la presentación y formato.

A partir del SGML y debido a la excesiva complejidad de este lenguaje, y a pesar de los primeros esfuerzos por parte de muchas compañías de adoptarlo como estándar, poco a poco se fue dejando de utilizar.

Actualmente la aplicación mas difundida del SGML que encontramos es el HTML, es el lenguaje de marcas por definición, mucho más fácil y sencillo que SGML y universalmente reconocido en la web por todo tipo de navegadores o editores de páginas web, incluso actualmente tenemos procesadores de texto como MS Word y WordPerfect que permiten guardar los archivos con formato HTML.

(22)

Figura 1.3 b. Uso de HTML como estándar de recepción de información

Las principales desventajas que encontramos en el HTML son dos:

• HTML no permite generar páginas dinámicas, solamente permite la creación de páginas estáticas, esto es, páginas que muestren información con un determinado formato. Mediante scripts, cgi’s, javascripts,… se ha intentado solucionar esta limitación, pero lo único que se ha conseguido es desvirtuar el lenguaje HTML como lenguaje mezclando en el mismo archivo dos lenguajes diferentes

• La segunda desventaja está muy relacionada con el hecho de añadir a HTML mecanismos para dotarlo de dinamismo, y consiste en que al añadir este tipo de mecanismos a HTML muchas veces se pierda la portabilidad que este lenguaje tiene con las diversas plataformas, así es posible que una página a la que le añadamos código asp (active server pages) sigua funcionando en plataformas Windows pero no funcione en plataformas Unix

Es pues HTML un lenguaje únicamente de acceso y presentación de la información, HTML no puede representar el estándar para que el software pueda buscar, desplazar, presentar y manipular los datos; HTML no aporta ninguna funcionalidad referente a la administración de los datos, es por este motivo que aparece XML como subconjunto del estándar SGML; en definitiva, XML es el formato y el modelo para intercambiar información entre componentes, aplicaciones y empresas a través de Internet.

XML es un estándar abierto a Internet (W3C) que nos proporciona un formato para describir datos estructurados, facilitando realizar declaraciones más precisas de contenido y permitiendo obtener resultados de búsquedas más significativas.

1.2 El XML y las Bases de datos

El número de bases de datos, tanto relacionales como nativas que aceptan archivos XML como fuentes de datos cada día crece a más velocidad.

Tenemos así que los principales sistemas gestores de bases de datos relacionales representados por las principales compañías de desarrollo de bases de datos como Oracle 8i y 9i, DB2, Informix o Microsoft SQL Server 2000 aceptan ya archivos XML como fuentes de datos. Lo mismo ocurre con las bases de datos nativas, bases de datos que almacenan los datos XML de forma “nativa”, generalmente como texto indexado, cada vez son más los productos que encontramos, podemos destacar 4Suite, DbXML, EXcelon, Lore o Tamino entre otros.

La elección de una base de datos relacional o una base de datos nativa vendrá determinada por el tipo de archivo con el que estemos trabajando; tenemos dos tipos de documentos XML: "basados en datos" y "basados en documentos".

(23)

Los documentos XML "basados en datos" son en los que XML es usado como un transporte de datos. Estos son por ejemplo órdenes de compra, registros de pacientes y datos científicos. Para almacenar y recuperar datos de un documento de este tipo necesitaremos una base de datos relacional.

Los documentos XML "basados en documentos" son aquellos en los que XML es usado para representar documentos, como un manual de usuario, páginas estáticas, folletos de marketing. Este último tipo de documento se caracteriza por su estructura irregular. Para el almacenamiento y recuperación de estos datos necesitaremos una base de datos de XML o nativa.

Ya se ha comentado anteriormente que XML es un estándar idóneo para el intercambio y transmisión de información y es por este motivo que conviene descubrir la relación del XML con las bases de datos.

Actualmente la mayoría de las aplicaciones se estructuran por capas, siendo la estructura más normal la que se muestra a continuación

Figura 1.4. Arquitectura de las aplicaciones actuales

Estas capas no reflejan exactamente la distribución de la aplicación, los componentes de la aplicación pueden encontrarse en distintas máquinas o incluso en la misma.

Para aplicaciones más complejas el esquema anterior se refina como se muestra a partir de la división de las capas en sub-capas

(24)

Este enfoque en múltiples capas tiene muchas ventajas • Se reduce la complejidad para los programadores • Se facilita el proceso de cambios

• Las aplicaciones son más fácilmente escalables • Reutilización de los componentes

• Mayor seguridad

En esta tipología de aplicaciones es fácil entender la necesidad de utilizar XML juntamente con las bases de datos; supongamos que la capa de presentación de nuestra aplicación está utilizando XML, lo lógico entonces, es que los componentes de la capa de negocio también estén utilizando XML para comunicarse entre los componentes de esta capa y para comunicarse con la capa de presentación. En este contexto, parece lógico plantearnos porque la capa de objetos, en lugar de trabajar con recordsets (objeto que encapsula los resultados obtenidos por una consulta SQL) porqué no hacer que esta capa devuelva datos XML. De la misma manera parece más sencillo que si hay que manipular y/o actualizar la base de datos, la capa de negocio haga una petición a la capa de objetos en XML y esta capa analice el código XML de la petición y realice las operaciones sobre la base de datos.

2 Objetivos

XML fue desarrollado por un grupo de trabajo bajo los auspicios del consorcio World Wide Web (W3C) a partir de 1996. El World Wide Web Consortium fue constituido en 1994 con el objetivo de desarrollar protocolos comunes para la evolución de Internet.

Se trata de un consorcio de la industria internacional con sedes conjuntas en el Instituto Tecnológico de Massachussets, de Estados Unidos, el Instituto Nacional de Investigación en Informática y Automática europeo y la Keio University Shonan Fujisawa Campus de Japón. El W3C tiene como misión la publicación para uso público de protocolos o estándares globales de uso libre.

Al comenzar el proyecto, los objetivos planteados por el grupo de desarrollo del XML se resumieron en estos diez:

1. XML debe ser directamente utilizable sobre Internet. 2. XML debe soportar una amplia variedad de aplicaciones. 3. XML debe ser compatible con SGML.

4. Debe ser fácil la escritura de programas que procesen documentos XML.

5. El número de características opcionales en XML debe ser absolutamente mínimo, idealmente cero.

6. Los documentos XML deben ser legibles por los usuarios de este lenguaje y razonablemente claros.

7. El diseño de XML debe ser formal, conciso y preparado rápidamente. 8. XML debería ser simple pero perfectamente formalizado.

9. Los documentos XML deben ser fáciles de crear.

(25)

dado que con él podemos definir nuestro propio lenguaje de presentación y, a diferencia del HTML, que se centra en la representación de la información, XML se centra en la información en si misma.

La particularidad más importante del XML es que no posee etiquetas prefijadas con anterioridad, ya que es el propio diseñador el que las crea a su antojo, dependiendo del contenido del documento. De esta forma, los documentos XML con información sobre libros deberían tener etiquetas como <AUTOR>, <EDITORIAL>, <Nº_DE_PÁGINAS>, <PRECIO>, etc., mientras que los documentos XML relacionados con educación incluyen etiquetas del tipo de <ASIGNATURA>, <ALUMNO>, <CURSO>, <NOTA>, etc.

Por ejemplo en la siguiente tabla se muestra la información incluida por un código típico HTML y su versión equivalente en XML. HTML XML <TABLE> <TR> <TD>Título</TD> <TD>Autor</TD> <TD>Precio</TD> </TR> <TR> <TD>AutoSketch</TD> <TD>Ramón Montero</TD> <TD>33</TD> </TR> <TR> <TD>Windows 98</TD> <TD>Jaime Perez</TD> <TD>3.250</TD> </TR> <TR> <TD>Web Graphics</TD> <TD>Ron Wodaski</TD> <TD>8.975</TD> </TR> </TABLE> <LIBROS> <LIBRO> <TITULO>AutoSketch</TITULO> <AUTOR>Ramón Montero</AUTOR> <PRECIO>33</PRECIO> </LIBRO> <LIBRO> <TITULO>Windows 98</TITULO> <AUTOR>Jaime Perez</AUTOR> <PRECIO>3.250</PRECIO> </LIBRO> <LIBRO> <TITULO>Web Graphics</TITULO> <AUTOR>Ron Wodaski</AUTOR> <PRECIO>8.975</PRECIO> </LIBRO> </LIBROS>

Figura 1.6. Equivalencia entre documento HTML y documento XML

Se puede apreciar en este ejemplo, que es mucho más fácil de entender la representación en XML. Mientras que en el documento HTML la información adquiere significado semántico dependiendo donde se encuentre ubicado en la tabla a la hora de presentar la información al usuario, en el documento XML la información tiene significado semántico propio debido a las marcas que dan información adicional a los propios datos del documento. Es el creador del documento XML el que decide qué tipos de datos va ha utilizar y qué etiquetas son las más adecuadas para ese documento en concreto

(26)

3 Sintaxis XML. XML bien formado

Hasta ahora se ha analizado por que XML es una buena alternativa cuando se desean comunicar datos. En este apartado veremos la sintaxis para la correcta creación de documentos XML. Un documento XML diremos que está bien formado si cumple las reglas gramaticales definidas en la especificación XML 1.0 del W3C.

3.1 Elementos

Los elementos son las unidades básicas que permiten construir documentos. Cada elementos representa un componente lógico del documento.

Para describir los elementos se utilizan etiquetas. Una etiqueta consta del nombre del elemento y opcionalmente de una lista de atributos que describen propiedades del elemento.

El principio de un elemento se marca de la siguiente manera: <nombre_tipo_elemento [atributos]>

El final de un elemento se marca de la siguiente manera: </nombre_tipo_elemento>

Así:

<first> es una etiqueta de inicio </first> es una etiqueta de fin <first> John </first> es un elemento o con el caso de elementos con atributos:

<mensaje lenguaje”en”> Good morning, Vietnam </mensaje>

En el caso de los elementos vacíos, sin contenido, se marcan de la siguiente manera: <nombre_tipo_elemento/>

El texto que se incluye entre las etiquetas de inicio y etiqueta de fin se denomina contenido de elemento. El contenido entre las etiquetas casi siempre serán simplemente datos, en este caso se le denomina PCDATA

Existen algunos caracteres reservados que no se pueden incluir en nuestro PCDATA porque son caracteres que se usan en la sintaxis XML, por ejemplo los caracteres ‘<’, ‘>’ o ‘&’

Así el siguiente PCDATA daría un error: <!-- Esto no es un XML bien formado --> <comparacion>6 es < 7 & 7 > 6</comparacion>

(27)

Las codificaciones para algunos de los caracteres reservados serían: Carácter Reservado Codificación

< &lt; & &amp; > &gt; “ &quot;

Las reglas para los elementos que se deben conocer para que se consideren bien formados son: • Cada etiqueta de inicio debe tener su etiqueta de fin correspondiente

• Las etiquetas no se deben superponer

• Los documentos XML solo deben tener un elemento raíz

• Los nombres de los elementos deben cumplir las convenciones de nomenclatura de XML

• XML diferencia entre mayúsculas y minúsculas • XML mantendrá los espacios en blanco en el texto

3.2 Atributos

Los atributos describen las propiedades de los elementos, representan información adicional, son simples pares nombre/valor separados por un signo = que se asocian a un elemento. El valor del atributo ha de ir entre comillas simples o dobles.

Los atributos se adjuntan en la etiqueta de inicio, tal como se muestra a continuación: <name apodo=’Shiny John’>

<first>John</first>

<middle>Fitzgerald Johansen</middle> <last>Doe</last>

</name>

3.3 Comentarios

Los comentarios nos ofrecen el modo de insertar texto dentro del documento XML que en realidad no forma parte de documento pero por algún motivo es adecuado para facilitar la legibilidad del documento.

Los comentarios empiezan con la cadena <!-- y finalizan con la cadena --> . Veamos un ejemplo:

<name apodo=’Shiny John’> <!-- nombre de John--> <first>John</first>

<!-- segundo nombre de John-->

<middle>Fitzgerald Johansen</middle> <!-- apellido de John-->

<last>Doe</last> </name>

(28)

3.4 Elementos vacíos

Algunas veces nos encontraremos con elementos XML que no tienen datos. Supongamos el ejemplo anterior, en que John Doe no tiene segundo nombre, tendríamos algo así:

<name apodo=’Shiny John’> <first>John</first> <middle> </middle> <last>Doe</last> </name>

En este caso tenemos la opción de rescribir la etiqueta <middle></middle> por <middle/>

3.5 Declaración XML

A menudo necesitaremos identificar un documento como perteneciente a cierto tipo, XML suministra la declaración XML para etiquetar a los documentos como XML, además de dar a los analizadores otras informaciones adicionales.

Una declaración típica sería:

<?xml version=’1.0’ encoding=’UTF-16’ standalone=’yes’ ?>

En la declaración XML aparecen ciertos detalles que se deben tener en cuenta:

• La declaración XML empieza con los caracteres <?xml, y finaliza con los caracteres ?> • Si se incluye la declaración, esta obligatoriamente debe contener la versión, pero los

atributos encoding y standalone son opcionales

• Los atributos version, enconding y standalone deben aparecer en este orden

• Actualmente, la versión debería ser la 1.0. Si se utiliza otra versión los analizadores escritos para la especificación 1.0 rechazarán el documento

• La declaración XML debe estar al principio del archivo.

3.6 Instrucciones de procesamiento

Algunas veces se precisará incluir instrucciones para una aplicación específica dentro del propio documento para indicar que se realice algún proceso, aunque esto no suele ser habitual. XML suministra un mecanismo para poder realizar esto, denominado Instrucciones de procesamiento o Proccessing Instructions que nos permitirán incluir instrucciones dentro del código XML, pero que en realidad no forman parte del documento sino que se pasan directamente a la aplicación. <?xml version=’1.0’ encoding=’UTF-16’ standalone=’yes’ ?>

<name apodo=’Shiny John’> <first>John</first>

<middle>Fitzgerald Johansen</middle> <?nombreaplicacion SELECT * FROM blah?> <last>Doe</last>

</name>

Normalmente las instrucciones de procesamiento siguen la siguiente sintaxis, empiezan con el carácter <? seguido del nombre de la aplicación que recibirá la instrucción y a continuación la instrucción a ejecutar seguida de los parámetros o atributos de la instrucción, si los tuviera.

(29)

3.7 El árbol XML

Un documento XML también se puede representar como un árbol además de poderlo representar como una lista secuencial de información.

De hecho, la regla que dictamina que en un documento XML solo puede haber un elemento que englobe a todos los otros nos permite que el documento XML pueda ser representado como un árbol con una única raíz.

Los analizadores sintácticos XML, y en general todas las herramientas informáticas que tratan documentos XML, construyen una representación del documento en forma de árbol.

El árbol XML se construye de la siguiente forma:

• Los elementos del documento XML se corresponden con los nodos del árbol

• El nodo que representa un elemento A es el nodo padre de otro elemento B si B esta contenido dentro de A

• Los nodos hermanos, situados en el mismo nivel del árbol, están ordenados según el orden de aparición en el documento

• Los datos de carácter (PCDATA) del documento XML se consideran nodos del árbol etiquetados con el nombre Text

• Los atributos se consideran información asociada a cada nodo del árbol, y por lo tanto no aparecerán en la representación en forma de árbol.

Veamos un ejemplo: <name apodo=’Shiny John’> <first>John</first>

<middle>Fitzgerald Johansen</middle> <?nombreaplicacion SELECT * FROM blah?> <last>Doe</last>

</name>

Su representación en forma de árbol sería:

name

first

middle

last

text

text

text

Figura 1.7. Representación en árbol de un documento XML

4 Las hojas de estilo en cascada (CSS)

Las hojas de estilo sirven para mejorar la expresividad de los datos XML, y las hojas de estilo en cascada (Cascading Style Sheet, CSS), se utilizan para establecer las características visuales de la información, como por ejemplo, tamaño de la fuente y tipo de fuente, etc.

La primera cuestión que nos surge cuando se empieza a trabajar con XML es sobre como el navegador sabe como deben visualizarse las etiquetas arbitrarias que aparecen en un documento XML. Los navegadores no reconocen etiquetas como <name>, <first> o <middle>, así pues,

(30)

este fue el primer gran conflicto que tuvieron los navegadores cuando se empezó a desarrollar XML.

4.1 Concepto

XML aporta la separación de la recuperación de la información del proceso de la presentación de la misma, este modelo conocido comúnmente como paradigma Contenido/Presentación significa que se separan los datos de la forma en que se visualizarán.

En HTML disponemos de herramientas para la creación de estilos (etiqueta <STYLE>) y otros elementos para la selección de atributos para la representación de la información (etiqueta <FONT>, etiquetas de cabecera del tipo <HX>,…

Veamos un ejemplo para ver como se crean los estilos en HTML: <H1 style= “voice-family:PDomingo;volumen:x-loud;”>

Bienvenido a mi web site </H1>

<p style= “voice-family:MCallas;volumen:x-medium;”>

Este sería un website en que el contenido nos sería leído utilizando voces diferentes </p>

Como se puede observar el atributo style aporta un estilo determinado al elemento que queramos aplicar.

Existe, de todas maneras, otra opción cuando trabajamos con XML, el elemento <STYLE> nos permite asociar un estilo determinado a un elemento específico

<STYLE>

H1 { voice-family:PDomingo;volumen:x-loud;}

p { voice-family:MCallas;volumen:x-medium;} </STYLE>

<H1>Esto se lee con la voz de Placido Domingo</H1> <P> Esto se lee con la voz de Maria Callas</P> <P> y esto también </P>

<H3> Esto en cambio no se leerá ya que no existe una definición de una regla </H3>

Tenemos que la declaración CSS para cada tipo se denomina regla, y la colección de todas las reglas de la etiqueta <STYLE> se denomina hoja de estilo.

En nuestro ejemplo anterior, tenemos que { voice-family:PDomingo;volumen:x-loud;} y { voice-family:MCallas;volumen:x-medium;} serán las reglas y H1 y P son los selectores de las reglas

4.2 Hojas de estilo en cascada y XML

Las hojas de estilo en cascada implica que cada elemento hijo contiene todos los elementos que están en un nivel superior al que está el propio elemento. Podemos entender que cuando se aplica un estilo a un elemento, este estilo afecta a todos los elementos que estén dentro de este elemento, a todos los elementos hijos de ese elemento al que se le ha aplicado el estilo.

(31)

La diferencia entre CSS en HTML y CSS en XML es tan pequeña que los mismos conceptos aplicados en hojas de estilo en HTML nos sirven para XML.

La primera diferencia que encontramos es que las etiquetas propias de HTML para asignar estilos y clases en XML no existen; para asignar estilos en XML debemos utilizar la instrucción de procesamiento <?xml-stylesheet ?>

La sintaxis completa de la instrucción xml-stylesheet sería:

<?xml-stylesheet type=nombretipo href=urlhojaestilo?> En realidad esta sintaxis se parece mucho al elemento LINK de HTML, en este caso type hace referencia a cualquier lenguaje de hoja de estilo que soporte el navegador, en general encontraremos “text/css” o “text/xsl”. Href hace referencia a la ubicación externa o referencia de la hoja de estilo CSS que se desea utilizar.

Veamos un ejemplo:

<?xml-stylesheet type=”text/css” href=“nota1.css”?> <!-- Nota1.xml -->

<documento>

<body>

advertencia>Esto es una advertencia</advertencia> En caso contrario

consejo>Esto es un consejo</consejo> ,mientras que < recurso >esto es un recurso</ recurso > </body>

</documento>

Como vemos, este documento nota1.xml hace referencia hace referencia a una hoja de estilo CSS llamada nota1.css, el cual podría contener:

consejo margin-left:.5in;width:250px;border:solid 3px black;position:relative; background-color:yellow } recurso margin-left:.5in;width:250px;border:solid 3px black;position:relative; background-color:green } advertencia margin-left:.5in;width:250px;border:solid 3px black;position:relative; background-color:red}

Como vemos, esta hoja de estilo CSS para XML es casi idéntica a las hojas de estilo CSS para HTML y sencillamente lo que se hace es asignar unos determinados parámetros de visualización a cada una de las etiquetas del documento XML.

Hasta ahora hemos visto como podíamos utilizar hojas de estilo externas al documento XML mediante el atributo href de la instrucción xml-stylesheet. Este tipo de hojas de estilo son muy prácticas para mantener el mismo estilo en varios documentos XML; pero habrá algunas veces en que resulta más útil trabajar con estilos dentro de los documentos XML.

Ya se ha comentado que la etiqueta <STYLE> que utilizaríamos en HTML en XML no tiene ningún significado específico, por lo tanto para incluir reglas de hojas de estilo en un elemento dentro del mismo documento deberemos aplicar la siguiente solución: mediante un identificador

(32)

determinado incluiremos las reglas de hoja de estilo a un elemento y referenciaremos a la hoja de estilo mediante el identificador de la instrucción xml-stylesheet

Veamos un ejemplo:

<?xml-stylesheet type=”text/css” href = “#miEstilo”?> <documento> <st id=”miEstilo”> title {font-size:24pt;display:block;} p {font-size:11pt; display:block;} p:first-letter {float:left;font-size:36pt;} st {display:none;} b {font-weight:bold;} </st>

<title>Hojas de estilo CSS dentro de los documentos XML</title>

<p>Se utiliza el signo # para indicar que se hace referencia a una <b>hoja de estilo</b> dentro del documento</p>

</documento>

En este caso la hoja de estilo está contenida en el nodo <st> pero está referenciada mediante su identificador miEstilo. El modo de funcionamiento del símbolo # en la declaración xml-stylesheet es similar a los enlaces o hipervínculos relativos a una página en HTML.

5 Definición de tipo de documento. Los DTD’s

Lo primero que debemos saber es que hay dos tipos de documentos XML: válidos y bien formados. Éste es uno de los aspectos más importantes de este lenguaje, así que hace falta entender bien la diferencia:

• Bien formados: son todos los que cumplen las especificaciones del lenguaje respecto a las reglas sintácticas que después se van a explicar, sin estar sujetos a unos elementos fijados en un DTD. De hecho los documentos XML deben tener una estructura jerárquica muy estricta, de la que se hablará más tarde, 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 dictamine

El DTD (definición del tipo de documento, Document Type Definition) proporciona la gramática para una clase de documentos XML. Esta gramática contiene la definición del conjunto de etiquetas que puede contener esa clase de documentos XML, los nombres que pueden utilizarse en los elementos, dónde pueden aparecer y cómo se interrelacionan entre ellos. Se puede decir que un DTD es una definición exacta de la gramática de un documento. Estas normas o gramática se expresan mediante una notación llamada declaración de marcaje La declaración de marcaje es una notación descrita en la especificación XML (de W3C) siendo una manera de expresar un conjunto de reglas gramaticales que permiten indicar:

• Los elementos y atributos válidos dentro de un documento XML • Los elementos que se pueden utilizar dentro de otros elementos • Los elementos y los atributos opcionales

Los documentos XML enviados con un DTD se reconocen como "XML válido". En este caso, un intérprete de XML podría comparar los datos entrantes con las normas definidas en el DTD para comprobar que los datos se han estructurado correctamente. Los datos enviados sin un

(33)

XML, que pueden ser internas (cuando van incluidas junto al código XML) o externas (si se encuentran en un documento propio).

Un ejemplo de un DTD que defina la estructura de un documento XML relacionado con libros, podría ser un documento conteniendo el siguiente código:

<!ELEMENT LIBROS (LIBRO)+>

<!ELEMENT LIBRO (TITULO, AUTOR, PRECIO)> <!ELEMENT TITULO (#PCDATA)>

<!ELEMENT AUTOR (#PCDATA)> <!ELEMENT PRECIO (#PCDATA)>

En el DTD del ejemplo se definen los elementos (!ELEMENT) que integran el documento XML. En la primera línea se indica que el elemento principal es LIBROS, del que dependen uno o más (+) elementos LIBRO. La segunda línea sirve para especificar que el elemento LIBRO contiene tres elementos (TITULO, AUTOR, PRECIO) que se deben marcar en dicho orden. Las restantes líneas aclaran que los elementos TITULO, AUTOR y PRECIO contienen valores de cadenas de texto, como ya habíamos comentado PCDATA’s

Como síntesis de lo descrito podemos decir:

• Crear un DTD (Definición de tipo de Documento), es como crear nuestro propio lenguaje de validación para una aplicación específica

• DTD es también un archivo de texto • DTD contiene

o Tipos de elementos o Atributos

o Entidades

o Restricciones de combinación y valores que contendrá el XML • Solo lo que se contiene es válido

• Un DTD puede residir en un archivo externo (quizá compartido por varios documentos XML), o bien puede estar contenido en el propio documento XML

• Los documentos que se ajustan a su DTD se denominan Válidos.

• Una vez bajado un documento XML, el procesador sintáctico (Aplicación o navegador), puede aplicar un DTD para conocer si cumple con las normas establecidas

• No confundir ‘bien formado’ con ‘válido’

o Bien formado es que respeta la sintaxis de XML o Válido es que respeta las reglas del DTD

Figura 1.8. Esquema de un documento XML válido

• Un documento XML puede ser válido y bien formado a la vez • El DTD es opcional

(34)

• No se puede decir que el documento es válido si no se utilizan DTD’s (pero tampoco que sea no válido)

• ¿Que ventajas tiene?

o Pueden ser publicados o compartidos por varias empresas para definir ‘sus estándares’, pudiéndose generar de esta forma, un estándar de validaciones o Un programa emite un XML, y otro lo consume, pero validando que cumpla

con el contrato establecido

o Muchas empresas están publicando estándares de validación, los cuales pueden ser reutilizados

• Si bien pueden residir en el mismo documento, es posible su enlace externo para su reutilización

<?xml version=“1.0”?>

<!DOCTYPE persona SYSTEM http://www.lapiedra.com/persona.dtd>

5.1 Sintaxis de los documentos DTD

5.1.1 Declaración de elementos

Para declarar elementos en un documento DTD utilizaremos la expresión: <!ELEMENT element-name category> donde category podrá tomar los valores EMPTY, #PCDATA o ANY.

<!ELEMENT element-name EMPTY> Permite declarar elementos que no tienen contenido Ejemplo DTD: <!ELEMENT br EMPTY>

Ejemplo XML: <br/>

<!ELEMENT element-name (#PCDATA)> Permite declarar elementos que tienen como contenido una cadena de caracteres

Ejemplo DTD: <!ELEMENT nombre (#PCDATA)>

Ejemplo XML: <nombre>Johann<nombre/>

<!ELEMENT element-name ANY> Permite declarar elementos que pueden tener como contenido cualquier otro elemento

Ejemplo DTD: <!ELEMENT libro ANY>

Ejemplo XML: <libro> … <titulo> … <autor> … <autor/> … <titulo/> …<libro/>

También podemos declarar elementos como:

<!ELEMENT element-name (element-content)>

Donde element-content especifica las etiquetas que puede contener el elemento element-name. Existe un conjunto de operadores que permiten indicar la forma en que puede aparecer cada elemento:

(35)

Algunos ejemplos serían:

<!ELEMENT LIBROS (LIBRO)+>

<!ELEMENT LIBRO (TITULO, AUTOR*, PRECIO)>

5.1.2 Declaración de atributos

Para declarar los atributos que aparecerán en los documentos XML se realiza mediante el comando ATTLIST y cuya sintaxis es:

<!ATTLIST element-name attribute-name attribute-type default-value> donde:

attibute-type indica el tipo de atributo que es. Podemos encontrar los siguientes valores: CDATA indica que el atributo es de tipo string (en1 | en2 | …) indica que el atributo es de tipo enumeración ID indica que el atributo es de tipo identificador IDREF indica que el atributo es de tipo referencia a

un identificador de otro elemento

default-value da indicaciones sobre el valor del atributo, si es fijo o no y el tipo de requerimientos que tiene. Podemos encontrar los siguientes valores:

Value indica el valor por defecto que tendrá el atributo

#REQUIRED indica que el atributo es obligatorio #IMPLIED indica que el atributo no es obligatorio #FIXED Value Indica un valor fijo para el atributo

Lista de Operadores , Indica una secuencia de elementos

Ej.: (nombre-elemento1, nombre-elemento2,nombre-elemento3) | Indica el operador OR

Ej.: (nombre-elemento1 | nombre-elemento2) * Indica la aparición de 0 a N elementos

Ej.: (nombre-elemento*)

+ Indica la aparición de 1 a N elementos Ej.: (nombre-elemento+)

? Indica la aparición de 0 o 1 elementos Ej.: (nombre-elemento?)

(36)

Veamos, ahora un ejemplo completo de DTD y un posible documento XML válido: <!ELEMENT Company (Delegation+)>

<!ATTLIST Company name CDATA #REQUIRED founded CDATA #REQUIRED income CDATA #REQUIRED >

<!ELEMENT Delegation (#PCDATA)> <!ATTLIST Delegation

name CDATA #REQUIRED

numberOfEmployees CDATA #REQUIRED >

y el posible documento XML asociado al DTD anterior, podría ser: <?xml version="1.0" encoding="UTF-8"?>

<Company name="ABC, S.A." founded="2001-01-01" income="10000">

<Delegation name="Central Madrid" numberOfEmployees="150">Texto asociado Madrid</Delegation>

<Delegation name="Sucursal Jaén" numberOfEmployees="270">Texto asociado Jaén</Delegation> </Company>

5.2 XML Schema

A pesar de todo lo visto anteriormente, los DTD’s tienen dos problemas importantes: • Se especifican en un lenguaje totalmente diferente de XML

• Tienen muy pocos recursos para expresar tipos de datos.

Para solucionar estos dos problemas se generó la especificación XML Schema, que es una notación para escribir los DTD’s alternativos a las declaraciones de marcaje y aporta básicamente tres ventajas:

• Es notación XML: esto hace que las herramientas que se utilizan para analizar los documentos XML puedan utilizarse para analizar los esquemas XML

• Soporta diferentes tipos de datos: los XML schema ofrecen múltiples tipos de datos ya definidos lo que permite una validación de documentos mucho mas eficaz

• Es extensible: además de los tipos de datos predefinidos permite nuevas definiciones de tipos de datos

Últimamente debido a las ventajas que se han comentado anteriormente y uniendo a los inconvenientes que presentan los DTD’s, se está imponiendo esta otra forma mucho más eficaz de definir la estructura de un documento XML.

Un esquema, en definitiva, es una especificación formal de las normas de un documento XML, que indica qué elementos se permiten en un documento y en qué combinaciones están permitidas. Los nuevos lenguajes de esquemas, definidos en las propuestas XML-Data (Datos de XML) y DCD (Descripción del contenido del documento) enviadas por el XML-Data Working Group al W3C, proporcionan las mismas funciones que un documento DTD. No obstante, puesto que estos lenguajes de esquema son extensibles, los desarrolladores pueden

(37)

La expresión de esquemas dentro de XML aumenta la potencia del formato XML, pues permite que el software examine determinados datos para comprender su estructura, sin necesitar ninguna descripción previa incorporada de la estructura de los datos. Con un esquema, un autor puede definir exactamente qué nombres de elementos se permiten en un documento y, dentro de cada elemento, qué sub-elementos, atributos y relaciones se admiten. El autor puede importar fragmentos de otros esquemas, así como ampliar tipos a través de la herencia. Todo ello permite establecer relaciones complejas entre los elementos sin perder la simplicidad de la estructura de árbol.

En resumen podemos decir:

• Al igual que los DTD’s, definen los elementos, el orden, los rangos, etc. • Los Schemas o esquemas son similares a los DTD’s, entonces...

• ¿Por qué debería utilizar un esquema? • Los esquemas utilizan sintaxis XML

• Tienen mejor y más manejo de los tipos de dato • Manejan más reglas

• Los tipos de datos son extensibles

• Es mas fácil plasmar un esquema en una tabla, que hacer lo mismo con un DTD

• Microsoft e IBM están trabajando en conjunto para ofrecerle un borrador de estándar a W3C

• Se pueden agregar nuevos elementos, y seguir siendo compatible con lo ‘anterior’ • A tener en cuenta...

o El procesador puede no soportar esquemas

o El esquema de Microsoft es parecido al esquema propuesto

o Las extensiones de esquema de Microsoft solamente están disponibles bajo Windows

Figura 1.9. Esquema de un documento XML bien formado

5.2.1 Namespaces

Los namespaces se desarrollaron como un método para poder diferenciar elementos de un documento XML con el mismo nombre pero que aparecen en distintos niveles. Los namespaces nos proporcionan la forma de agrupar los elementos en un contexto específico.

Supongamos el siguiente documento XML:

<?xml version=”1.0” encoding=”UTF-8”> <car> <color>blue</color> <interior> <upholstery>leather</ upholstery> <color>tan</color> </interior> </car>

(38)

Podemos observar que el documento anterior tiene dos marcas llamadas <color>. Un caso como este podría provocar confusión al analizador XML, la solución a este posible problema es definir nameespaces separados con el objetivo de distinguir los dos elementos dependiendo del contexto en que se han definido:

<veh:car xmlns:veh=http://mycarnamespace.com/cars/ xmlns:vehinterior=http://myvehicleinteriors.com/interiors/”> <veh:color>blue</veh:color> <vehinterior:interior> <vehinterior:upholstery>leather</vehinterior:upholstery> <vehinterior:color>tan</vehinterior:color> </vehinterior:interior> </veh:car>

Observemos que se han declarado dos namespaces diferentes asociados a los prefijos veh (correspondiente al vehículo) y vehinterior (correspondiente a la información del interior del vehículo) haciendo desaparecer la ambigüedad.

5.2.2 Tipos de datos nativos

Como en otros lenguajes, XML Schema tiene un conjunto de tipos de datos primitivos de los que es posible obtener otros tipos de datos más complejos.

Tipos de datos Descripción

string representa cadenas de caracteres en XML

boolean permite definir los elementos bolenaos true y false

decimal define el conjunto de valores del tipo i*10-n (siendo i y n enteros tal que n>=0)

float representa los números en coma flotante

double representa los números con doble precisión IEEE, tipo flotante de 64 bits

duration representa un longitud en el tiempo. El valor de la duración viene determinado por el año, mes, día, hora, minuto y segundo

dateTime el tipo dateTime representa un instante de tiempo específico

time Representa un instante de tiempo que ocurre cada día. Viene determinado por el espacio de tiempo en horas

date El tipo date representa un instante de tiempo que ocurre cada año. El valor de date es el espacio de tiempo en días

gYearMOnth Representa un mes gregoriano en un determinado año gregoriano dado

gYear Representa un año del calendario gregoriano

gMonthDay representa una fecha gregoriana que se repite del tipo un día del año (p.e. 1º de mayo)

gDay representa un día gregoriano que se repite del tipo día del mes (p.e. el día 5 del mes)

gMonth representa un mes gregoriano que se repite cada año (p.e. mayo) hexBinary representa datos representados en binarios

Referencias

Documento similar

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

[r]

[r]

[r]

Luis Miguel Utrera Navarrete ha presentado la relación de Bienes y Actividades siguientes para la legislatura de 2015-2019, según constan inscritos en el