• No se han encontrado resultados

Consulta de documentos XML a través de sentencias SQL

N/A
N/A
Protected

Academic year: 2020

Share "Consulta de documentos XML a través de sentencias SQL"

Copied!
183
0
0

Texto completo

(1)INSTITUTO TECNOLÓGICO Y DE ESTUDIOS SUPERIORES DE MONTERREY. CONSULTA DE DOCUMENTOS XML A TRAVÉS DE SENTENCIAS SQL. TESIS QUE PARA OPTAR EL GRADO DE MAESTRO EN CIENCIAS COMPUTACIONALES PRESENTA. ARNULFO GARCÍA MEJÍA. Asesor: Comité de tesis:. Dr. FRANCISCO JAVIER CARTUJANO ESCOBAR Dr. RAFAEL LOZANO Dr. MANUEL CALLEJAS. Atizapán de Zaragoza, Edo. Méx., Junio de 2004..

(2) RESUMEN. XML se está convirtiendo en el fonnato de datos de elección para una amplia variedad de soluciones de sistemas de información. Aplicaciones comunes que usan XML incluyen: • Transmisión de infonnación entre sistemas B2B. • Construcción de formatos de mensajes para integración de aplicaciones Internet con sistemas legados. • Almacenamiento y obtención de datos. • Varias actividades de manipulación de datos dentro de aplicaciones. Los beneficios que a menudo se asocian con la utilización de XML incluyen: • Independencia de la plataforma. • Bajo costo de entrada. • Habilidad de compartir datos de manera transparente. La mayoría de las aplicaciones tradicionales de negocio y de las aplicaciones basadas en Internet dependen de bases de datos. Existen diversos modelos de bases de datos, sin embargo, las más populares son las bases de datos relaciónales. Para mantener información en una base de datos, éstos deben ser almacenados y recuperados de una manera consistente, confiable y eficiente. El uso de la infraestructura existente de bases de datos relaciónales para la administración de demandas de datos XML parece ser lógico; sin embargo, nuevos productos nativos XML están siendo desarrollados para almacenar datos XML en forma nativa sin la necesidad de realizar conversiones a otras estructuras de bases de datos como la relacional. Debido al incremento en el uso de XML y a la gran aceptación que las bases de datos relacionales tienen hoy en día y por ende del conocimiento que los desarrolladores de base de datos tienen de SQL, es de gran utilidad tener un componente el cual nos permitiera conjuntar estas tecnologías. El presente trabajo de investigación plantea el desarrollo de un componente para realizar consultas a documentos XML por medio de sentencias SQL generando como resultado una vista XML..

(3) Contenido CAPITULO 1 INTRODUCCIÓN ....................................................................._.................................................... 8 1.1 ORGANIZACIÓN DEL DOCUMENTO ........................................................................... - .............................. 9 CAPITULO 2 ANTECEDENTES ......................................................................................................................... 11 2.1 SQL .................................................................................................................................................................. 11 2.1.1 Introducción ............................................................................................................................................. 11 2. 1.2 Componentes del SQL .............................................................................................................................. 11 2.1.2.1 Comandos ............................................................................................................................................................ 11 2.1.2.1.1 Comandos DLL ........................................................................................................................................... 11 2.1.2.1.2 Comandos DML .......................................................................................................................................... 12 2.1.2.2 Cláusulas .............................................................................................................................................................. 12 2.1.2.3 Operadores Lógicos ............................................................................................................................................. 12 2.1.2.4 Operadores de Comparación ................................................................................................................................ 12 2.1.2.5 Funciones de Agregado ........................................................................................................................................ 13. 2.1.3 Consultas de Selección ............................................................................................................................. 13 2.1.3 .1 Consultas básicas ................................................................................................................................................. 13 2.1.3.2 Ordenar los registros ............................................................................................................................................ 13 2.1.3.3 Consultas con Predicado ...................................................................................................................................... 14 2.1.3.4 Alias ..................................................................................................................................................................... 14. 2.1.4 Criterios de Selección ............................................................................................................................... 14 2.1.4.1 Operadores Lógicos ............................................................................................................................................. 14 2.1.4.2 lntervalos de Valores ........................................................................................................................................... 14 2.1.4.3 El Operador Like ................................................................................................................................................. 15 2.1.4.4 El Operador In .....................................................................................................................................................15 2.1.4.5 La cláusula WHERE ............................................................................................................................................ 15. 2. 1.5 Agrupamiento de Registros ...................................................................................................................... 15 2.1.5.1 GROUP BY ...................................................................................................................................................... 15 2.1.5.2 AVG .................................................................................................................................................................... 16 2.1.5.3 Count ........................................................................................................................................._.......................... 16 2.1.5.4 Max,Min .......................................................................................................................................................... 17 2.1.5.5 Sum ...................................................................................................................................................................17. 2.2 XML ................................................................................................................................................................ 17 2.2. 1 Jntroducción ............................................................................................................................................. 17 2.2.2 ?Structura de un documento XW. ............................................................................................................ 18 2.2.2. I Documentos XML bien formados ........................................................................................................................ 19 2.2.2.1.1 Estructura jerárquica de elementos .............................................................................................................. 19 2.2.2.1.2 Etiquetas vacías ........................................................................................................................................... 19 2.2.2.1.3 Un solo elemento raíz .................................................................................................................................. 19 2.2.2.1.4 Valores de atributos ..................................................................................................................................... 19 2.2.2.1.5 Tipos de letras, espacios en blanco ..............................................................................................................20 2.2.2.1.6 Nombrando cosas ........................................................................................................................................20 2.2.2.1. 7 Marcado y datos ..........................................................................................................................................20 2.2.2.2 Tipos de Elementos .............................................................................................................................................. 20 2.2.2.2.-J Elementos .................................................................................................................................................... 21 2.2.2.2.2 Atributos ......................................................................................................................................................21 2.2.2.2.3 Entidades Predefinidas ................................................................................................................................ 22 2.2.2.2.4 Secciones CDATA ..................................................................................................................................... .22 2.2.2.2.5 Comentarios .................................................................................................................................................23. 2.2.3 Document Type Definition (DTD) ............................................................................................................ 23 2.2.4 Esquemas XW. ......................................................................................................................................... 24 2.2.5 Analizadores XW. .................................................................................................................................... 25 2.2.5.1 SAX .....................................................................................................................................................................25 2.2.5.2 DOM .................................................................................................................................................................... 26 2.2.5.3 JDOM ..................................................................................................................................................................26. 2.2.6 XSLT......................................................................................................................................................... 26 2.2. 7 lenguajes de consultas ............................................................................................................................. 26 2.2.7.1 XQuery ................................................................................................................................................................ 26.

