180 likes | 398 Views
XML. XQuery. Indice. Introducción Estructura FLWOR Expresiones condicionales Cuantificadores existenciales Operadores y Funciones Conclusiones. Introducción.
E N D
XML XQuery
Indice • Introducción • Estructura • FLWOR • Expresiones condicionales • Cuantificadores existenciales • Operadores y Funciones • Conclusiones
Introducción • Xquery es un lenguaje de consultas diseñado para consultar colecciones de datos XML, así como también cualquier archivo que tenga la misma estructura que un XML. • Xquery es a XML como SQL es a una Base de Datos Relacional. • Permite la transformación de datos en su salida. • Xquery es recomendado por la W3C R desde 23 Enero del 2007.
Introducción • XQuery estáconstruido en base a expresionesXpath. • XQuery 1.0 y XPath 2.0 comparten • el mismomodelo de datos y soportan • las mismasfunciones y operaciones.
Introducción • Ejemplos de uso • Extraerinformaciónpara usar en un Web Service • Generarreportes • XQuery como alternativa a XLST: permite realizar transformaciones de datos en XML a otro tipo de representaciones, como HTML o PDF. • Buscardocumentos web para obtenerinformaciónrelevante
Estructura • Xml ejemplo: books.xml
Estructura • Reglasbasicas de sintaxis a tener en cuenta: • XQuery es case-sensitive • Los elementos, atributos y variables Xquery debensernombresvalidos para XML. • Un String en XQuery puedeestarmarcadoporcomillas simples o dobles. • Las Variables en XQuery se definen con el simbolo$seguido de sunombre, • ej: $books • Los comentarios en XQuery estandelimitadospor(: y :), • ej: (: XQuery Comment :)
Estructura • Funciones: • Xquery usafunciones para extraerinformaciónde los documentos XML. • La funcióndoc() es usada para abrir el archivo"books.xml" : • ej: doc("books.xml")
Estructura • Expresiones Path: • XQuery usaexpresionespath para navegar a travez de un documentoXML • La siguienteexpresionpath es usada para seleccionartodos los elementos“title” del archivo “books.xml”: • doc("books.xml")/bookstore/book/title • La consultamencionadaextraerá de nuestro XML: • <titlelang="en">EverydayItalian</title> <titlelang="en">Harry Potter</title> <titlelang="en">XQueryKickStart</title> <titlelang="en">Learning XML</title>
Estructura • Predicados: • XQuery usapredicados para limitar la imformaciónextraida de nuestro XML. • El siguientepredicadoesusado para seleccionartodoslos elementos“book” bajo el elemento “bookstore” los cualestienen un valor en el element “price” menora 30: • doc("books.xml")/bookstore/book [price<30] • La consultamencionadaextraerá de nuestro XML: • <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>
FLWOR • FLWOR es un acrónimopara "For, Let, Where, Order by, Return". • For vincula una o varias variables a cada nodo de la expresión. • Letvincula una variable al resultado completo de la expresión o sea sin iteración. • Where filtra las tuplas producidas por la cláusulas lety for, contiene una expresión que es evaluada para cada tupla. Si su evaluación es false esa tuplaes descartada. • Order Indica para un conjunto de información un orden de salida y va seguido de for. Por defecto de manera ascendente, si no es indica lo contrario, acorde con el tipo de datos que se esté evaluando. • ReturnFormatea la salida del documentos. Tiene múltiples utilidades, entre otras XML, HTML, PDF, etc.
FLWOR • Expresion Path: El siguientepredicadoesusado para seleccionartodos los elementos“title” bajo los elementos “book” queestanbajo el elemento “bookstore” los cualestienen un valor en el elemento “price” mayor a 30. • doc("books.xml")/bookstore/book[price>30]/title • Expresion FLWOR con exactamente la mismasalida: • for $x in doc("books.xml")/bookstore/book where $x/price>30 return $x/title • Salidapara ambos casos: • <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>
FLWOR • Con FLWOR se puedeordenar el resultado: for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title • La clausulaforseleccionatodos los elementos“book” bajo el element “bookstore” en una variable llamada$x. • La clausulawhereselecciona solo los elementos“book” con un elemento “price” cuyo valor es superior a 30. • La clausulaorder by define el orden, este sera dependiendo del elemento “title”. • La clausulareturnespecificaque sera retornado en la variable $X. En estecasoretornaloselemetos“title”. • La consulta antes mencionadaextraerá de nuestro XML: • <title lang="en">Learning XML</title> <title lang="en">XQuery Kick Start</title>
Expresiones condicionales • XQueryadmite IF-THEN-ELSE. Ej: for $x in doc("books.xml")/bookstore/book return if ($x/@category="CHILDREN")then <child>{data($x/title)}</child>else <adult>{data($x/title)}</adult> • La consultamencionadaextraerá de nuestro XML: • <adult>Everyday Italian</adult> <child>Harry Potter</child> <adult>Learning XML</adult> <adult>XQuery Kick Start</adult> • La etiquetadata() elimina en estecaso ,el titulo del elemento“title” en la salida.
Cuantificadores existenciales • Un cuantificador existencial empieza con un cuantificador SOMEo EVERY, seguido por una o mas clausulas IN que se usan para unir variables, seguido de la palabra reservada satisfies y una expresión de comparación o testeo. El retorno es siempre True or False.
Cuantificadores existenciales • Esta expresión retorna True si todos los elementos “book”tienen un atributo “category”(sin importar el valor de atributo.) • every$categ in /bookstore/book satisfies $categ/@category • Esta expresión retorna True si por lo menos uno de los elementos “book”tiene un elemento “Price”cuyo valor sea mayor a 49: • some $precio in /bookstore/book satisfies ($precio/price>49)
Operadores y Funciones • XQuerytiene una serie de funciones y operadores aritméticos para la recuperación de información: • Matemáticos: +, -, *, div(*), idiv(*), mod • Comparación: =, !=, <, >, <=, >=, not() • Secuencia: union (|), intersect, except • Redondeo: floor(), ceiling(), round() • Funciones de agrupación: count(), min(), max(), avg(), sum() • Funciones de cadena: concat(), string-length(), startswith(), ends-with(), substring(), string() • Uso general: distinct-values(), empty(), exits() • La división se indica con el operador div ya que el símbolo / es necesario para indicar rutas.
Xquery FIN Preguntas??