(4) 2 2.2.7.1.1 Expresiones de ruta ...................................................................................................................................... 27 2.2. 7.1.2 Constructores de elementos ......................................................................................................................... 27 2.2.7.1.3 Expresiones FLWR. .....................................................................................................................................27 2.2.7.1.4 Expresiones condicionales ........................................................................................................................... 29 2.2. 7.1.5 Expresiones cuantificadores ........................................................................................................................ 29 2.2.7.2 XPath ................................................................................................................................................................... 29 2.2.7.3 XQL ..................................................................................................................................................................... 29 2.2.7.4 Lorel ............................................................:...................................................................................................... .30 2.2.7.5 XML-GL .............................................................................................................................................................. 31 2.2.7.6 XML-QL. ............................................................................................................................................................ .31 2.2. 7. 7 Xtract ................................................................................................................................................................... 31 2.2.7.8 Quilt ..................................................................................................................................................................... 31. 2.2.8 Estrategias para el Almacenamiento de Datos XML........................................................ ........................ 32 2.2.8.1 Almacenar datos XML en archivos de planos ...................................................................................................... 32 2.2.8.2 Almacenar datos XML en objetos BLOB (Binary Large Objects) de una base de datos relacional. ................... 32 2.2.8.3 Mapear la estructura de datos XML a tablas de base de datos relaciónales ........................................................ .32 2.2.8.4 Bases de Datos XML Nativas ............................................................................................................................. .33. 2.2.9 Bases de Datos con capacidades XML ..................................................................................................... 34 2.2.9.1 Oracle ................................................................................................................................................................. .34 2.2.9.1.10racle8i ........................................................................................................................................................ 34 2.2.9.1.2 Oracle9i primera edición: Procesamiento integrado de XML ...................................................................... 34 2.2.9.1.3 Oracle9i segunda edición: Oracle XML DB ............................................................................................... .35 2.2.9.2 DB2 - IBM .......................................................................................................................................................... .36 2.2.9.3 Microsoft SQL Server 2000 ................................................................................................................................ .37. CAPITULO 3 ESTADO DEL ARTE .................................................................................................................... 38. 3.1. SQL2XQUERY (2002) ...................................................................................................................................... 38 3.1.1 Reglas de transformación ................................................................................................................ ......... 39 3.2 LEGODB (2002) .......................................................................... ...................................................................... 41 3.3 YFILTER (2002) ................................................................................................................................................ 42 3.4 MIX (2002) ........................................................................................................... ............................................ 42 3.5 AGORA (2001) .............................. .......... ........................................................ .................................................. 43 3.6 SILKROUTE (2000) ............................................................................................................................................ 45 3.7 XPERANTO (2000) ......................................................................................................................................... 47 3. 7.1 Arquitectura ............................................................................................................................................. 48 3.8 QUILT2SQL (2000) ........................................................................................................................................... 49 3.9 XMLMEDIA SYSTEM (l 999) ............................................................................................................................. 51 3.9.1 Arquitectura .......................................................................... ................................................................... 52 CAPITULO 4 PLANTEAMIENTO DEL PROBLEMA ..................................................................................... 54. 4.1 JUSTIFICACIÓN .................................................................................................................................................. 54 4.2 OBJETIVO DEL PROYECTO DE TESIS ................................................................................................................... 56 4.3 HIPOTESIS ......................................................................................................................................................... 57 CAPITULO 5 ANÁLISIS Y DISEÑO DEL COMPONENTE ........................................................................... 59. 5.1 ANALISIS DE DIRECTORIO DE DATOS ..................................................................................................... 66 5.2 ANALISIS DE LA CONVERSION DE SQL A XQUERY ................................................................................ 70 5.2.1 ANAL/SIS DE CONVERSJON ................................................................................................................. 70 5.2.2 CASOS TIPO DE CONSULTAS ............................................................................................................... 73 5.2.2.1 Caso 1: Conversión de consultas simples ............................................................................................................ 74 5.2.2.2 Caso 2: Consulta simple con uso de la cláusula distinct ..................................................................................... 74 5.2.2.3 Caso 3: Consulta simple con el uso de la cláusula order by ................................................................................ 75 5.2.2.4 Caso 4: Consulta mediante joins .......................................................................................................................... 76 5.2.2.5 Caso 5: Consultas anidadas, sub consultas en la cláusula from ........................................................................... 77 5.2.2.6 Caso 6: Consulta con el uso de la cláusula where simple .................................................................................... 77 5.2.2.7 Caso 7: Consulta usando la cláusula where junto con la cláusula in con constantes ............................................ 78 5.2.2.8 Caso 8: Consultas anidadas usando la cláusula where junto con la cláusula in en consultas no correlacionadas.79 5.2.2.9 Caso 9: Consultas anidadas usando la cláusula where junto con la cláusula in en consultas correlacionadas .... 80 5.2.2.1 OCaso I O: Consultas anidadas usando la cláusula where junto con la cláusula any ............................................. 81 5.2.2.11 Caso 11: Consultas anidadas usando la cláusula wherc junto con la cláusula sorne .......................................... 82 5.2.2.12 Caso 12: Consultas anidadas usando la cláusula where junto con la cláusula ali ............................................... 83 5.2.2.13 Caso 13: Consultas anidadas usando la cláusula wherejunto con la cláusula exists .......................................... 84.

(5) 3 5.2.2.14 Caso 14: Consulta usando funciones de agregación........................................................................................... 85 5.2.2.15 Caso IS: Consulta usando la cláusula de group by ............................................................................................ 86 5.2.2.16 Caso 16: Consulta usando la cláusula de group by y funciones de agregación .................................................. 87 5.2.2.17 Caso 17: Consulta usando la cláusula de group by, having y funciones de agregación ..................................... 89 5.2.2.18 Caso 18: Consulta de atributos ........................................................................................................................... 90. 5.2.3 REGLAS DE CONVERSIÓN: ................................................................................................................... 91 5.2.4 Algoritmo de conversión ........................................................................................................................... 94 CAPITULO 6 EVALUACIÓN .......................'".................................................................................................... 97 6.1 RESULTADO DE PRUEBAS DE CONVERSIÓN UTILIZANDO UN DICCIONARIO DE DATOS ...................................... 100. 6.1.1 Archivo de con.figuración ....................................................................................................................... 100 6.1.2 Información de las vistas creadas .......................................................................................................... 101 6.1.3 Pruebas realizadas ................................................................................................................................. 104 6.1.3.1 Regla 1: Consultas simples ................................................................................................................................ 104 6.1.3.2 Regla 2: Consulta usando cláusula distinct ........................................................................................................ 106 6.1.3.3 Regla 3: Consulta usando la cláusula order by .................................................................................................. 101 6.1.3.4 Regla 4: Consulta de varias tablas mediante joins ............................................................................................. 109 6.1.3.S Regla 5: Consultas anidadas, sub consultas en la cláusula.from........................................................................ 112 6.1.3.6 Regla 6: Consulta con el uso de la cláusula where simple ................................................................................. 114 6.1.3.7 Regla 7: Consulta usando la cláusula where junto con la cláusula in con constantes ........................................ 116 · 6.1.3.8 Regla 8: Consultas anidadas usando la cláusula where junto con la cláusula in en consultas no correlacionadas . ....................................................................................................................................................................................... 118 6.1.3.9 Regla 9: Consultas anidadas usando la cláusula where junto con la cláusula in en consultas correlacionadas. 119 6.1.3.1 ORegla 10: Consultas anidadas usando la cláusula where junto con la cláusula any .......................................... 120 6.1.3.11 Regla 11: Consultas anidadas usando la cláusula where junto con la cláusula sorne ....................................... 123 6.1.3.12 Regla 12: Consultas anidadas usando la cláusula where junto con la cláusula ali ........................................... 125 6.1.3.13 Regla 13: Consultas anidadas usando la cláusula where junto con la cláusula exists ...................................... 127 6.1.3.14 Regla 14: Consulta usando funciones de agregación....................................................................................... 129 6.1.3.15 Regla 15: Consulta usando la cláusula de group by, having y funciones de agregación.................................. 131 6.2 RESULTADO DE PRUEBAS DE CONVERSIÓN SIN DICCIONARIO DE DATOS .......................................................... 136. 6.2.1 Pruebas realizadas ................................................................................................................................. 136 6.2.1.1 Regla 1: Consultas simples ................................................................................................................................ 136 6.2.1.2 Regla 2: Consulta usando cláusula distinct ........................................................................................................ 136 6.2.1.3 Regla 3: Consulta usando la cláusula order by .................................................................................................. 13 7 6.2.1.4 Regla 4: Consulta de varias tablas mediante joins ............................................................................................. 138 6.2.1.5 Regla 5: Consultas anidadas, sub consultas en la cláusula.from ........................................................................ 139 6.2.1.6 Regla 6: Consulta con el uso de la cláusula where simple ................................................................................. 140 6.2.1.7 Regla 7: Consulta usando la cláusula where junto con la cláusula in con constantes ........................................ 141 6.2.1.8 Regla 8: Consultas anidadas usando la cláusula where junto .con la cláusula in en consultas no correlacionadas . ....................................................................................................................................................................................... 142 6.2.1.9 Regla 9: Consultas anidadas usando la cláusula where junto con la cláusula in en consultas correlacionadas. 142 6.2.1.1 ORegla IO: Consultas anidadas usando la cláusula where junto con la cláusula any .......................................... 144 6.2.1.11 Regla 11: Consultas anidadas usando la cláusula whcre junto con la cláusula sorne ....................................... 145 6.2.1.12 Regla 12: Consultas anidadas usando la cláusula where junto con la cláusula ali ................... :....................... 146 6.2.1.13 Regla 13: Consultas anidadas usando la cláusula where junto con la cláusula exists ...................................... 147 6.2.1.14 Regla 14: Consulta usando funciones de agregación....................................................................................... 148 6.2.1.15 Regla 15: Consulta usando la cláusula de group by, having y funciones de agregación .................................. 149 6.3 CUADRO DE RESULTADOS ............................................................................................................................... 151. CAPITULO 7 RESULTADOS ............................................................................................................................ 156 CAPITULO 8 CONCLUSIONES ........................................................................................................................ 158 8.1 APoRTACIONES DEL TRABAJO DE INVESTIGACIÓN .......................................................................................... 159 8.2 TRABAJOS RJTUROS ........................................................................................................................................ 159. APÉNDICE A DIAGRAMAS UML DEL DICCIONARIO DE DATOS .......................................................... 160 APÉNDICE B MANUAL DE PROGRAMACIÓN DEL API ............................................................................ 163 APÉNDICE C .......................................................................................................................................................... 164 REFERENCIAS ...................................................................................................................................................... 177.

(6) ,. 4. Indice de figuras FIGURA 2.1. COMANDOS DLL ........................................................................................................ 11 FIGURA 2.2. COMANDOS DMI.. ....................................................................................................... 12 FIGURA 2.3. CLÁUSULAS SQL ....................................................................................................... 12 FIGURA 2.4. OPERADORES LÓGICOS ...................... ,....................................................................... 12 FIGURA 2.5. OPERADORES DE COMPARACIÓN ................................................................................ 12 FIGURA 2.6 FUNCIONES DE AGREGADO .......................................................................................... 13 FIGURA 2. 7. PREDICADOS ............................................................................................................... 14 FIGURA 2.8. EJEMPLO DOCUMENTO XML BIEN FORMADO ............................................................. 18 FIGURA 2. 9. EJEMPLO DE DEFINICIÓN DE DTD .............................................................................. 19 FIGURA 2.10. EJEMPLO DE UNA ESTRUCTURA JERÁRQUICA INCORRECTA ....................................... 19 FIGURA 2.11. EJEMPLO DE UNA ETIQUET~ VACÍA INCORRECTA ...................................................... 19 FIGURA 2.12. EJEMPLOS DE DEFINICIÓN DE ATRIBUTOS ................................................................. 20 FIGURA 2.13. ENTIDADES PREDEFINIDAS ....................................................................................... 22 FIGURA 2.14. EJEMPLO DE CDATA ............................................................................................... 22 FIGURA 2.15. EJEMPLO DE UN DOCUMENTO XML CON LA DEFINICION DE DTD INCLUIDA EN EL DOCUMENTO .......................................................................................................................... 23 FIGURA 2.16. EJEMPLO DE UN DOCUMENTO XML CON LA DEFINICIÓN DE DTD NO INCLUIDA EN EL DOCUMENTO .......................................................................................................................... 24 FIGURA 2.17. EJEMPLO DE UN DOCUMENTO XML CON UN ESQUEMA DEFINIDO ............................. 25 FIGURA 2.18 ..DEFINICION DE UN ESQUEMA .................................................................................... 25 FIGURA 2.19. ESTRUCTURA DE EXPRESIONES FLWR ..................................................................... 27 FIGURA 2.20. EJEMPLO DE UNA EXPRESIÓN FLWR ........................................................................ 29 FIGURA 2.21. EJEMPLO DE BÚSQUEDA USANDO LOREL .................................................................. 30 FIGURA 2.22. EJEMPLO DE JOIN USANDO LOREL ............................................................................ 31 FIGURA 2.23. EJEMPLO DE ACTUALIZACIÓN USANDO LOREL ......................................................... 31 FIGURA 2.24. RELACIÓN ESQUEMA XML Y ESQUEMA RELACIONAL [EMERICK, 2002] ................. 33 FIGURA 3.1. ARQUITECTURA SQL2XQUERY [CARTUJANO, 2002] ............................................. 39 FIGURA 3.2. ARQUITECTURA AGORA [MANOLESCU, 2001] ........................................................... 44 FIGURA 3 .3. EJEMPLO DE AGORA [MANOLESCU, 2001] ................................................................. 44 FIGURA 3.4. ARQUITECTURA SILKROUTE [FERNANDEZ, 2000) ...................................................... 45 FIGURA 3 .5. PROCESO DE UNA CONSULTA SILKR.OUTE [FERNANDEZ, 2000] .................................. 46 FIGURA 3.6 ARQUITECTURA XPERANTO [CAREY, 2000] ............................................................ 48 FIGURA 3.8. CONSULTA EN QUILT Y SQL [CAMPBELL, 2000] ....................................................... 50 FIGURA 3.9. ARQUITECTURA DE XMLMEDIA [GARDARIN, 1999] ................................................ 51 FIGURA 3.10 ALMACENAMIENTO DEL DOCUMENTO XML [GARDARIN, 1999] ............................... 52 FIGURA 3.11. DEFINICIÓN DE RAMAS Y HOJAS [GARDARIN, 1999] ................................................. 53 FIGURA 4.1. ESQUEMA PROPUESTO ................................................................................................ 55 FIGURA 4.2. ESTRUCTURA DE 4 NIVELES ........................................................................................ 56 FIGURA 4.3. EJEMPLO DE UNA ESTRUCTURA DIFERENTE A LA ESTRUCTURA DEL 4 NIVELES ........... 57 FIGURA 5.1. ESQUEMA XML VS ESQUEMA RELACIONAL .............................................................. 59 FIGURA 5.2. ESTRUCTURA RELACIONAL EN UN DOCUMENTO XML TABLE! .XML .......................... 60 FIGURA 5 .3 PUNTO DE INICIO DEL ESQUEMA RELACIONAL ............................................................. 60 FIGURA 5.4. ESTRUCTURA RELACIONAL EN UN DOCUMENTO XML DB.XML .................................. 61 FIGURA 5.5. PUNTO DE INICIO PARA LOS ESQUEMAS RELACIONALES DEL DOCUMENTO DB.XML .... 61.

(7) 5 FIGURA 5.6. ESTRUCTURA DE DOCUMENTO XML CON ESTRUCTURA NO RELACIONAL REPORT.XML ............................................................................................................................................... 62 FIGURA 5.7. PUNTO DE INICIO PARA LOS ESQUEMAS RELACIONALES DEL DOCUMENTO REPORTl.XML; ........................................................................................................................ 62 FIGURA 5.8. RUTA COMPLETA DEL ELEMENTO INSTRUMENT .......................................................... 62 FIGURA 5.9. CONSULTA DE UN DOCUMENTO XML CON SENTENCIAS SQL .................................... 63 FIGURA 5.10. ESTRUCTURA DE DOCUMENTO XML CON ESTRUCTURA NO RELACIONAL DTCACHE3J{ML ...................................................................................................................... 64 FIGURA 5.11. PuNTO DE INICIO PARA LOS ESQUEMAS RELACIONALES DEL DOCUMENTO DTCACHE3J{ML ...................................................................................................................... 64 FIGURA 5.12. RUTA COMPLETA DEL ELEMENTO FONTSTYLE .......................................................... 64 FIGURA 5.13. CONSULTA DE UN DOCUMENTO XML CON SENTENCIAS SQL .................................. 64 FIGURA 5.14. CONSULTA DE UN DOCUMENTO XML CON SENTENCIAS SQL USANDO UN DICCIONARIO DE DATOS ......................................................................................................... 65 FIGURA 5 .15 CONSULTA SQL DE DOCUMENTOS XML ................................................................... 66 FIGURA 5.16 CONSULTA SQL DE DOCUMENTOS XML USANDO UN DIRECTORIO DE BASE DE DAT066 FIGURA 4.18. CLASES DEL DICCIONARIO DE DATOS ........................................................................ 68 FIGURA 5.18. DOCUMENTO XML DE CONFIGURACIÓN PARA EL DIRECTORIO DE DATOS ................ 69 FIGURA 5 .19. ESQUEMA DE DIRECTORIO DE DATOS ........................................................................ 70 FIGURA 5.20. DESPLIEGUE DE ELEMENTOS TEXTO EN CONSULTAS DE XQUERY ............................. 71 FIGURA 5.21. DESPLIEGUE DE ATRIBUTOS EN CONSULTAS DE XQUERY ......................................... 71 FIGURA 5.22. ESQUEMA XML VS ESQUEMA RELACIONAL ............................................................ 72 FIGURA 5.23. DEFINICIÓN DE NODO ............................................................................................... 72 FIGURA 5.24. DEFINICIÓN DE ATRIBUTO ........................................................................................ 72 FIGURA 5.25. DEFINICIÓN DE DOCUMENT ........................................................... : .......................... 72 FIGURA 5.26. ESTRUCTURAS DE SQL Y XQUERY .......................................................................... 73 FIGURA 5.27. CORRESPONDENCIA ENTRE SENTENCIAS SQL Y XQUERY ....................................... 73 FIGURA 5.28 A. CONSULTA SQL CASO 1 ........................................................................................ 74 FIGURA 5.28 B. CONSULTA SQL CASO 1 ........................................................................................ 74 FIGURA 5.29. CONSULTA XQUERY CASO 1 .................................................................................... 74 FIGURA 5.30 A. CONSULTA SQL CASO 2 ........................................................................................ 74 FIGURA 5.30 B. CONSULTA SQL CASO 2 ........................................................................................ 75 FIGURA 5.31. CONSULTA XQUERY CASO 2 .................................................................................... 75 FIGURA 5.32 A. CONSULTA SQL CASO 3 ........................................................................................ 75 FIGURA 5.32 B. CONSULTA SQL CASO 3 ........................................................................................ 75 FIGURA 5.33. CONSULTA XQUERY CASO 3 .................................................................................... 76 FIGURA 5.34 B. CONSULTA SQL CASO 4 ........................................................................................ 76 FIGURA 5.34 B. CONSULTA SQL CASO 4 ........................................................................................ 76 FIGURA 5.35. CONSULTA XQUERY CASO 4 .................................................................................... 76 FIGURA 5.36 A. CONSULTA SQL CASO 5 ........................................................................................ 77 FIGURA 5.36 B. CONSULTA SQL CASO 5 ........................................................................................ 77 FIGURA 5.37. CONSULTA XQUERY CASO 5 .................................................................................... 77 FIGURA 5.38 A. CONSULTA SQL CASO 6 ........................................................................................ 78 FIGURA 5.38 B. CONSULTA SQL CASO 6 ........................................................................................ 78 FIGURA 5.39. CONSULTA XQUERY CASO 6 .................................................................................... 78 FIGURA 5.40 A. CONSULTA SQL CASO 7 ........................................................................................ 78 FIGURA 5.40 B. CONSULTA SQL CASO 7 ........................................................................................ 78 FIGURA 5.41. CONSULTA XQUERY CASO 7 .................................................................................... 79 FIGURA 5.42 A. CONSULTA SQL CASO 8 ........................................................................................ 79.

(8) 6 FIGURA 5.42 B. CONSULTA SQL CASO 8 ........................................................................................ 79 FIGURA 5.43. CONSULTA XQUERY CASO 8 .................................................................................... 80 FIGURA 5.44 A. CONSULTA SQL CASO 9 ........................................................................................ 80 FIGURA 5.44 B. CONSULTA SQL CASO 9 ........................................................................................ 80 FIGURA 5.45. CoNSULTA XQUERY CASO 9 .................................................................................... 81 FIGURA 5.46 A. CONSULTA SQL CASO 10 ...................................................................................... 81 FIGURA 5.46 B. CONSULTA SQL CASO 10 ...................................................................................... 81 FIGURA 5.4 7. CONSULTA XQUERY CASO 10 .................................................................................. 82 FIGURA 5.48 A. CONSULTA SQL CASO 11 ...................................................................................... 82 FIGURA 5.48 B. CONSULTA SQL CASO 11 ...................................................................................... 82 FIGURA 5.49. CONSULTA XQUERY CASO 11 .................................................................................. 83 FIGURA 5.50 A. CONSULTA SQL CASO 12 ...................................................................................... 83 FIGURA 5.50 B. CONSULTA SQL CASO 12 ...................................................................................... 83 FIGURA 5.51. CONSULTA XQUERY CASO 12 .................................................................................. 84 FIGURA 5.52 A. CONSULTA SQL CASO 13 ...................................................................................... 84 FIGURA 5.52 B. CONSULTA SQL CASO 13 ...................................................................................... 84 FIGURA 5.53. CONSULTA XQUERY CASO 13 .................................................................................. 85 FIGURA 5.54 A. CONSULTA SQL CASO 14 ...................................................................................... 85 FIGURA 5.54 B. CONSULTA SQL CASO 14 ...................................................................................... 85 FIGURA 5.55. CONSULTA XQUERY CASO 14 .................................................................................. 86 FIGURA 5.56 A. CONSULTA SQL CASO 15 ...................................................................................... 86 FIGURA 5.56 B. CONSULTA SQL CASO 15 ...................................................................................... 86 FIGURA 5.57. CONSULTA XQUERY CASO 15 ....................................... ; .......................................... 87 FIGURA 5.58 A. CONSULTA SQL CASO 16 ...................................................................................... 87 FIGURA 5.58 B. CONSULTA SQL CASO 16 ...................................................................................... 87 FIGURA 5.59. CONSULTA XQUERY CASO 16 .................................................................................. 88 FIGURA 5.60 A. CONSULTA SQL CASO 17 ...................................................................................... 89 FIGURA 5.60 B. CONSULTA SQL CASO 17 ...................................................................................... 89 FIGURA 5.58. CONSULTA XQUERY CASO 17 .................................................................................. 90 FIGURA 5.62 A. CONSULTA SQL CASO 18 ...................................................................................... 90 FIGURA 5.62 B. CONSULTA SQL CASO 18 ...................................................................................... 91 FIGURA 5.63. CONSULTA XQUERY CASO 18 .................................................................................. 91 FIGURA 6.2. DEFINICIÓN DTD DEL DOCUMENTO FAMILY.XML. ..................................................... 98 FIGURA 6.3. DEFINICIÓN DTD DEL DOCUMENTO MSDSO_ ATTRIB.XML .......................................... 98 FIGURA 6.4. DEFINICIÓN DTD DEL DOCUMENTO R-USERS.XML .................................................... 98 FIGURA 6.5. DEFINICIÓN DTD DEL DOCUMENTO R-ITEMS.XML ..................................................... 99 FIGURA 6.6. DEFINICIÓN DTD DEL DOCUMENTO R-BIDS.XML ....................................................... 99 FIGURA 6. 7. DEFINICIÓN DTD DEL DOCUMENTO REPORTl .XML. ................................................... 99 FIGURA 6.8. DEFINICIÓN DTD DEL DOCUMENTO PARTS-DATA.XML .............................................. 99 FIGURA 6.9. DEFINICIÓN DTD DFL DOCUMENTO Tv2.XML.. ........................................................ 100 FIGURA 6.10. DEFINICIÓN DTD DEL DOCUMENTO DTCACHE3.XML ............................................. l 00 FIGURA 6.11. DOCUMENTO DE CONFIGURACIÓN XMLFILE.XML. .................................................. FIGURA 6.12. INFORMACIÓN DE LAS VISTAS CREADAS ................................................................. TABLA 6.13. ELEMENTOS DE LA VISTA FAMILIA ........................................................................... TABLA 6.14. ELEMENTOS DE LA VISTA GENTE ............................................................................. TABLA 6.15. ELEMENTOS DE LA VISTA BID .................................................................................. TABLA 6.16. ELEMENTOS DE LA VISTA ITEM ................................................................................ TABLA 6.17. ELEMENTOS DE LA VISTA USER ................................................................................ TABLA 6.18. ELEMENTOS DE LA VISTA PARTES ............................................................................. 101 101 102 102 102 102 102 103.

(9) 7 TABLA 6.19. ELEMENTOS DE LA VISTA ESQUEMAS ....................•.....................................•.•...•...... 103 TABLA 6.20. ELEMENTOS DE LA VISTA HBO ................................................................................. 103 TABLA 6.21. ELEMENTOS DE LA VISTA FOX ................................................................................. 103 TABLA 6.22. ELEMENTOS DE LA VISTA SONY ............................................................................... 104.

(10) 8. CAPITULO 1 Introducción. XML, el lenguaje que está revolucionando al mundo de las empresas debido a sus aplicaciones en representación de datos, conectividad, base de datos, voz y WAP entre otros. Hablar de Internet hoy en día es sinónimo de cambios y transformaciones a nivel mundial. Cada día aparecen nuevos servicios para usuarios que aportan enormes beneficios sociales y económicos. Con un crecimiento exponencial, este estándar comienza a imponerse como herramienta de intercambio de datos en aplicaciones Web. Empresas como SUN, Oracle, IBM, Microsoft, Hewlett-Packard entre otros, comienzan a desarrollar versiones de sus programas compatibles con XML o incorporan este estándar como parte de sus desarrollos. Si se habla de la tecnología que capacita a Internet tal y como se conoce hoy en día, entonces se habla de HTML (lenguaje utilizado para definir la presentación de las páginas que se encuentra en la red). Gracias a HTML (Hypertex MarkUp Language) se ha podido combinar toda clase de elementos multimedia y crear sistemas complejos con hiperenlaces entre páginas. Sin embargo HTML no es útil en lo que se refiere a la descripción de datos debido a que dedica mayor esfuerzo a describir el aspecto de las páginas que el propio contenido; presenta problemas de internacionalización; su estructura comienza a hacerse caótica. Para clarificar esto, con HTML podemos dar formato a una tabla, pero no se puede describir la naturaleza de los elementos de datos que la componen. Aquí es donde XML promete ser más útil. [Rusty, 1999] XML (Extensible Markup Language) es un estándar internacional desarrollado por el grupo SGML (Standard Generalized Markup Language) formado bajo el auspicio de W3C (World Wide Web Consortium) en 1996. [Rusty, 1999] XML es un metalenguaje, es decir, un lenguaje para la definición de lenguajes de marcado. XML define la sintaxis y los requisitos que deben cumplir los lenguajes de marcado. [Rusty, 1999] XML propone organizar la información de una forma estándar, flexible, independiente de plataforma, sistema operativo y lenguaje de programación, y además pensado para que los navegadores puedan trabajar con él. De esta manera, se podrá crear un lenguaje para realizar sobre textos enriquecidos un gran número de tareas informáticas, antes impensables, y limitado únicamente por la información añadida, por la necesidad y por la imaginación. Algunas de estas tareas podrían ser: búsquedas mas precisas, personalización de la información, generación automática de informes, filtrados entre otros. En la actualidad, con XML las oportunidades de aplicaciones son infinitas, es decir, sé esta hablando de una gran base de datos virtual a la que cualquier aplicación, independientemente del entorno, sistema operativo y lenguaje de programación puede acceder utilizando APis estándar..

(11) 9 Teniendo esto en consideración, las limitaciones en el uso del XML en la creación de aplicaciones sólo las pone la imaginación. Algunas de las aplicaciones más recurridas hoy en día son por ejemplo:. Sistemas de documentación: Permite la estructuración, organización y manipulación inteligente de la infonnación. Permite desde una única fuente de datos diferentes formatos de presentación y salida. [cgsite, www] Comercio electrónico: Permite el intercambio de información entre sistemas heterogéneos, lo que facilita el intercambio de información entre empresas. [cgsite, www] Diseño de aplicaciones informáticas: Se utiliza en combinación con el UML (XMI) en el diseño de aplicaciones. Se utiliza para "Literate Programing", de manera que se permita escribir de forma conjunta código y la documentación de este código. Supone una revolución en el desarrollo de aplicaciones distribuidas. [cgsite, www] Telefonía móvil: El WML (Wireless Markup Language) utilizado para escribir las páginas que se visualizan en los teléfonos móviles es una aplicación XML. [cgsite, www] Debido a la demanda en el uso de XML es necesario tener herramientas que permitan consultar un documento o un conjunto de documentos XML con la fmalidad de extraer, sintetizar y analizar su contenido. Existen varias propuestas para consultar documentos XML, entre las cuales se tiene XPath, XQL, XML-QL, Loret, YATL, Quilt, XML-GL y XQuery entre otros. [Cagle, 2002], [Rivas, 2001 ], [Deutsch, 1998], [Rabie, 1999], [Abiteboul,2000 ], [Chamberlin, 2000], [Comai, 1999] XQuery sé esta posicionando como el lenguaje para realizar consultas de documentos XML, este lenguaje es un estándar el cual es auspiciado por W3C (World Wide Web Consortium), actualmente ya se encuentra disponible el segundo borrador. [Cagle, 2002] Por otra parte, en la actualidad las bases de datos relacionales almacenan la mayor parte de la información por lo que es indispensable que la mayoría de los desarrolladores de soluciones tanto de aplicaciones WEB y Cliente/Servidor dominen SQL que es el lenguaje de manipulación de este tipo de base de datos.. 1.1 ORGANIZACIÓN DEL DOCUMENTO Este documento esta compuesto de los siguientes capítulos: Capitulo 2 Antecedentes. En este capitulo se tocaran los aspectos teóricos de las tecnologías relacionadas con este proyecto de tesis como: bases de datos relacionales, SQL, almacenamiento de documentos XML, XML, lenguajes de consulta XML, SQL/XML. Capitulo 3 Estado del arte. En este capitulo se describirán los proyectos relacionados con el mismo tema y se hablaran de las diferencias con ese. Capitulo 4 Planteamiento del problema En este capitulo se presenta la justificación del proyecto, los objetivos del proyecto y las hipótesis..

(12) 10 Capitulo 5 Análisis y Diseño del componente: En este capitulo se hará un análisis de la relación de SQL con XQuery para definir las reglas de transformación. A partir de estas reglas se diseñara la arquitectura del componente. Capitulo 6 Evaluación En este capitulo realizaran un conjunto de pruebas al componente y se reportaran sus resultados. Capitulo 7 Resultados En este capitulo se presentan los resultados del proyecto en base a los objetivos planteados. Capitulo 8 Conclusiones.

(13) 11. CAPITUL02. Antecedentes. 2.1 SQL 2.1.1 Introducción El SQL (Structured Query Language), es un lenguaje para el acceso a bases de datos relaciónales. SQL se ha convertido en la actualidad, en un lenguaje estándar de bases de datos relaciónales, soportándolo la mayoría de los sistemas de base~ de datos. [Patrick, 2002], [Ceri, 1994], [Elmasri, 2003] El hecho de tener un estándar definido por un lenguaje para bases de datos relacionales abre potencialmente el camino a la intercomunicación entre todos los productos que se basan en él. Pero a partir del estándar, cada sistema ha desarrollado su propio SQL, por lo que SQL puede variar de un sistema a otro, siendo estos cambios insignificantes por lo que no suponen ningún problema para alguien que conozca un SQL concreto. SQL nos permite realizar consultas a la base de datos. Pero además también nos permite realizar funciones de definición, control y gestión de la base de datos. 2.1.2 Componentes del SQL El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. 2.1.2.1 Comandos Existen dos tipos de comandos SQL: DLL: que permiten crear y definir nuevas bases de datos, campos e índices. DML: que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos. 2.1.2.1.1 Comandos DLL Comando. CREATE DROP ALTER. IDescrioción ~tilizado cara crear nuevas tablas, camnos e índices Emcleado cara eliminar tablas e índices ~tilizado para modificar las tablas agregando campos o cambiando la definición de los camoos.. Figura 2.1. Comandos DLL..

(14) 12 2.1.2.1.2 Comandos DML Comando IDescripción Ptilizado para consultar registros de la base de datos que SELECT satisfaqan un criterio determinado ~tilizado para cargar lotes de datos en la base de datos en una INSERT !única ooeraci6n. Ptilizado para modificar los valores de los campos y registros UPDATE iesoecificados ~tilizado para eliminar registros de una tabla de una base de DELETE Ida tos. Figura 2.2. Comandos DML 2.1.2.2 Cláusulas. Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. Cláusula. FROM WHERE GROUP BY HAVING ORDERBY. Figura 2.3. Cláusulas SQL. 2.1.2.3 Operadores Lógicos 0Derador. ANO OR NOT. Uso. Es el V lógico. Evalua dos condiciones y devuelve un valor de verdad sólo si ambas son !Ciertas. Es el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdar si alguna de las Idos es cierta. Neoación lóoica. Devuelve el valor contrario de la exoresión.. Figura 2.4. Operadores Lógicos 2.1.2.4 Operadores de Comparación Operador < > <> <= >= =. !Uso. !Menor Que Mayor Que Distinto de Menor ó laual aue Mayor ó Igual aue h:iual aue BETWEEN Utilizado cara esoecificar un intervalo de valores. LIKE Utilizado en la comparación de un modelo. Figura 2.5. Operadores de comparación.

(15) 13 2.1.2.5 Funciones de Agregado. Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros. Función AVG COUNT SUM MAX MIN. Descriución Utilizada oara calcular el promedio de los valores de un campo determinado Utilizada para devolver el número de reaistros de la selección Utilizada oara devolver la suma de todos los valores de un campo determinado Utilizada oara devolver el valor más alto de un campo especificado Utilizada oara devolver el valor más baio de un campo especificado. Figura 2.6 Funciones de agregado. 2.1.3 Consultas de Selección. Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en un objeto recordset. Este conjunto de registros es modificable. 2.1.3.1 Consultas básicas. La sintaxis básica de una consulta de selección es la siguiente: SELECT Campos FROM Tabla;. En donde campos es la lista de campos que se deseen recuperar y tabla es el origen de los mismos, por ejemplo: SELECT Nombre, Telefono FROM Clientes;. Esta consulta devuelve un recordset con el campo nombre y teléfono de la tabla clientes. 2.1.3.2 Ordenar los registros. Adicionalmente se puede especificar el orden en que se desean recuperar los registros de las tablas mediante la cláusula ORDER BY Lista de Campos. En donde Lista de campos representa los campos a ordenar. Ejemplo: SELECT Código postal, Nombre, Teléfono FROM Clientes ORDER BY Nombre;. Esta consulta devuelve los campos CodigoPostal, Nombre, Telefono de la tabla Clientes ordenados por el campo Nombre. Se pueden ordenar los registros por mas de un campo, como por ejemplo: SELECT Código postal, Nombre, Teléfono FROM Clientes ORDER BY Código postal, Nombre;. Incluso se puede especificar el orden de los registros: ascendente mediante la cláusula (ASC -se toma este valor por defecto) ó descendente (DESC) SELECT Código postal, Nombre, Teléfono FROM Clientes ORDER BY Código postal DESC , Nombre ASC;.

(16) 14 2.1.3.3 Consultas con Predicado. El predicado se incluye entre la cláusula y el primer nombre del campo a recuperar, los posibles predicados son mostrados en la figura 2.7. Predicado ALL TOP DISTINCT DISTINCTRO. w. Descripción Devuelve todos los camoos de la tabla IDevuelve un determinado número de reaistros de la tabla !Omite los registros cuvos camoos seleccionados coincidan totalmente !Omite los registros duplicados basandose en la totalidad del registro y no sólo en los 1campos seleccionados.. Figura 2.7. Predicados. 2.1.3.4 Alias. En determinadas circunstancias es necesario asignar un nombre a alguna columna determinada de un conjunto devuelto, otras veces por simple capricho o por otras circunstancias. Para resolver todas ellas tenemos la palabra reservada AS que se encarga de asignar el nombre que deseamos a la columna deseada. Tomado como referencia el ejemplo anterior podemos hacer que la columna devuelta por la consulta, en lugar de llamarse apellido (igual que el campo devuelto) se llame Empleado. En este caso procederíamos de la siguiente forma: SELECT DISTINCTROW Apellido AS Empleado FROM Empleados;. 2.1.4 Criterios de Selección. A lo largo de esta sección se estudiarán las posibilidades de filtrar los registros con el fin de recuperar solamente. aquellos que cumplan ciertas condiciones preestablecidas. 2.1.4.1 Operadores Lógicos. Los operadores lógicos soportados por SQL son: ANO, OR, XOR, Eqv, lmp, Is y Not. A excepción de los dos últimos todos poseen la siguiente sintaxis: <expresión]> operador <expresión]>. En donde expresión! y expresión2 son las condiciones a evaluar, el resultado de la operación varía en función del operador lógico. La figura 2.8 muestra los posibles resultados. 2.1.4.2 Intervalos de Valores. Para indicar que deseamos recuperar los registros según el intervalo de valores de un campo emplearemos el operador Between cuya sintaxis es: campo [Not] Between valor] And valor2 (la condición Notes opcional). En este caso la consulta devolvería los registros que contengan en "campo" un valor incluido en el intervalo valorl, valor2 (ambos inclusive). Si anteponemos la condición Not devolverá aquellos valores no incluidos en el intervalo. SELECT * FROM Pedidos WHERE Código postal Between 28000 And 28999;.

(17) 15 2.1.4.3 El Operador Like Se utiliza para comparar una expresión de cadena con un modelo en una expresión SQL. Su sintaxis es: expresión Like modelo. En donde expresión es una cadena modelo o campo contra el que se compara expresión. Se puede utilizar el operador Like para encontrar valores en los campos que coincidan con el modelo especificado. Por modelo puede especificar un valor completo (Ana María), o se pueden utilizar caracteres comodín como los reconocidos por el sistema operativo para encontrar un rango de valores (Like An*). 2.1.4.4 El Operador In Este operador devuelve aquellos registros cuyo campo indicado coincide con alguno de los en una lista. Su sintaxis es: expresión [Not/ ln(valorl, valor2, ••.). ejemplo SELECT * FROM Pedidos WHERE Provincia In ('Madrid', 'Barcelona', 'Sevilla~;. 2.1.4.5 La cláusula WIIERE La cláusula WHERE puede usarse para determinar qué registros de las tablas enumeradas en la cláusula FROM aparecerán en los resultados de la instrucción SELECT. Después de escribir esta cláusula se deben especificar las condiciones del filtrado. Si no se emplea esta cláusula, la consulta devolverá todas las filas de la tabla. WHERE es opcional, pero cuando aparece debe ir a continuación de FROM. SELECT Apellidos, Salario FROM Empleados WHERE Salario 21000; SELECT ld_Producto, Existencias FROM Productos WHERE Existencias <=Nuevo_Pedido;. 2.1.5 Agrupamiento de Registros 2.1.5.1 GROUP BY Combina los registros con valores idénticos, en la lista de campos especificados, en un único registro. Para cada registro se crea un valor sumario si se incluye una función SQL agregada, como por ejemplo Sumo Count, en la instrucción SELECT. Su sintaxis es: SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo. GROUP BY es opcional. Los valores de resumen se omiten si no existe una función SQL agregada en la instrucción SELECT. Los valores Null en los campos GROUP BY se agrupan y no se omiten. No obstante, los valores Null no se evalúan en ninguna de las funciones SQL agregadas..

(18) 16 Se utiliza la cláusula WHERE para excluir aquellas filas que no desea agrupar, y la cláusula HAVING para filtrar los registros una vez agrupados. Todos los campos de la lista de campos de SELECT deben o bien incluirse en la cláusula GROUP BY o como argumentos de una función SQL agregada. SELECT ld_Familia, Sum(Stock) FROM Productos GROUP BY ld_Familia;. Una vez que GROUP BY ha combinado los registros, HA VING muestra cualquier registro agrupado por la cláusula GROUP BY que satisfaga las condiciones de la cláusula HA VING. HAVING es similar a WHERE, determina qué registros se seleccionan. Una vez que los registros se han agrupado utilizando GROUP BY, HAVING determina cuales de ellos se van a mostrar. SELECT ld_Familia Sum(Stock) FROM Productos GROUP BY ld_Familia HA VING Sum(Stock) 100 AND NombreProducto Like BOS*;. 2.1.5.2 AVG Calcula la media aritmética de un conjunto de valores contenidos en un campo especificado de una consulta. Su sintaxis es la siguiente Avg(expr). En donde expr representa el campo que contiene los datos numéricos para los que se desea calcular la media o una expresión i:¡ue realiza un cálculo utilizando los datos de dicho campo. La media calculada por Avg es la media aritmética (la swna de los valores dividido por el número de valores). La función Avg no incluye ningún campo Null en el cálculo. SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos 100;. 2.1.5.3 Count Calcula el número de registros devueltos por una consulta. Su sintaxis es la siguiente Count(expr). En donde expr contiene el nombre del campo que desea contar. Los operadores de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). Puede contar cualquier tipo de datos incluso texto. Aunque expr puede realizar un cálculo sobre un campo, Count simplemente cuenta el número de registros sin tener en cuenta qué valores se almacenan en los registros. La función Count no cuenta los registros que tienen campos null a menos que expr sea el carácter comodín asterisco (*). Si utiliza un asterisco, Count calcula el número total de registros, incluyendo aquellos que contienen campos null. Count(*) es considerablemente más rápida que Count(Campo). No se debe poner el asterisco entre dobles comillas ('*'). SELECT Count(*) AS Total FROM Pedidos;.

(19) 17 Si expr identifica a múltiples campos, la función Count cuenta un registro sólo si al menos uno de los campos no es Null. Si todos los campos especificados son Null, no se cuenta el registro. Hay que separar los nombres de los campos con (&). SELECT Count(FechaEnvío & Transporte) AS Total FROM Pedidos;. 2.1.5.4 Max, Min Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un campo especifico de una consulta. Su sintaxis es: Min(expr) Max(expr). En donde expr es el campo sobre el que se desea realizar el cálculo. Expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Min(Gastos) AS EIMin FROM Pedidos WHERE Pais = 'España'; SELECT Max(Gastos) AS EIMax FROM Pedidos WHERE Pais = 'España';. 2.1.5.5 Sum Devuelve la suma del conjunto de valores contenido en un campo especifico de una consulta. Su sintaxis es: Sum(expr). En donde expr representa el nombre del campo que contiene los datos que desean sumarse o una expresión que realiza un cálculo utilizando los datos de dichos campos. Los operadores de expr pueden incluir el nombre de un campo de una tabla, una constante o una función (la cual puede ser intrínseca o definida por el usuario pero no otras de las funciones agregadas de SQL). SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;. 2.2 XML 2.2.1 Introducción. XML (eXtensible Markup Lenguage), no es un lenguaje de marcado como el lenguaje HTML. XML es un meta-lenguaje que nos permite definir lenguajes de marcado adecuado a usos determinados. Al ser XML un metalenguaje es un lenguaje para definir lenguajes. Los elementos que lo componen pueden dar información sobre lo que contienen, no necesariamente sobre su estructura física o presentación, corno ocurre en HTML. XML no ha nacido sólo para su aplicación en Internet, sino que se propone corno lenguaje de bajo nivel (a nivel de aplicación, no de programación) para intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo, y casi cualquier cosa que podamos pensar. [Gutierrez, 2001].

(20) 18. 2.2.2 Estructura de un documento XML Un documento XML tiene dos estructuras, una lógica y otra fisica. Físicamente, el documento está compuesto por unidades llamadas entidades. Una entidad puede hacer referencia a otra entidad, causando que esta se incluya en el documento. Cada documento comienza con una entidad documento, también llamada raíz. Lógicamente, el documento está compuesto de declaraciones, elementos, comentarios, referencias a caracteres e instrucciones de procesamiento, todos los cuales están indicados por una marca explicita. Las estructuras lógica y fisica deben encajar de manera adecuada: Los documentos XML se dividen en dos grupos, documentos bien formados y documentos válidos. [Gutierrez, 2001] Bien formados: Son todos los que cumplen las especificaciones del lenguaje respecto a las reglas sintácticas sin estar sujetos a unos elementos fijados en un DTD. De hecho los documentos XML deben tener una estructura jerárquica muy estricta y los documentos bien formados deben cumplirla. Válidos: Además de estar bien formados, siguen una estructura y una semántica determinada por un DTD: sus elementos y sobre todo la estructura jerárquica que define el DTD, además de los atributos, deben ajustarse a lo que el DTD dicte. Aquí se presenta un ejemplo muy sencillo: <?xml version= 11 l. O. II. encoding= 11 UTF-8. 11. standalone=. 11. yes. 11. ?>. <ficha> <nombre>Angel</nombre> <apellido>Barbero</apellido> <direccion>c/Ulises, 36</direccion> </ficha>. Figura 2.8. Ejemplo documento XML bien formado Lo primero que tenemos que observar es la primera línea. Con ella deben empezar todos los documentos XML, ya que es la que indica que lo que la sigue es XML .. Aunque es opcional, es recomendable incluirla. Puede tener varios atributos, algunos obligatorios y otros no:. version: Indica la versión de XML usada en el documento. Es obligatorio ponerlo, a no ser que sea un documento externo a otro que ya lo incluía. encoding: La forma en que se ha codificado el documento. Se puede poner cualquiera, y depende del parser el entender o no la codificación. Por defecto es UTF-8, aunque podrían ponerse otras, como UTF-16, US-ASCII, IS0-8859-1, etc. No es obligatorio salvo que sea un documento externo a otro principal. standalone: Indica si el documento va acompañado de un DTD ("no"), o no lo necesita ("yes"); en principio no hay porqué ponerlo, porque luego se indica el DTD si se necesita. La "declaración de tipo de documento" define qué tipo de documento estamos creando para ser procesado correctamente. Es decir, definimos que declaración de tipo de documento (DTD) valida y define los datos que contiene nuestro documento XML..

(21) 19 En ella se define el tipo de documento, y dónde encontrar la información sobre su Definición de Tipo de Documento, mediante: Un identificador público (PUBLIC): que hace referencia a dicha DTD. Identificador universal de recursos (URI): precedido de la palabra SYSTEM. <!DOCTYPE MESAJE SYSTEM "mesaje.dtd"> <!DOCTYPE HTML PUBLIC "-/ /W3C/ /DTD HTML 3.2 Final/ /EN"> <!DOCTYPE LABEL SYSTEM "http://azuaje.uloac.es/dtds/label.dtd">. Figura 2.9. Ejemplo de definición de DTD. 2.2.2.1 Documentos XML bien formados Un documento XML se dice que está bien formado si encaja con las especificaciones XML de producción, lo que implica: 2.2.2.1.1 Estructura jerárquica de elementos Los documentos X::ML deben seguir una estructura estrictamente jerárquica con lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente "incluida" en otra. Asimismo, los elementos con contenido, deben estar correctamente "cerrados". A continuación se muestra un ejemplo incorrecto y posteriormente otro ejemplo escrito correctamente.. <li>HTML <b> permite <i> esto <lb> </i>. <li>En XML la <b> estructura <i> es </i> jerárquica </b>.</li> Figura 2.1 O. Ejemplo de una estructura jerárquica incorrecta 2.2.2.1.2 Etiquetas vacías HTML permite elementos sin contenido. XML también, pero la etiqueta debe ser de la siguiente forma <elemento sin contenido/>. A continuación se muestra un ejemplo incorrecto y posteriormente otro correcto.. <li>Esto es HTML <br> en el que casi todo está permitido </li> <li>En XML, es <br/> más restrictivo.</li> Figura 2.11. Ejemplo de una etiqueta vacía incorrecta. 2.2.2.1.3 Un solo elemento raiz Los documentos XML sólo permiten un elemento raíz, de la que todos los demás sean parte. Es decir, la jerarquía de elemento de un documento XML bien formado sólo puede tener un elemento inicial. 2.2.2.1.4 Valores de atributos.

(22) 20 Los valores de atributos en XML siempre deben estar encerrados entre comillas simples (') o doble ("). En el siguiente ejemplo, la primera línea sería incorrecta en XML, no así la segunda:. J ~~3>~~~ t:ftf;L_~J " . .· -~ 1_.i"'. <a HREF=http://www.dis.ulpgc.es/>. /\~{i.~¡;;·fss~;;~;~. /fr --"'""" ("~~ <a HREF="http://www.dis.ulpgc.es/">. !§CAMPUS~. o EST ... DO i, DE ,:;:. t.... Figura 2.12. Ejemplos de definición de atributos. \. ME,.X!,co ~t, (}/~_#7. 2.2.2.1.S Tipos de letras, espacios en blanco El XML es sensible al tipo de letra que se utiliza, es decir, trata las mayúsculas y minúsculas como caracteres diferentes. Por lo tanto, los elementos definidos como "FICHA", "Ficha", "ficha" y "fiCha" serían elementos diferentes. Es un conjunto de caracteres denominados "espacios en blanco" que los procesadores XML tratan de forma diferente en el marcado XML. Estos caracteres son los ":espacios", tabuladores, retornos de carro y los saltos de línea. La especificación XML 1.0 permite el uso de esos "espacios en blanco" para hacer más legible el código, y en general son ignorados por los procesadores XML. En estos casos, sin embargo, los "espacios en blanco" resultan muy significativos, por ejemplo, para separar las palabras de un texto, o separa líneas de párrafos diferentes.. 2.2.2.1.6 Nombrando cosas Al utilizar XML, es necesario asignar nombres a las estructuras, tipos de elementos, entidades, elementos particulares, etc. En XML los nombres tienen algunas características en común. No se pueden crear nombres que empiecen con la cadena "xml", "xML", "XML" o cualquier otra variante. Las letras y rayas se pueden usar en cualquier parte del nombre. También se pueden incluir dígitos, guiones y caracteres de punto, pero no se puede empezar por ninguno de ellos. El resto de caracteres, como algunos símbolos, y espacios en blanco, no se pueden usar.. 2.2.2.1.7 Marcado y datos Las construcciones con etiquetas, referencias de entidad y declaraciones se denominan "marcas" .Éstas son las partes del documento que el procesador XML espera entender. El resto del documento que se encuentra entre las marcas son los datos que resultan entendibles por las personas. Es sencillo reconocer las marcas en un documento XML. Son aquellas porciones que empiezan con"<" y acaban con ">", o bien, en el caso de las referencias de entidad, empiezan por"&" y acaban con ";". 2.2.2.2 Tipos de Elementos.

Figure

Figura 2.15.  Ejemplo de un documento XML con la definicion de DTD incluida en el documento
Figura 2.19.  Estructura de expresiones FLWR
Figura 3.1. Arquitectura  SQL2XQUERY [Cartujano, 2002)
Figura 3.2. Arquitectura Agora [Manolescu, 2001]
+7

Referencias

Documento similar

El contar con el financiamiento institucional a través de las cátedras ha significado para los grupos de profesores, el poder centrarse en estudios sobre áreas de interés

E Clamades andaua sienpre sobre el caua- 11o de madera, y en poco tienpo fue tan lexos, que el no sabia en donde estaña; pero el tomo muy gran esfuergo en si, y pensó yendo assi

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

The tree representation obtained is used by this module to generate a set of rules (S g ) that represent the information to be translated and what structures inside the page will

Las nuevas posibilidades en el acceso, almacenamiento y utilización de la información han motivado una toma de conciencia sobre el valor de la información en el ámbito

En el capítulo 2: Descripción de las tecnologías para la solución, se describen las tecnologías utilizadas para la comunicación del mundo virtual con el resto

Descripción General: La misma tiene el objetivo serializar a xml los datos asociados a un atributo de un objeto de la base de datos y obtener estos datos a partir del mismo xml.

Proporcione esta nota de seguridad y las copias de la versión para pacientes junto con el documento Preguntas frecuentes sobre contraindicaciones y