Introducción a XQuery con ejemplos.docx

Embed Size (px)

Citation preview

Introduccin a XQuery con ejemplos0. ndice de contenidos. 1. Entorno 2. Introduccin 3. Creacin y configuracin de la base de datos de ejemplo 4. Ejemplos 5. Conclusiones1. EntornoEste tutorial est escrito usando el siguiente entorno: Hardware: Porttil Mac Book Pro 17 (2,6 Ghz Intel Core i7, 8 GB DDR3) Sistema Operativo: Mac OS X Snow Leopard 10.6.4 XQuery 1.02. IntroduccinXQuery es un lenguaje de consulta que proporciona los medios para extraer y manipular informacin de cualquier fuente de datos que pueda ser representada en formato XML.Para su funcionamiento interno se apoya en XPath para poder acceder a la informacin contenida en nodos del documento XML. La otra utilidad fundamental de este lenguaje es que nos da la posibilidad de transformar un XML en otro distinto o incluso en otro formato. Un ejemplo muy tpico es tener una serie de datos en XML y generar un XHTML para que puedan ser mostrados en un navegador.En este tutorial vamos a empezar a gatear con el lenguaje y vamos a ver cmo recuperar informacin de un XML a travs de varios ejemplos.3. Creacin y configuracin de la base de datos de ejemploVamos a trabajar con XML. Por lo tanto lo que primero necesitamos es un fichero .XML con el siguiente contenido:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647XMLBeans, una forma de mapear un XML en objetos JavaAlejandroPrez GarcaXML25827Spring Security: haciendo uso de un servidor LDAP embebidoJos ManuelSnchez SurezSpring1996Mybatis con Maven y SpringRubnAguilera Daz-HerederoMybatis6998Trabajar con XML sabiendo lo mnimoRobertoCanales MoraXML34842Introduccin a Spring BatchMiguelArlandy RodrguezSpring1273

Almacenamos el fichero con el nombre que queramos (ej. tutorial_xquery.xml)Para implementar y probar los ejemplos contra esta base de datos vamos a hacer uso del editor BaseX que podis descargaraquEn mac, una vez descargado, descomprimimos el .zip y ejecutamos el fichero BaseX.app. Para poder hacer uso del fichero XML creado anteriormente tenemos que ir a las opciones de men Database > New y seleccionar el fichero XML.

Pulsamos en OK y ya tenemos la base de datos en XML preparada para seguir los ejemplos.4. EjemplosEn todos los ejemplo vamos a hacer referencia al XML de prueba haciendo uso de la funcin de XQuery fn:doc(nombre_basedatos). En nuestro caso, fn:doc(tutorial_query).Devolver todos los elementos que cuelgan de un nodo sin incluirloEn esta expresin utilizamos el * para indicar que queremos todos los elementos que cuelgan de un nodo pero que no queremos incluir el nodo mismo. Este sera el ejemplo para devolver la informacin de todos los tutoriales.

Devolver todos los elementos que cuelgan de un nodo incluyndoloPara esta expresin no hacemos uso del *. Tenemos que poner el path absoluto del nodo que queramos consultar. Este sera el ejemplo para devolver el ttulo de todos los tutoriales.

Una forma de acceder directamente a un nodo sin necesidad de escribir todo su path absoluto es con la notacin // seguida del nodo.

Devolver atributos ligados a un nodoCon esta expresin accedemos a los atributos que estn ligados a un nodo. Este sera el ejemplo para acceder a la informacin del ao de publicacin de cada tutorial.

Devolver elementos que cumplan una determinada condicinPodemos establecer una condicin en el atributo de un nodo para que solo se devuelvan los que cumplan con esa condicin. Este sera el ejemplo para devolver solo los tutoriales cuyo ao de publicacin sea menor que 2010.

Igualmente podemos establecer una condicin para que devuelva solo determinados nodos. Este sera el ejemplo para devolver solo los tutoriales que sean de la categora Mybatis.

Tambin podemos hacer estas condiciones todo lo complejas que necesitemos gracias a las clusulas and y or. Este sera el ejemplo que devuelve los tutoriales que sean de la categora XML y estn escritos en el anio 2007

Podemos utilizar otros operandos como: !=, , >=Acceso directo a un nodo de una listaSi conocemos el orden de los elementos de una XML puede ser til poder acceder directamente a uno de ellos por posicin. Este sera el ejemplo que nos devuelve la informacin del tutorial que se encuentra en la posicin 5 de la lista de tutoriales.

Bsquedas textualesPodemos realizar consultas que incluyan bsquedas textuales sobre un elemento en concreto. Este sera el ejemplo que devuelve los tutoriales donde la palabra Maven est contenida dentro de su ttulo.

Devolver el nodo padre de un elementoPara devolver el nodo padre de un elemento utilizamos la notacin ... Este sera el ejemplo para devolver la informacin del tutorial donde el nombre del autor sea Roberto.

5. ConclusionesHasta aqu hemos visto como podemos realizar todo tipo de consultas sobre datos estructurados en XML. En posteriores tutoriales veremos como transformar el XML en otro que se ajuste a nuestras necesidades y ms utilidades de este lenguaje.Cualquier duda o sugerencia en la zona de comentarios.Saludos.XML

XQuery 1.0: Un Lenguaje de Consulta XML (Segunda Edicin)Recomendacin del W3C 14 de diciembre de 2010(corregido errores de enlace 03 de enero 2011, revisada 07 de septiembre 2015)Esta versin:http://www.w3.org/TR/2010/REC-xquery-20101214/Ultima versin:http://www.w3.org/TR/xquery/Versin anterior:http://www.w3.org/TR/2009/PER-xquery-20090421/,http://www.w3.org/TR/2007/REC-xquery-20070123/Editores:Scott Boag (XSL WG), IBM ResearchDon Chamberlin (XML Query WG)Mara F. Fernndez (XML Query WG), AT & T Labs deDaniela Florescu (XML Query WG), OracleJonathan Robie (XML Query WG),RedHat,a travshttp://www.ibiblio.org/jwrobie/Jrme Simon (XML Query WG), IBM TJ Watson Research CenterPor favor, consulte lafe de erratasde este documento, que puede incluir algunas correcciones normativas.Ver tambintraducciones.Este documento tambin est disponible en estos formatos no normativos:XMLylas marcas de cambio relativo a la primeraedicin.Derechos de autor 2010W3C(MIT,ERCIM,Keio), Todos los Derechos Reservados.W3Cderesponsabilidad,marcasyuso de documentosse aplican las reglas.Nota:. Este prrafo es informativoEste documento no est actualmente mantiene.Este documento sigue estando disponible en la pgina web de Informes Tcnicos de W3C para referencia y uso por las partes interesadas.Se recomienda a los lectores que no ms lejos de mantenimiento (incluyendo la correccin de los errores reportados) est prevista para este documento.Se anima a los lectores interesados en la versin ms reciente de la especificacin XQuery para referirse ahttp://www.w3.org/TR/xquery-3/.

AbstractoXML es un lenguaje de marcas verstil, capaz de etiquetar el contenido de informacin de diversas fuentes de datos, incluyendo documentos estructurados y semi-estructurados, bases de datos relacionales y repositorios de objetos.Un lenguaje de consulta que utiliza la estructura de XML inteligente puede expresar consultas a travs de todos estos tipos de datos, si almacena fsicamente en XML o visto como XML a travs de middleware.Esta especificacin describe un lenguaje de consulta llamado XQuery, que est diseado para ser ampliamente aplicable a travs de muchos tipos de fuentes de datos XML.Estado de este documentoEsta seccin describe el estado de este documento en el momento de su publicacin.Otros documentos pueden reemplazar este documento.Una lista de las publicaciones actuales del W3C y la ltima revisin de este informe tcnico se puede encontrar en elW3C ndice de informes tcnicosen http://www.w3.org/TR/.Se trata de un documento en un conjunto de ocho documentos que se estn progresaron a Recomendacin Editada conjuntamente (XPath 2.0, XQuery 1.0, XQueryX 1.0, XSLT 2.0, Data Model (XDM), Funciones y Operadores, semntica formal, la serializacin).Este documento, publicado el 14 de diciembre de 2010, es un EditadoRecomendacindel W3C.Reemplaza la Recomendacin del W3C anterior de 23 de enero de 2007. Esta segunda edicin no es una nueva versin de esta especificacin;su propsito es aclarar una serie de cuestiones que se han hecho evidentes desde que se public la primera edicin.Todas estas aclaraciones (salvo correcciones editoriales triviales) han sido publicados en un documento separado de erratas, y publicado en unaPropuesta de Recomendacin Editadaen abril de 2009. Los cambios se resumen en un apndice.El 3 de enero de 2011, la publicacin original de esta Recomendacin fue reemplazado por esta versin en la que se han restaurado dos anclas HTML que se omitieron por la publicacin original;el Equipo W3C ha conservado una copia de la publicacin original.Este documentoha sido desarrollado por el W3CXML Grupo de Trabajo deconsulta,que es parte de laActividadXML.Este documento ha sido revisado por miembros del W3C, por desarrolladores de software, y por otros grupos del W3C y las partes interesadas, y est avalado por el Director como una Recomendacin del W3C.Es un documento estable y puede ser utilizado como material de referencia o de otro documento citado.El papel del W3C al hacer la Recomendacin es llamar la atencin sobre la especificacin y promover su amplio despliegue.Esto mejora la funcionalidad e interoperabilidad de la Web.Este documento incorpora los cambios realizados en contra de laRecomendacinde 23 de enero de 2007 que resuelve todas las erratas conocida en la fecha de publicacin.Cambios a este documento desde la primera edicin se detallan en loscambios K desde la primeraedicin.Este documento sustituye a laprimeraedicin.Un informe de aplicacin se encuentra disponible enhttp://www.w3.org/XML/Query/test-suite/XQTSReport.html.Este documento fue elaborado porun grupoque opera bajo el05 de febrero 2004 Poltica de Patentes delW3C.W3C mantiene unalista pblica de cualquier divulgacin de patentesrealizadas en relacin con las entregas delgrupo;esa pgina tambin incluyeinstrucciones para la divulgacin de una patente.Un individuo que tiene conocimiento real de una patente que el individuo cree contieneReclamacin (s) esencialdebe revelar la informacin de acuerdo conel artculo 6 de la Poltica de Patentes delW3C.Tabla de contenidos1Introduccin2Conceptos bsicos2.1Contexto Expresin2.1.1Contexto esttico2.1.2Contexto Dinmico2.2Modelo de Procesamiento2.2.1Datos Generacin Modelo2.2.2Esquema de Importacin Procesamiento2.2.3Procesamiento de Expresin2.2.3.1esttica Fase de Anlisis2.2.3.2Fase de Evaluacin Dinmica2.2 .4serializacin2.2.5Restricciones Consistencia2.3Tratamiento de errores2.3.1Tipos de errores2.3.2identificar y reportar errores2.3.3Manejo de errores dinmicos2.3.4Errores y Optimizacin2.4Conceptos2.4.1Documento Solicitar2.4.2atomizacin2.4.3Eficaz Boolean Valor2.4.4Fuentes de entrada2.4.5URI Literales2.5Tipos2.5.1Tipos predefinidos esquema2.5.2Typed Valor y Valor alfanumrico2.5.3Sintaxis SequenceType2.5.4SequenceType Coincidencia2.5.4.1Coincidencia de un SequenceType y un valor de2,5. 4.2Coincidencia de un ItemType y un artculo2.5.4.3Elemento de prueba2.5.4.4Prueba elemento de esquema2.5.4.5Atributo de prueba2.5.4.6esquema de atributos de prueba2.6Comentarios3Expresiones3.1Expresiones primarias3.1.1Literales3.1.2Referencias variables3.1.3parentizadas Expresiones3.1.4Contexto Expresin artculo3.1.5Funcin llamadas3.2Camino Expresiones de3.2.1Pasos3.2.1.1Ejes3.2.1.2Nodo Pruebas3.2.2Los predicados3.2.3Sintaxis sin abreviar3.2.4Sintaxis abreviada3.3Secuencia de Expresiones de3.3.1Construir secuencias3.3 0.2Filtrar Expresiones3.3.3La combinacin de nodo Secuencias3,4expresiones aritmticas3.5Comparacin Expresiones3.5.1Las comparaciones de valor3.5.2Comparaciones generales3.5.3Las comparaciones de nodo3.6Lgica Expresiones3.7Constructores3.7.1directa Elemento Constructores3.7.1.1Atributos3.7.1.2Espacio de nombres Declaracin Atributos3.7.1.3Contenido3.7.1.4Lmites Whitespace3.7.2Otros constructores directos3.7.3calculadas Constructores3.7.3.1computarizada Element Constructores3.7.3.2Constructores atributo calculado3.7.3.3del documento Nodos Constructores3.7.3.4texto del nodo Constructores3.7.3.5Computarizada Constructores Instruccin Procesamiento3.7.3.6calculadas Constructores Comentar3.7.4En-alcance espacios de nombres de un Construido Element3.8FLWOR Expresiones3.8.1Para y dejar que las Clusulas3.8.2Cuando la clusula3.8.3Orden Por y volver Clusulas3.8.4Ejemplo3.9pedimos y desordenada Expresiones3.10Condicional Expresiones3,11cuantificada Expresiones3.12Expresiones sobre SequenceTypes3.12.1Instancia de3.12.2Typeswitch3.12.3moldeada3.12.4Castable3.12.5Funciones Constructor3.12.6Treat3.13Validar Expresiones3.14Extensin Expresiones4Mdulos y prlogos4.1Versin Declaracin4.2Declaracin Mdulo4.3Declaracin de Fronteras en el espacio4.4predeterminado Declaracin Colacin4.5Base Declaracin URI4.6Declaracin de construccin4.7pedidos Declaracin Mode4.8Vaciar Declaracin Solicitar4.9Copy-espacios de nombres Declaracin4.10Esquema de Importacin4.11Mdulo de importacin4.12Espacio de nombres Declaracin4.13defecto Espacio de nombres Declaracin4.14declaracin de variables4,15Declaracin de funciones4.16Opcin Declaracin5Conformidad5.1Mnimos Conformidad5.2Caractersticas opcionales5.2.1Esquema de Importacin de funciones5.2.2Esquema de validacin de funciones5.2.3Esttica Funcin Typing5.2.3.1estticas Extensiones Typing5.2.4Completo Eje Funcin5.2.5Mdulo Caracterstica5.2. 6serializacin de funciones5.3Data Model Conformidad5.4Extensiones de sintaxisApndicesUnXQuery GramticaA.1EBNFA.1.1notacinA.1.2Restricciones extra-gramaticalesA.1.3Gramtica NotasA.2estructura lxicaA.2.1Terminal SmbolosA.2.2Terminal DelimitacinA.2.3Manejo de Fin de LneaA.2.3 0.1XML 1.0 Fin de Lnea ManejoA.2.3.2XML 1.1 Fin de Lnea ManejoA.2.4Reglas espacios en blancoA.2.4.1defecto Whitespace ManejoA.2.4.2explcita Manipulacin WhitespaceA.3Nombres de funcin ReservadosA.4Precedencia OrdenBTipo de Promocin y Operador MapeoB.1Tipo PromocinB.2Operador CartografaCContexto ComponentesC.1esttico Contexto ComponentesC.2Contexto Dinmico ComponentesC.3serializacin ParmetrosDArtculos definido por la implementacinEReferenciasE. 1Referencias NormativasE.2Referencias para no normativosE.3Fondo materialFError CondicionesGLa aplicacin / xquery Tipo de soporteG.1IntroduccinG.2Registro de MIME Tipo de soporte application / XQueryG.2.1Consideraciones de interoperabilidadG.2.2Publicado especificacinG.2.3Las aplicaciones que utilizan este tipo de mediosG.2.4extensiones de archivoG.2.5Destinado UsoG.2.6Autor / Cambio controladorG.3Codificacin de consideracionesG.4Reconociendo XQuery ArchivosG.5Charset defecto ReglasG.6Consideraciones de SeguridadHGlosario( no normativo)IEjemplo Aplicaciones(no normativo)I.1uneI.2AgrupacinI.3Consultas en SecuenciaI.4recursiva TransformacionesI.5Seleccin Distinto CombinacionesJGua para el Manejo de los mdulos(no normativo)J. 1Mdulo URIJ.2mltiples mdulos con el mismo mdulo URIJ.3Ubicacin URIJ.4CiclosKCambios desde la Primera Edicin(no normativo)

1. IntroduccinComo se almacenan cantidades crecientes de informacin, intercambiada, y presenta utilizando XML, la capacidad de consultar de forma inteligente las fuentes de datos XML se vuelve cada vez ms importante.Una de las grandes fortalezas de XML es su flexibilidad en la representacin de diferentes tipos de informacin de diversas fuentes.Para aprovechar esta flexibilidad, un lenguaje de consulta XML debe proporcionar caractersticas para la recuperacin e interpretacin de la informacin de estas fuentes diversas.XQuery est diseado para satisfacer las necesidades identificadas por el Grupo W3C XML de consulta de Trabajo[XML Query 1.0 Requisitos]y los casos de uso en[XML Query Casos deUso].Est diseado para ser un lenguaje en el que las consultas son concisos y de fcil comprensin.Tambin es lo suficientemente flexible como para consultar un amplio espectro de fuentes de informacin XML, incluyendo ambas bases de datos y documentos.El grupo de trabajo de consulta ha identificado un requisito tanto para una sintaxis de consulta no XML y una sintaxis de consulta basado en XML.XQuery est diseado para cumplir la primera de estas exigencias.XQuery se deriva de un lenguaje de consulta XML llamado Quilt[Quilt], que a su vez tom prestado caractersticas de varios otros idiomas, incluyendo XPath 1.0[XPath1.0],XQL[XQL],XML-QL[XML-QL], SQL[SQL]y OQL[ODMG].[Definicin:XQuery opera sobre la, estructura lgica abstracta de un documento XML, en lugar de su sintaxis superficie.Esta estructura lgica, conocido como elmodelo dedatos,se define en[XQuery 1.0 y XPath 2.0 Modelo de Datos (SecondEdition)].]XQuery Versin 1.0 es una extensin de XPath versin 2.0.Cualquier expresin que es sintcticamente vlida y ejecuta con xito tanto en XPath 2.0 y XQuery 1.0 devolver el mismo resultado en ambos idiomas.Dado que estas lenguas estn tan estrechamente relacionados, sus gramticas y descripciones de lenguaje se generan a partir de una fuente comn para garantizar la coherencia, y los editores de estas especificaciones colaboran estrechamente.XQuery tambin depende y est estrechamente relacionado con las siguientes especificaciones: [XQuery 1.0 y XPath 2.0 Modelo de Datos (Segunda edicin)]define el modelo de datos que subyace a todas las expresiones XQuery. [XQuery 1.0 y XPath 2.0 Semntica Formal (Segunda edicin)]define la semntica esttica de XQuery y tambin contiene una descripcin formal, pero no normativa de la semntica dinmicos que pueden ser tiles para los ejecutores y otros que requieren una definicin formal. El sistema de tipo de XQuery se basa en[EsquemaXML]. La biblioteca de funciones incorporadas y los operadores apoyados por XQuery se definen en[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segundaedicin)]. Uno de los requisitos en[XML Query 1.0 Requisitos]es que un lenguaje de consulta XML tiene tanto una sintaxis legible y una sintaxis basada en XML.La sintaxis basada en XML para XQuery se describe en[Sintaxis XML para XQuery 1.0 (XQueryX) (Segundaedicin)].Este documento especifica una gramtica para XQuery, utilizando la misma notacin EBNF bsico utilizado en[XML1.0].A menos que se indique lo contrario (verestructura lxicaA.2),espacio en blanco no es significativa enlasconsultas.Producciones gramaticales se introducen junto con las caractersticas que se describen, y una gramtica completa tambin se presenta en el apndice[AXQueryGramtica].El apndice es la versin normativa.En las producciones gramaticales en este documento, se subrayan smbolos nombre y el texto literal es entre comillas dobles.Por ejemplo, la siguiente produccin describe la sintaxis de una llamada de funcin:[93]FunctionCall:: =QName"("(ExprSingle(","ExprSingle) *)? ")"

La produccin debe leerse de la siguiente manera: Una llamada a la funcin consiste en un QName seguido de un parntesis de apertura.El parntesis de apertura es seguida por una lista de argumentos opcionales.La lista de argumentos (si est presente) se compone de una o ms expresiones, separadas por comas.La lista de argumentos opcional es seguido por un primer parntesis.Ciertos aspectos del procesamiento del lenguaje se describen en esta memoria descriptiva, comodefinido por la implementacinodependiente de laimplementacin. [Definicin:Implementacin definidosindica un aspecto que puede diferir entre las implementaciones, sino que debe ser especificado por el implementador para cada aplicacin en particular.] [Definicin:Implementacin dependienteindica un aspecto que puede diferir entre las implementaciones, no est especificado por este o cualquier especificacin W3C, y no est obligado a especificar por el implementador para cualquier aplicacin en particular.]Este documento define normativamente la semntica dinmica de XQuery.La semntica de XQuery estticas estn normativamente definen en[XQuery 1.0 y XPath 2.0 Semntica Formal (Segundaedicin)].En este documento, se proporcionan ejemplos y materiales etiquetados como "Nota" con fines explicativos y no normativo.2 Conceptos bsicosEl bloque bsico de XQuery edificio es laexpresin, que es una cadena de[Unicode]personajes (la versin de Unicode que se utilizar estdefinido por laimplementacin.)El lenguaje proporciona varios tipos de expresiones que pueden ser construidos a partir de palabras clave, smbolos, y operandos.En general, los operandos de una expresin son otras expresiones.XQuery permite expresiones para anidar con plena generalidad.(Sin embargo, a diferencia de un lenguaje funcional puro, que no permite la sustitucin de variables, si la declaracin de variables contiene la construccin de nuevos nodos.)Nota:Esta especificacin no contiene supuestos o requisitos relacionados con el conjunto de codificacin de caracteres de cadenas de[Unicode]caracteres.Como XML, XQuery es un lenguaje de maysculas y minsculas.Palabras clave en XQuery utilizan caracteres en minsculas y no estn reservados, es decir, los nombres de expresiones XQuery pueden ser los mismos que palabras clave del lenguaje, a excepcin de ciertas funciones nombres sin prefijo enumerados enA.3 nombres reservados defuncin.[Definicin:En elmodelo dedatos,elvalores siempre unasecuencia.][Definicin:Unasecuenciaes una coleccin ordenada de cero o mselementos.][Definicin:Unelementoes o bien unvalor atmicoo unnodo.][Definicin:Unvalor atmicoes un valor en el espacio de valor de untipoatmico,como se define en[EsquemaXML]][.Definicin: Unnodoes una instancia de una de lasclases de nodosdefinidos en[XQuery 1.0 y XPath 2.0 Modelo de Datos (SegundaEdition)].]Cada nodo tiene una nicaidentidad denodo,unvalorescrito,y unvalor decadena.Adems, algunos nodos tienen unnombre.Elvalor escritode un nodo es una secuencia de cero o ms valores atmicos.Elvalor de cadenade un nodo es un valor de tipoxs:string.Elnombrede un nodo es un valor de tipoxs:QName.[Definicin:En ciertas situaciones se dice un valor a serindefinido(por ejemplo, el valor del elemento de contexto, o el valor tecleado de un nodo de elemento).Este trmino indica que la propiedad en cuestin no tiene ningn valor y que cualquier intento de utilizar sus resultados de valor en un error.][Definicin:Una secuencia que contiene exactamente un elemento se llama unsingleton.] Un elemento es idntica a una secuencia singleton que contiene ese elemento.Las secuencias no estn anidados, por ejemplo, la combinacin de los valores 1, (2, 3), y () en una nica secuencia de resultados en la secuencia (1, 2, 3).[Definicin:Una secuencia que contiene cero objetos se denominasecuenciavaca.][Definicin:El trminoinstancia XDMse utiliza, como sinnimo del trminovalor, para denotar una secuencia ilimitada denodosy / ovalores atmicosen elmodelo dedatos.]Nombres en XQuery se llamanQNames, y se ajustan a la sintaxis en[XMLNames].[Definicin:Lxicamente, unQNameconsiste en un prefijo de espacio opcional y un nombre local.Si el prefijo de espacio de nombres est presente, se separa del nombre local de dos puntos] Un QName lxica se puede convertir en una.QName ampliadopor la resolucin de su prefijo de espacio de nombres a un espacio de nombres URI, utilizando losespacios de nombres estticamente conocidos[err:XPST0081].[Definicin:UnQName ampliadoconsiste en un espacio de nombres URI opcional y un nombre local.Un QName ampliado tambin conserva su prefijo de espacio original (si los hay), para facilitar la fundicin ampliado QName en una cadena] El espacio de nombres valor URI se normaliz el espacio en blanco de acuerdo a las reglas para los.Xs: anyURIescriba[esquemaXML].Dos QNames expandidos son iguales si sus URI de espacio de nombres son iguales y sus nombres locales son iguales (aunque sus prefijos de espacio de nombres no son iguales).URI de espacio de nombres y nombres locales se comparan en una base punto de cdigo, sin mayor normalizacin.Algunos prefijos de espacio de nombres se declarar con anterioridad por XQuery y obligados a URI de espacio de nombres fijos.Estos prefijos de espacio de nombres son los siguientes: xml = http://www.w3.org/XML/1998/namespace xs = http://www.w3.org/2001/XMLSchema xsi = http://www.w3.org/2001/XMLSchema-instance fn = http://www.w3.org/2005/xpath-functions locales = http://www.w3.org/2005/xquery-local-functions(ver4.15 Declaracin defunciones.)Adems de los prefijos en la lista anterior, este documento se utiliza el prefijoerrpara representar el espacio de nombres URIhttp://www.w3.org/2005/xqt-errors(ver2.3.2 La identificacin y presentacin de informes deerrores).Este prefijo de espacio de nombres no es declarar con anterioridad y su uso en este documento no es normativo.Nodos elemento tienen una propiedad llamadaespacios de nombres consideradas en elestudio.[Definicin:Elen-alcance espacios de nombrespropiedad de un nodo de elemento es un conjunto deenlaces de espacio denombres,cada uno de los cuales asocia un prefijo de espacio de nombres con un URI, definiendo as el conjunto de prefijos de espacio de nombres que estn disponibles para la interpretacin QNames dentro del alcance del elemento .Para un elemento dado, un espacio de nombres de unin puede tener un prefijo vaco;el URI de esta unin es el espacio de nombres de espacio de nombres predeterminado dentro del alcance del elemento.]Nota:En[XPath1.0],los espacios de nombres consideradas en el estudio de un nodo elemento estn representados por una coleccin denodos espacio de nombresdispuestos en uneje de espacio denombres,que es opcional y en desuso en[XML Path Language (XPath) 2.0 (Segundaedicin)].XQuery no soporta el eje de espacio de nombres y no representa las consolidaciones de espacio de nombres en forma de nodos.Sin embargo, en otras especificaciones como[XSLT 2.0 y XQuery 1.0 serializacin (Segunda edicin)]se refiere a los nodos de espacio de nombres, estos nodos se pueden sintetizar a partir de los espacios de nombres consideradas en el estudio de un nodo elemento mediante la interpretacin de cada unin como un nodo espacio de nombres de espacio de nombres.[Definicin:Dentro de esta especificacin, el trminoURIse refiere a un identificador de recursos universal segn se define en[RFC3986]y ampliado en[RFC3987]con el nuevo nombreIRI.] El trmino URI se ha mantenido en la preferencia al IRI para evitar la introduccin de nuevos nombres para conceptos tales como "URI base" que se definen o se hace referencia en toda la familia de especificaciones XML.Contexto 2.1 Expresin[Definicin:Elcontexto de la expresinde una expresin dada consiste en toda la informacin que puede afectar el resultado de la expresin.] Esta informacin se organiza en dos categoras llamaron elcontexto estticoy elcontextodinmico.2.1.1 Contexto Esttico[Definicin:Elcontexto estticode expresin es la informacin que est disponible durante el anlisis esttico de la expresin, antes de su evaluacin.] Esta informacin puede ser usada para decidir si la expresin contiene unerroresttico.Si el anlisis de una expresin depende de algn componente delcontexto estticoque no se ha asignado un valor, unerror estticose eleva[err:XPST0001].Los componentes individuales de lacontexto estticose resumen a continuacin.Las normas que rigen el alcance y la inicializacin de estos componentes se pueden encontrar encomponentes C.1 ContextoEsttico. [Definicin:.Modo de compatibilidad 1.0 XPathEste componente debe ser establecido por todos los lenguajes principales que incluyen XPath 2.0 como subconjunto, indicando si las reglas para la compatibilidad con XPath 1.0 estn en vigor.XQuery establece el valor de este componente afalsa.] [Definicin:.Espacios de nombres estticamente conocidosEste es un conjunto de (prefijo, URI) pares que definen todos los espacios de nombres que se conocen durante el procesamiento esttico de una expresin dada.] El valor URI se normaliz el espacio en blanco de acuerdo a las normas de losxs: anyURIescriba[esquemaXML].Tenga en cuenta la diferencia entrelos espacios de nombres consideradas en elestudio, que es una propiedad dinmica de un nodo elemento, ylos espacios de nombres estticamenteconocidos,que es una propiedad esttica de una expresin.Algunos espacios de nombres estn predefinidos;espacios de nombres adicionales se pueden aadir a los espacios de nombres estticamente conocidos porlas declaraciones de espacio de nombresen unprlogoyatributos de declaracin de espacio de nombresenconstructores de elementosdirectos. [Definicin:.Por defecto espacio de nombres elemento / TipoEste es un espacio de nombres URI o "ninguno".El espacio de nombres URI, si existe, se utiliza para cualquier QName sin prefijo que aparece en una posicin en la que se espera un nombre de elemento o escribe] El valor URI se normaliz el espacio en blanco de acuerdo a las reglas para los.Xs: anyURIescriba[esquemaXML]. [Definicin:.Por defecto la funcin de espacio de nombresSe trata de un espacio de nombres URI o "ninguno".El espacio de nombres URI, si existe, se utiliza para cualquier QName sin prefijo que aparece en una posicin en la que se espera un nombre de funcin] El valor URI se normaliz el espacio en blanco de acuerdo a las reglas para los.Xs: anyURIescriba[esquemaXML]. [Definicin:.En-alcance definiciones de esquemaEste es un trmino genrico para todas las declaraciones de elementos, atributos declaraciones y definiciones de tipo de esquema que estn en su alcance durante el procesamiento de una expresin.] Incluye las tres partes siguientes: [Definicin:tipos incluidas en el esquema.Cada tipo de definicin de esquema se identifica bien por unQName ampliado(para untipo connombre)o por undependiente de la implementacinidentificador de tipo (por untipoannimo).El en-alcance tipos de esquema incluyen los tipos de esquemas predefinidos que se describen en2.5.1 Tipos predefinidos deesquema.Si lafuncin de importacin de esquemase apoya, en mbito tipos de esquema tambin incluyen todas las definiciones de tipo que se encuentran en esquemasimportados.] [Definicin:.Declaraciones de elementos consideradas en el estudioCada declaracin de elemento se identifica bien por unQName ampliado(para una declaracin de elemento de nivel superior) o por undependiente de la implementacinidentificador elemento (para una declaracin de elemento local).Si lacaracterstica de esquema de importacines el apoyo, dentro del alcance declaraciones de elementos incluyen todas las declaraciones de elementos que se encuentran en esquemasimportados.]Una declaracin de elemento incluye informacin acerca del elemento degrupo de sustitucinde afiliados.[Definicin:grupos de sustitucinse definen en[XML Schema]Parte 1, Seccin 2.2.2.2.Informalmente, el grupo de sustitucin a cargo de un elemento dado (llamado elelemento decabeza)est formado por el conjunto de elementos que pueden ser sustituidos para el elemento de cabeza sin afectar el resultado de la validacin del esquema.] [Definicin:.Declaraciones de atributos consideradas en el estudioCada declaracin de atributo se identifica bien por unQName ampliado(para una declaracin de atributo de nivel superior) o por undependiente de la implementacinidentificador de atributo (para una declaracin de atributo local).Si lacaracterstica de esquema de importacines el apoyo, dentro del alcance declaraciones de atributos incluyen todas las declaraciones de atributos que se encuentran en esquemasimportados.] [Definicin:.Consideradas en el estudio de variablesSe trata de un conjunto de (ampliado QName, tipo) pares.Define el conjunto de variables que estn disponibles para la referencia dentro de una expresin.ElQName ampliadoes el nombre de la variable, y el tipo es eltipo estticode la variable.]Las declaraciones de variables en unPrologse aaden alas variables consideradas en elestudio.Una expresin que se une una variable (como unlet,para,algunaotodasde expresin) extiende lasvariables que estn dentro del alcancede sus subexpresiones con la nueva variable ligada y su tipo .Dentro de unadeclaracin de lafuncin,lasvariables de alcancese extienden por los nombres y tipos de losparmetros de lafuncin.El tipo esttico de una variable puede ser declarada ya sea en una consulta o (si elFeature tipos estticosest habilitado) inferirse por las reglas de inferencia de tipo estticas como se describe en[XQuery 1.0 y XPath 2.0 Semntica Formal (Segundaedicin)]. [Definicin:.Elemento de contexto tipo estticoEste componente define eltipo estticodel elemento de contexto dentro del alcance de una expresin dada.] [Definicin:.Firmas de funcinEste componente define el conjunto de funciones que estn disponibles para ser llamado desde dentro de una expresin.Cada funcin est identificada por suampliado QNamey su aridad (nmero de parmetros).] Adems del nombre y aridad, cada firma funcin especifica lostipos estticosde los parmetros de la funcin y resultado.Lasfirmas de funcinincluyen las firmas defuncionesconstructoras,que se discuten en3.12.5 FuncionesConstructor. [Definicin:.Colaciones estticamente conocidosEsta es unaaplicacin definida por elconjunto de pares (URI, cotejo).En l se definen los nombres de las colaciones que estn disponibles para su uso en procesamiento deconsultas yexpresiones] [.Definicin: Unacolacines una especificacin de la manera en la que se comparan las cadenas y URI y, por extensin, ordenada.Para una definicin ms completa de intercalacin, consulte[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segundaedicin)].] [Definicin:.Colacin por defectoEsto identifica una de las colaciones encolaciones estticamente conocidoscomo la colacin para ser utilizado por las funciones y operadores de comparacin y los valores de tipo de ordenarxs: stringyxs: anyURI(y tipos derivados de ellos) cuando no explcita se especifica la intercalacin.] [Definicin:.El modo de construccinEl modo de construccin gobierna el comportamiento de los elementos y nodos documento constructores.Si el modo de construccin espreservar, el tipo de un nodo elemento construido esxs:anyType,y todos los nodos de elementos y atributos copiados durante la construccin nodo de conservar sus tipos originales.Si el modo de construccin eslatira, el tipo de un nodo elemento construido esxs: sintipo;todos los nodos de elementos copiados durante la construccin nodo de recibir el tipoxs: sintipo,y todos los nodos de atributos copiados durante la construccin nodo de recibir el tipoxs:untypedAtomic.] [Definicin:.Ordenando modo demodo de Orden, que tiene el valor deordenadaodesordenada, afecta el orden de la secuencia de resultados devuelto por ciertasexpresiones deruta,sindicales,cruzan, ysalvoexpresiones y expresiones FLWOR que no tienen ningunaorden porclusula.] Detalles se proporcionan en las descripciones de estas expresiones. [Definicin:.Orden por defecto para las secuencias vacasEste componente controla el procesamiento de secuencias vacas yNaNvalora como pedir las llaves en unorden porclusula en una expresin FLWOR, como se describe en3.8.3 clusulas ORDER BY yRetorno.]Su valor puede ser msomenos. [Definicin:.La poltica de lmitesespacio-Estecomponente controla el procesamiento deespacios en blanco fronteraporconstructores de elementosdirectos,como se describe en3.7.1.4 Lmites espacios enblanco.]Su valor se puede preservarotira. [Definicin:.El modo de copia-namespacesEste componente controla los enlaces de espacio de nombres que se asignan cuando un nodo de elemento existente se copia por un constructor de elemento, como se describe en3.7.1 directa Elemento deconstructores.Su valor consiste en dos partes:preservarosin conservaryheredarono-heredan.] [Definicin:.Base URIEsto es un URI absoluto, que se utiliza cuando es necesario en la resolucin de URIs relativos (por ejemplo, por elfn: resolver-urifuncin.)] El valor URI se normaliz el espacio en blanco de acuerdo a las normas de losxs: anyURIescriba[esquemaXML]. [Definicin:.Documentos estticamente conocidosEste es un mapeo de las cadenas sobre tipos.La cadena representa el URI absoluta de un recurso que es potencialmente disponible utilizando elfn: docfuncin.El tipo es eltipo estticode una llamada afn: doccon el URI dado como argumento literal.] Si el argumento defn: doces una cadena literal que no est presente enlos documentos estticamenteconocidos,entonces eltipo estticodefn: docesdocumento-node()?.Nota:El propsito de losdocumentos estticamente conocidoses el de proporcionar informacin de tipo esttico, no para determinar qu documentos estn disponibles.Un URI no tiene por qu encontrarse en losdocumentos estticamente conocidospara acceder usandofn:doc. [Definicin:.Colecciones estticamente conocidosEste es un mapeo de las cadenas sobre tipos.La cadena representa el URI absoluta de un recurso que es potencialmente disponible utilizando elfn: Coleccinfuncin.El tipo es el tipo de la secuencia de nodos que resultaran de llamar alfn:coleccin.Funcin con este URI como argumento] Si el argumento defn: coleccines una cadena literal que no est presente encolecciones estticamenteconocidos,entonces eltipo estticodefn: coleccinesnodo ()*.Nota:El propsito de lascolecciones estticamente conocidoses el de proporcionar informacin de tipo esttico, no para determinar qu colecciones estn disponibles.Un URI no tiene por qu encontrarse en lascolecciones estticamente conocidospara acceder usandofn:coleccin. [Definicin:.Estticamente conocido tipo de coleccin predeterminadaEste es el tipo de la secuencia de nodos que resultaran de llamar alfn:coleccin.Funcin sin argumentos] A menos inicializado a algn otro valor por una aplicacin, el valor de lacoleccin predeterminada estticamente conocido tipoesnode ()*.2.1.2 Contexto Dinmico[Definicin:Elcontexto dinmicode una expresin se define como informacin que est disponible en el momento se evala la expresin.] Si la evaluacin de una expresin se basa en alguna parte delcontexto dinmicoque no se ha asignado un valor, unerror dinmicoes planteado[err:XPDY0002].Los componentes individuales delcontexto dinmicose resumen a continuacin.Otras normas que rigen la semntica de estos componentes se pueden encontrar enComponentes Contexto C.2dinmicos.Elcontexto dinmicoconsiste en todos los componentes delcontextoesttico,y los componentes adicionales que se enumeran a continuacin.[Definicin:Los tres primeros componentes delcontexto dinmico(tema contexto, la posicin contextual y el tamao contextual) se llama elenfoquede la expresin.] El enfoque permite que el procesador para realizar un seguimiento de los elementos que estn siendo procesados por la expresin.Algunas construcciones del lenguaje, en particular laexpresin de rutaE1 / E2y elpredicadoE1[E2],crean un nuevo enfoque para la evaluacin de una sub-expresin.En estas construcciones,E2se evala una vez para cada elemento de la secuencia que resulta de la evaluacin deE1.Cada vezE2se evala, se evala con un enfoque diferente.El enfoque para la evaluacin deE2se hace referencia ms adelante como elenfoqueinterno,mientras que el enfoque para la evaluacin deE1se conoce como elfocoexterior.Existe el enfoque interno slo mientrasE2est siendo evaluado.Cuando esta evaluacin es completa, la evaluacin de la expresin que contiene contina con su enfoque original sin cambios. [Definicin:Elelemento de contextoes el elemento que se est procesando.Un elemento es o bien un valor atmico o un nodo] [.Definicin: Cuando el elemento de contexto es un nodo, tambin puede ser denominado como elnodo decontexto.]El elemento de contexto es devuelto por una expresin que consta de un solo punto(.).Cuando una expresinE1 / E2oE1 [E2]se evala, cada elemento de la secuencia obtenida mediante la evaluacin deE1se convierte en el elemento de contexto en el enfoque interno para una evaluacin deE2. [Definicin:Laposicin decontexto.Es la posicin del elemento de contexto dentro de la secuencia de los artculos que son procesados actualmente] Cambia siempre que el elemento cambiar contexto.Cuando se define el enfoque, el valor de la posicin contexto es un nmero entero mayor que cero.La posicin contexto es devuelto por la expresinfn: posicin().Cuando una expresinE1 / E2oE1 [E2]se evala, la posicin contexto en el foco interior para una evaluacin deE2es la posicin del elemento de contexto en la secuencia obtenida mediante la evaluacin deE1.La posicin del primer elemento de una secuencia siempre es 1 (uno).La posicin contexto es siempre menor o igual al tamao de contexto. [Definicin:Eltamao decontexto.Es el nmero de elementos en la secuencia de los artculos que son procesados actualmente] Su valor es siempre un nmero entero mayor que cero.El tamao contexto es devuelto por la expresinfn: last().Cuando una expresinE1 / E2oE1 [E2]se evala, el tamao contexto en el foco interior para una evaluacin deE2es el nmero de elementos de la secuencia obtenida mediante la evaluacin deE1. [Definicin:Los valores devariables.Se trata de un conjunto de (ampliado QName, valor) pares.Contiene los mismosQNames ampliadascomo lasvariables de alcanceen elcontexto estticopara la expresin.El QName ampliado es el nombre de la variable y el valor es el valor dinmico de la variable, que incluye sutipodinmico.] [Definicin:implementaciones defuncin.Cada funcin enfirmas de funcintiene una implementacin de la funcin que habilita la funcin para asignar las instancias de sus tipos de parmetros en una instancia de su tipo de resultado.Para unafuncin definida por elusuario,la implementacin de la funcin es una expresin XQuery.Para unafuncin incorporadaofuncinexterna,la implementacin de la funcin esdependiente de laimplementacin.] [Definicin:.FechaHora actualEsta informacin representa undependiente de la implementacinpunto en el tiempo durante el procesamiento deunaconsulta,e incluye una zona horaria explcito.Puede ser recuperado por elfn: corriente-dateTimefuncin.Si se invoca varias veces durante la ejecucin deunaconsulta,esta funcin siempre devuelve el mismo resultado.] [Definicin:.Implcito zona horariaEsta es la zona horaria que se utilizar cuando una fecha, hora, o el valor dateTime que no tiene una zona horaria se utiliza en una operacin aritmtica o de comparacin.La zona horaria implcita es unaaplicacin definida por elvalor de tipoxs:dayTimeDuration.Ver[Esquema XML]para el rango de los valores legales de una zona horaria.] [Definicin:.Documentos disponiblesEste es un mapeo de cadenas en nodos de documento.La cadena representa el URI absoluto de un recurso.El nodo de documento es la raz de un rbol que representa ese recurso utilizando elmodelo dedatos.El nodo de documento es devuelto por elfn: docfuncin cuando se aplica a la URI] El conjunto de documentos disponibles no se limita al conjunto de.Documentos estticamenteconocidos, y puede estar vaco.Si hay una o varias URI enlos documentos disponiblesque se asignan a un nodo de documentoD, entonces la propiedad-documento uri deDo bien debe estar ausente, o debe ser uno de estos URI.Nota:Esto significa que le da un nodo de documento$N,el resultado defn: doc (fn:-documento uri ($ N)) es de $ Nsiempre ser cierto que a menosfn:-documento uri ($ N)es una secuencia vaca. [Definicin:.Colecciones disponiblesEste es un mapeo de cadenas en secuencias de nodos.La cadena representa el URI absoluto de un recurso.La secuencia de nodos representa el resultado de lafn: Coleccinfuncin cuando URI que se suministra como argumento.] El conjunto de colecciones disponibles no se limita al conjunto decolecciones estticamenteconocidos,y puede estar vaco.Por cada nodo de documentoDque se encuentra en el blanco de una asignacin encoleccionesdisponibles,o que es la raz de un rbol que contiene un nodo tal, la propiedad-documento uri deDo bien debe estar ausente, o debe ser un URIUtal quedocumentos disponiblescontiene un mapeo deUaD".Nota:Esto significa que para cualquier nodo de documento$ Nrecuperada mediante elfn: Coleccinfuncin, ya sea directamente o mediante la navegacin a la raz de un nodo que se ha devuelto, el resultado defn: doc (fn: Documento-uri ($ N)) es de $ Nsiempre ser cierto que a menosfn: Documento-uri ($ N)es una secuencia vaca.Esto implica un requisito para elfn: docyfn: recogida defunciones para ser consistentes en su efecto.Si la aplicacin utiliza catlogos o resolucin de URI suministrados por el usuario a la URI dereference suministrados alfn: docfuncin, la aplicacin de lafn: Coleccinfuncin debe tomar estos mecanismos en cuenta.Por ejemplo, una implementacin podra lograr esto mediante el mapeo de la coleccin URI a un conjunto de URI de documentos, que se resuelven a continuacin, utilizando el mismo catlogo o resolver URI que es utilizado por elfn: docfuncin. [Definicin:.Predeterminado coleccinEsta es la secuencia de nodos que resultaran de llamar alfn:coleccin.Funcin sin argumentos] El valor de lacoleccin predeterminadapuede ser inicializado por la implementacin.2.2 Modelo de ProcesamientoXQuery se define en trminos delmodelo de datosy elcontexto de laexpresin.

Figura 1: Modelo de Procesamiento de Informacin generalFigura 1 ofrece una visin esquemtica de los pasos del proceso que se describen en detalle a continuacin.Algunas de estas medidas son completamente fuera del dominio de XQuery;en la Figura 1, stos se representan fuera de la lnea que representa los lmites de la lengua, un rea marcadade procesamientoexterno.El dominio de procesamiento externo incluye la generacin de unainstancia de XDMque representa los datos para ser consultados (ver2.2.1 Datos GeneracinModelo),el procesamiento de importacin de esquema (ver2.2.2 Esquema de Importacin deprocesamiento)y la serializacin (ver2.2.4serializacin).El rea dentro de los lmites de la lengua se conoce como eldominio de procesamiento deconsultas,que incluye el anlisis esttico y las fases de evaluacin dinmica (vase2.2.3 Procesamiento deExpresin).Restricciones de consistencia en laconsultade dominio de procesamiento se definen en2.2.5 Restricciones deconsistencia.2.2.1 Datos Generacin ModeloAntes deuna consultapuede ser procesada, sus datos de entrada deben ser representados como unainstancia deXDM.Este proceso se produce fuera del dominio de XQuery, por lo que la figura 1 representa en el dominio de procesamiento externo.Aqu hay algunos pasos por los que un documento XML podra convertirse en unejemploXDM:1. Un documento puede ser analizado usando un analizador XML que genera unXML Information Set(ver[conjunto de informacinXML]).El documento analizado puede entonces ser validado contra uno o varios esquemas.Este proceso, que se describe en[EsquemaXML],resulta en una estructura de informacin abstracta llama elPost-Esquema Validacin conjunto de informacin(PSVI).Si un documento no tiene esquema asociado, su conjunto de informacin se conserva.(Ver DM1 en la Fig. 1.)2. El conjunto de informacin o PSVI pueden transformarse en unainstancia de XDMpor un procedimiento descrito en[XQuery 1.0 y XPath 2.0 Modelo de Datos (SecondEdition)].(Ver DM2 en la Fig. 1.)Los pasos anteriores proporcionan un ejemplo de cmo unejemplo XDMpodra ser construido.Una instancia XDM tambin puede sintetizarse directamente a partir de una base de datos relacional, o construido de alguna otra manera (ver DM3 en la Fig. 1.) XQuery se define en trminos delmodelo dedatos,pero no impone ninguna restriccin sobre cmo instancias XDM son construido.[Definicin:Cada nodo de elemento y el nodo de atributo en unainstancia de XDMtiene unaanotacin de tipo(que se refiere el[XQuery 1.0 y XPath 2.0 Modelo de Datos (Segunda edicin)]como sunombre-tipode propiedad.) El tipo de anotacin de un nodo es untipo de esquemaque describe la relacin entre elvalor de cadenadel nodo y suvalor contipo.]Si lainstancia de XDMse deriv de un documento XML validado como se describe enla Seccin 3.3 de la construccin de un PSVIDM, las anotaciones de tipo de elemento y nodos atributo se derivan de la validacin del esquema.XQuery no proporciona una forma de acceder directamente al tipo de anotacin de un nodo de elemento o atributo.El valor de un atributo se representa directamente en el nodo de atributo.Un nodo de atributo cuyo tipo es desconocido (tal como podra ocurrir en un documento schemaless) se le dan lasanotacin de tipoxs:untypedAtomic.El valor de un elemento est representado por los hijos del nodo de elemento, que pueden incluir nodos de texto y otros nodos de elemento.Eltipo de anotacinde un nodo elemento indica cmo los valores en sus nodos de texto nio deben ser interpretadas.Un elemento que no ha sido validado (como podra ocurrir en un documento schemaless) se anota con el tipo de esquemaxs: sintipo.Un elemento que ha sido validado y se encontr que ser parcialmente vlido se anota con el tipo de esquemaxs:anyType.Si un nodo elemento est anotado comoxs: sintipo,todos sus nodos de elemento descendiente tambin estn anotados comoxs: sintipo.Sin embargo, si un nodo elemento est anotado comoxs:anyType,algunos de sus nodos de elementos descendientes pueden tener una ms especficatipo deanotacin.2.2.2 Esquema de Importacin ProcesamientoLasdefiniciones de esquema consideradas en el estudioen elcontexto estticopueden ser extrados de esquemas XML reales como se describe en[XQuery 1.0 y XPath 2.0 Semntica Formal (Segunda edicin)](vase el paso SI1 en la Figura 1) o puede ser generado por algn otro mecanismo ( vase el paso SI2 en la Figura 1).En cualquier caso, el resultado debe satisfacer las restricciones de consistencia definidos en2.2.5 Restricciones deconsistencia.Procesamiento 2.2.3 ExpresinXQuery define dos fases de procesamiento de llamadas de lafase de anlisis estticoy de lafase de evaluacin dinmica(ver Fig. 1).Durante la fase de anlisis esttico,los erroresestticos,erroresdinmicos,oerrores de tipopueden ser incrementados.Durante la fase de evaluacin dinmica, slo loserrores dinmicosoerrores de tipopueden ser incrementados.Este tipo de errores se definen en2.3.1 Tipos deerrores.Dentro de cada fase, una implementacin es libre de utilizar cualquier estrategia o algoritmo cuyo resultado se ajusta a lo especificado en este documento.2.2.3.1 Fase de Anlisis esttico[Definicin:Lafase de anlisis estticodepende de la expresin de s mismo y en elcontextoesttico.Lafase de anlisis estticono depende de los datos de entrada (distintos de los esquemas).]Durante la fase de anlisis esttico, laconsultase analiza en una representacin interna llamado elrbol de operacin(paso SQ1 en la Figura 1).Un error de anlisis se plantea como unerror esttico[err:XPST0003].Elcontexto estticoes inicializado por la aplicacin (paso SQ2).Elcontexto estticose cambia entonces y aumentada basado en la informacin en elprlogo(paso SQ3).Si lacaracterstica de esquema de importacines compatible, lasdefiniciones de esquema en el estudio quese rellenan con la informacin de esquemas importados.Si lacaracterstica del mduloes compatible, el contexto esttico se ampla con declaraciones de funciones y declaraciones de variables de los mdulos importados.Elcontexto estticose utiliza para resolver nombres de tipo de esquema, los nombres de funciones, prefijos de espacio de nombres y nombres de variables (paso SQ4).Si el nombre de una de estas clases en elrbol de la operacinno se encuentra en elcontextoesttico,unerror esttico([err:XPST0008]o[err:XPST0017]) es elevado (no obstante, ver excepciones a esta regla en2.5.4.3 Prueba Elementy2.5.4.5 PruebaAtributo.)Elrbol de la operacines luegonormalizal hacer explcitas las operaciones implcitas tales comola atomizaciny la extraccin de losvalores efectivos de Boole(paso SQ5).El proceso de normalizacin se describe en[XQuery 1.0 y XPath 2.0 Semntica Formal (Segundaedicin)].Cada expresin entonces se le asigna untipo esttico(paso SQ6).[Definicin:Eltipo estticode expresin es un tipo tal que, cuando se evala la expresin, el valor resultante siempre ser conforme con el tipo esttico.] Si lacaracterstica tipos estticoses compatible, lostipos estticosde diversas expresiones se infieren de acuerdo a las reglas descritas en[XQuery 1.0 y XPath 2.0 Semntica Formal (Segundaedicin)].Si lacaracterstica tipos estticosno es compatible, los tipos estticos que se asignan sondependiente de laimplementacin.Durante lafase de anlisisesttico,si lacaracterstica mecanografa estticaest en vigor y un operando de una expresin se encuentra que tiene untipo estticoque no es apropiado para ese operando, unerror de tipose eleva[err:XPTY0004].Si la comprobacin de tipos estticos plantea ningn error y asigna untipo estticoT a una expresin, entonces la ejecucin de la expresin en los datos de entrada vlido est garantizada, ya sea para producir un valor de tipo T o criar a unerrordinmico.El propsito de laFuncin tipos estticoses para proporcionar la deteccin temprana deerrores de tipoy para inferir el tipo de informacin que puede ser til en la optimizacin de la evaluacin de una expresin.2.2.3.2 fase dinmica Evaluacin[Definicin:Lafase de evaluacindinmica.Es la fase durante la cual se calcula el valor de una expresin] Se produce despus de la finalizacin de lafase de anlisisesttico.La fase de evaluacin dinmica slo puede ocurrir si no se detectaron errores durante lafase de anlisisesttico.Si lacaracterstica de mecanografa estticaes, en efecto, todos loserrores de tiposon detectados durante el anlisis esttico y sirven para inhibir la fase de evaluacin dinmica.La fase de evaluacin dinmica depende delrbol de la operacinde la expresin de ser evaluado (paso DQ1), sobre los datos de entrada (paso DQ4), y en elcontexto dinmico(paso DQ5), que a su vez atrae a la informacin del medio externo (paso DQ3 ) y elcontexto esttico(paso DQ2).La fase de evaluacin dinmica puede crear nuevos valores en modelos de datos (paso DQ4) y se podr prorrogar elcontexto dinmico(paso DQ5), por ejemplo, por los valores de unin a las variables.[Definicin:Untipo dinmicoest asociado con cada valor, ya que se calcula.El tipo dinmico de un valor puede ser ms especfico que eltipo estticode la expresin que calcula l (por ejemplo, el tipo esttico de una expresin podra serxs: integer*,que denota una secuencia de cero o ms nmeros enteros, pero al tiempo de evaluacin su valor puede tener el tipo dinmicoxs:enteros, que denota exactamente un nmero entero)].Si se encuentra que un operando de una expresin para tener untipo dinmicoque no es apropiado para ese operando, unerror de tipose eleva[err:XPTY0004].A pesar de que la tipificacin esttica puede coger muchoserrores de tipoantes de ejecutar una expresin, es posible que una expresin para elevar un error durante la evaluacin que no fue detectado por el anlisis esttico.Por ejemplo, una expresin puede contener un molde de una cadena en un nmero entero, que es estticamente vlida.Sin embargo, si el valor real de la cadena en tiempo de ejecucin no puede ser echado en un entero, unerror dinmicoresultar.Del mismo modo, una expresin puede aplicar un operador aritmtico a un valor cuyotipo estticoesxs:untypedAtomic.Esto no es unerroresttico, pero en tiempo de ejecucin, si el valor no se puede lanzar con xito a unanumricotipo, unerror dinmicose elevar.Cuando lacaracterstica esttica Typinges, en efecto, tambin es posible que el anlisis esttico de una expresin para elevar unerror detipo,a pesar de que la ejecucin de la expresin de ciertos insumos tendra xito.Por ejemplo, una expresin podra contener una funcin que requiere un elemento como parmetro, y la fase de anlisis esttico podra inferir eltipo estticodel parmetro de la funcin de ser un elemento opcional.Este caso se trata como unerror de tipoe inhibe la evaluacin, a pesar de que la llamada de funcin habra sido exitoso para los datos de entrada en la que el elemento opcional est presente.2.2.4 Serializacin[Definicin:La serializacines el proceso de convertir unainstancia de XDMen una secuencia de octetos (paso DM4 en la figura 1.)] El marco general para la serializacin se describe en[XSLT 2.0 y XQuery 1.0 serializacin (Segundaedicin)].Una implementacin XQuery no est obligado a proporcionar una interfaz de serializacin.Por ejemplo, una aplicacin slo podr proporcionar una interfaz DOM (ver[Document ObjectModel])o una interfaz basada en una secuencia de eventos.En estos casos, la serializacin estara fuera del alcance de esta especificacin.[XSLT 2.0 y XQuery 1.0 serializacin (Segunda edicin)]define un conjunto deparmetros de serializacinque rigen el proceso de serializacin.Si una implementacin de XQuery proporciona una interfaz de serializacin, puede apoyar (y puede exponer a los usuarios) cualquiera de los parmetros de serializacin enumerados (con valores por defecto) enlos parmetros de serializacinC.3.Una implementacin de XQuery que proporciona una interfaz de serializacin debe ser compatible con una combinacin de parmetros de serializacin en el quemethod = "xml"yversion ="1.0".Nota:Elmodelo de datospermite a un nodo elemento a tener menosespacios de nombres consideradas en el estudioque su padre.Serializacin correcta de un nodo tal elemento requerira "undeclaration" de espacios de nombres, que es una caracterstica de[XML Names1.1].Una aplicacin que no admite[Nombres XML 1.1]se permite serializar un elemento de este tipo sin "undeclaration" de los espacios de nombres, lo que hace efectivamente el elemento a heredar los espacios de nombres consideradas en el estudio de su padre.2.2.5 Restricciones de consistenciaPara que XQuery para estar bien definido, la entrada deinstanciaXDM,elcontextoesttico,y elcontexto dinmicodeben ser coherentes entre s.Las restricciones de consistencia se enumeran a continuacin son requisitos previos para el correcto funcionamiento de una implementacin de XQuery.La aplicacin de estas restricciones de consistencia est ms all del alcance de esta especificacin.Esta especificacin no define el resultado deuna consultabajo cualquier condicin en la cual una o ms de estas limitaciones no se cumple.Algunas de las restricciones de consistencia usan el trminoesquema de modelo dedatos.[Definicin:Para un nodo dado en unejemploXDM,elesquema de modelo de datosse define como el esquema de la cual eltipo de anotacinse deriva de ese nodo.] Para un nodo que se construy por algn procedimiento distinto de la validacin de esquema, elmodelo de datos esquemaconsiste simplemente en la definicin de tipo de esquema que se representa mediante laanotacin de tipodel nodo. Por cada nodo que tiene una anotacin de tipo, si ese tipo de anotacin se encuentra en elin-alcance definiciones de esquema(SIDS), a continuacin, su definicin en el ISSD debe ser equivalente a su definicin en elesquema de modelo dedatos.Por otra parte, todos los tipos que se derivan, por extensin, del tipo dado en elesquema de modelo de datostambin deben ser conocidos por las definiciones equivalentes en el ISSD. Por cada nombre de elementoESque se encuentra tanto en unainstancia de XDMy en lasdefiniciones incluidas en el esquema(SIDS), todos los elementos que se conocen en elesquema de modelo de datospara estar en elgrupo de sustitucinencabezada porEStambin debe ser conocido en el ISSD para estar en elgrupo de sustitucinencabezada porES. Cada nombre de elemento, atributo nombre, o el esquema nombre del tipo de referencia enen mbito de variablesofirmas de funcindeben estar en lasdefiniciones de esquema consideradas en elestudio,a menos que sea un nombre de elemento que se hace referencia como parte de unElementTesto un nombre de atributo referenciado como parte de unAttributeTest. Cualquier referencia a un nombre global elemento, atributo, o escribe en lasdefiniciones de esquema consideradas en el estudiodebe tener un elemento correspondiente, atributo o tipo de definicin en lasdefiniciones de esquema consideradas en elestudio. Para cada asignacin de una cadena en un nodo de documento delos documentosdisponibles,si existe una aplicacin de la misma cadena en un tipo de documento endocumentos estticamenteconocidos,el nodo documento debe coincidir con el tipo de documento, el uso de las normas de congruencia en2.5.4 SequenceTypeCoincidencia. Para cada asignacin de una cadena a una secuencia de nodos encoleccionesdisponibles,si existe una aplicacin de la misma cadena a un tipo decolecciones estticamenteconocidos,la secuencia de nodos debe coincidir con el tipo, el uso de las normas de congruencia en2.5.4 SequenceTypeCoincidencia. La secuencia de nodos de lacoleccin predeterminadadebe coincidir con eltipo de coleccin por defecto de forma estticaconocida,utilizando las reglas de coincidencia en2.5.4 SequenceTypeMatching. El valor delelemento de contextodebe coincidir con eltipo esttico elemento decontexto,el uso de las normas de congruencia en2.5.4 SequenceTypeMatching. Para cada uno (variable, tipo) par enlas variables consideradas en el estudioy el correspondiente (valor variable) par devalores de las variablesde tal manera que los nombres de las variables son iguales, el valor debe coincidir con el tipo, el uso de las normas de congruencia en2.5.4 SequenceType Matching. Para cada variable declarada comoexterna: Si la declaracin de variables incluye un tipo declarado, el entorno externo debe proporcionar un valor para la variable que coincide con el tipo declarado, utilizando las reglas de coincidencia en2.5.4 SequenceTypeMatching.Si la declaracin de variables no incluye un tipo declarado, el entorno externo debe proporcionar un tipo y un valor coincidente, utilizando las mismas reglas de concordancia. Para cada funcin declarada como externa: laimplementacin de la funcindebe devolver, ya sea un valor que coincide con el tipo de resultado declarada, utilizando las reglas de coincidencia en2.5.4 SequenceTypeMatching,o subir unaaplicacin definida por elerror. Para una consulta determinada, definir unISSD participandocomo lasdefiniciones de esquema consideradas en el estudiode un mdulo que se utiliza en la evaluacin de la consulta.Si dos ISSDs participantes contienen una definicin para el mismo tipo de esquema, el nombre del elemento, o el nombre de atributos, las definiciones deben ser equivalentes en ambos ISSDs.Por otra parte, si dos ISSDs participantes cada uno contienen una definicin de un tipo de esquemaT, el conjunto de tipos derivados por extensin deTdebe ser equivalente en ambos ISSDs.Adems, si dos ISSDs participantes cada uno contienen una definicin de un nombre de elementoE, el grupo de sustitucin encabezada porEdebe ser equivalente en ambos ISSDs. En losespacios de nombres estticamenteconocidos,el prefijoxmlno debe obligarse a ningn URI de espacio que no seahttp://www.w3.org/XML/1998/namespace, y ningn prefijo que no seaXMLse puede unir a este espacio de nombres URI.Manejo 2.3 Error2.3.1 Tipos de ErroresComo se describe en2.2.3 Procesamiento deExpresin,XQuery define unafase de anlisisesttico,que no depende de los datos de entrada, y unafase de evaluacindinmica,que no depende de los datos de entrada.Los errores pueden ser planteadas durante cada fase.[Definicin:Unerror estticoes un error que debe ser detectado durante la fase de anlisis esttico.Un error de sintaxis es un ejemplo de unerroresttico.][Definicin:Unerror dinmicoes un error que debe ser detectado durante la fase de evaluacin dinmica y puede ser detectado durante la fase de anlisis esttico.Desbordamiento numrico es un ejemplo de un error dinmico.][Definicin:Unerror de tipopuede elevarse durante la fase de anlisis esttico o la fase de evaluacin dinmica.Durante la fase de anlisis esttico, unerror de tipose produce cuando eltipo estticode una expresin no coincide con el tipo esperado del contexto en el que se produce la expresin.Durante la fase de evaluacin dinmica, unerror de tipoocurre cuando eltipo dinmicode valor no coincide con el tipo esperado del contexto en que se produce el valor.]El resultado de lafase de anlisis estticoes el xito o uno o mserrores detipo,errores estticoso estticamente detectadoserroresdinmicos.El resultado de lafase de evaluacin dinmicaes o bien un valor de resultado, unerror detipo,o de unerrordinmico.Si ms de un error est presente, o si una condicin de error est comprendida en el mbito de aplicacin de ms de un error definido en esta memoria descriptiva, a continuacin, se puede informar cualquier subconjunto no vaco de estos errores.Durante lafase de anlisisesttico,si lacaracterstica mecanografa estticaest en efecto y eltipo estticoasignado a una expresin que no sea()olos datos (())esvaco-secuencia(),unerror estticose eleva[err:XPST0005].Esto atrapa casos en los que una consulta se refiere a un elemento o atributo que no est presente en lasdefiniciones de esquema consideradas en elestudio,posiblemente debido a un error de ortografa.Independientemente de si lacaracterstica esttica Typinges, en efecto, si una aplicacin puede determinar durante lafase de anlisis estticoque una expresin, si es evaluado, necesariamente criar a unerror de tipoo de unerrordinmico,la aplicacin puede (pero no est obligado a) Informe ese error durante lafase de anlisisesttico.Sin embargo, elfn: error ()funcin no debe ser evaluado durante lafase de anlisisesttico.[Definicin:Adems delos erroresestticos,errores dinmicosyerrores detipo,una implementacin de XQuery puede plantearadvertencias, ya sea durante lafase de anlisis estticoo lafase de evaluacindinmica.Las circunstancias en las que se cran advertencias y las formas en que las advertencias se manejan, sondefinido por laimplementacin.]Adems de los errores definidos en esta memoria descriptiva, una implementacin puede plantear unerror dinmicopor una razn ms all del alcance de esta especificacin.Por ejemplo, pueden existir limitaciones en el nmero mximo o tamaos de varios objetos.Cualquiera de estas limitaciones, y las consecuencias de superarlas, sondependiente de laimplementacin.2.3.2 identificar y reportar erroresLos errores definidos en esta especificacin se identifican por QNames que tienen la formaerr:XXYYnnnn,donde: errdenota el espacio de nombres de errores XPath y XQuery,http://www.w3.org/2005/xqt-errors.Esta unin del prefijo de espacioerrse utiliza por conveniencia en este documento, y no es normativo. XXindica el idioma en el que se define el error, utilizando la siguiente codificacin: XPdenota un error definida por XPath.Este error tambin puede producirse XQuery desde XQuery incluye XPath como un subconjunto. XQdenota un error definido por XQuery. YYindica la categora de error, utilizando la siguiente codificacin: STindica un error esttico. DYdenota un error dinmico. TYdenota un error de tipo. nnnnes un cdigo numrico nico.Nota:No se espera que el URI de espacio para los errores XPath y XQuery para cambiar de una versin de XQuery a otro.Sin embargo, el contenido de este espacio de nombres se podrn ampliar para incluir las definiciones de error adicionales.El mtodo por el cual un procesador XQuery reporta informacin de error al ambiente externo esdefinido por laimplementacin.Un error puede ser representado por una referencia URI que se deriva de la QName error de la siguiente manera: un error en espacio de nombres URINSy parte localLPpuede ser representado como el URI de referenciaNS#LP.Por ejemplo, un error cuya QName eserr: XPST0017podra representarse comohttp://www.w3.org/2005/xqt-errors#XPST0017.Nota:Junto con un cdigo que identifica un error, las implementaciones pueden desear para devolver informacin adicional, tal como la ubicacin del error o de la fase de procesamiento en la que se detect.Si una aplicacin decide hacerlo, entonces el mecanismo que utiliza para devolver esta informacin esdefinido por laimplementacin.2.3.3 Manejo de errores dinmicosExcepto como se indica en este documento, si cualquier operando de una expresin plantea unerrordinmico,la expresin tambin plantea unerrordinmico.Si una expresin vlida puede devolver un valor o subir un error dinmico, la aplicacin puede optar por devolver el valor o subir el error dinmico.Por ejemplo, la expresin lgicaexpr1 y expr2pueden devolver el valorfalsesi cualquier operando vuelvefalsa, o pueden criar a un error dinmico si cualquier operando plantea una error dinmico.Si hay ms de un operando de una expresin genera un error, la aplicacin puede elegir qu error se levant por la expresin.Por ejemplo, en esta expresin:($ x div $ y) + xs: decimal ($ z)tanto las sub-expresiones($ x div $ y)yxs: decimal ($ z)pueden elevar un error.La aplicacin puede elegir qu error se eleva por el"+expresin".Una vez que un operando genera un error, no se requiere la aplicacin, pero se permite, para evaluar cualquier otro operandos.[Definicin:Adems de su identificacin QName, un error dinmico tambin puede llevar a una cadena y uno descriptivo o ms valores adicionales llamadosvalores deerror.]Una aplicacin puede proporcionar un mecanismo que permita a un gestor de errores definido por la aplicacin puede procesar valores de error y producir de diagnstico mensajes.Un error dinmico puede ser criado por unafuncin incorporadao el operador.Por ejemplo, eldivoperador genera un error si los operandos sonxs: decimalvalores y su segundo operando es igual a cero.Errores planteadas por funciones y operadores integrados se definen en[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segundaedicin)].Un error dinmico tambin se puede elevar de forma explcita llamando alfn: errorde funcin, que slo genera un error y nunca devuelve un valor.Esta funcin se define en[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segundaedicin)].Por ejemplo, la siguiente llamada de funcin plantea un error dinmico, proporcionando un QName que identifica el error, una cadena descriptiva, y un valor de diagnstico (suponiendo que el prefijoaplicacinest destinada a un espacio de nombres que contiene los cdigos de error definidos por la aplicacin):fn: error (xs: QName ("aplicacin: err057"), "valor inesperado", fn: string ($ v))2.3.4 Errores y OptimizacinDebido a que diferentes implementaciones pueden elegir para evaluar u optimizar una expresin de diferentes maneras, ciertos aspectos de la deteccin y la notificacin deerrores dinmicossondependiente de laimplementacin,tal como se describe en esta seccin.Una implementacin es siempre gratuita para evaluar los operandos de un operador en cualquier orden.En algunos casos, un procesador puede determinar el resultado de una expresin sin tener acceso a todos los datos que se implicada por la semntica expresin formal.Por ejemplo, la descripcin formal de lasexpresiones de filtrosugiere que$ s [1]deben ser evaluados por el examen de todos los elementos de la secuencia$s,y la seleccin de todos aquellos que satisfacen el predicadoposicin () =1.En la prctica, muchas implementaciones reconocern que puedan evaluar esta expresin al tomar el primer elemento de la secuencia y luego salir.Si$ sest definido por una expresin como// libro [autor eq'Berners-Lee'],a continuacin, esta estrategia puede evitar una exploracin completa de un documento de gran tamao, por lo que puede mejorar en gran medida el rendimiento.Sin embargo, una consecuencia de esta estrategia es que un error dinmico o error de tipo que se detecta si la semntica de expresin fueron seguidos, literalmente, no pueden ser detectados en absoluto si la evaluacin sale temprano.En este ejemplo, tal error puede ocurrir si hay unlibro delos elementos de los datos de entrada con ms de unautorsubelemento.El grado en que un procesador puede optimizar su acceso a los datos, a costa de errores no deteccin, se define por las siguientes reglas.Considere una expresinQque tiene un operando (sub-expresin)E.En general, el valor deEes una secuencia.En una etapa intermedia durante la evaluacin de la secuencia, algunos de sus artculos sern conocidos y otros sern desconocido.Si, en una etapa tan intermedio de evaluacin, un procesador es capaz de establecer que slo hay dos posibles resultados de la evaluacin deQ, es decir, el valorVo un error, entonces el procesador puede entregar el resultadoVsin evaluar otros elementos en el operandoE.Para este propsito, dos valores son considerados para representar el mismo resultado si sus elementos estn en pares de la misma, donde los nodos son iguales si tienen la misma identidad, y los valores son los mismos si son iguales y tienen exactamente el mismo tipo.Hay una excepcin a esta regla: Si un procesador evala un operandoE(en todo o en parte), entonces es necesario establecer que el valor real del operandoEno viola ninguna restriccin en su cardinalidad.Por ejemplo, la expresin$ e eq 0resultados en un error de tipo si el valor de$ econtiene dos o ms elementos.Un procesador no se le permite decidir, despus de evaluar el primer elemento en el valor de$ ey encontrarlo igual a cero, que los nicos resultados posibles son el valorverdaderoo un error de tipo causado por la violacin cardinalidad.Se debe establecer que el valor de$ eno contiene ms de un elemento.Estas reglas se aplican a todos los operandos de una expresin considerada en combinacin: por lo tanto, si una expresin tiene dos operandosE1yE2, puede ser evaluado mediante las muestras de las respectivas secuencias que satisfacen las reglas anteriores.La cascada de reglas: SiAes un operando deByBes un operando deC, entonces el procesador necesita evaluar solamente una muestra suficiente deBpara determinar el valor deC, y tiene que evaluar solamente una muestra suficiente deApara determinar esta muestra deB.El efecto de estas normas es que el procesador est libre de pasar el examen de otros elementos en una secuencia tan pronto como se pueda establecer que otros elementos no afectaran el resultado excepto posiblemente causando un error.Por ejemplo, el procesador puede volververdaderacomo resultado de la expresinS1 = S2tan pronto como se encuentra un par de valores iguales de las dos secuencias.Otra consecuencia de estas normas es que en ninguno de los elementos de una secuencia contribuye al resultado de una expresin, el procesador no est obligado a evaluar cualquier parte de la secuencia.Una vez ms, sin embargo, el procesador no puede prescindir de un cheque cardinalidad necesaria: si no se permite una secuencia vaca en el contexto pertinente, entonces el procesador debe asegurarse de que el operando no es una secuencia vaca.Ejemplos: Si una aplicacin se puede encontrar (por ejemplo, mediante el uso de un ndice) que al menos un artculo devuelto por$ expr1en el siguiente ejemplo tiene el valor47, se le permiti regresarverdaderacomo resultado de laalgunosexpresin, sin tener que buscar otro elemento devuelto por$ expr1que aumentara un error si se evaluaron. unos $ x en satisface $ EXPR1 $ x = 47 En el siguiente ejemplo, si una aplicacin puede encontrar (por ejemplo, mediante el uso de un ndice) losproductoselemento en forma de nodos que tienen unIdentificacin delnio con el valor47, se le permiti regresar estos nodos como el resultado de laexpresin deruta,sin buscando otroproductonodo que elevara un error, ya que tiene unaIdentificacin delnio cuyo valor no es un entero. // producto [id = 47]Por una variedad de razones, incluyendo la optimizacin, las implementaciones pueden reescribir expresiones en una forma diferente.Hay una serie de reglas que limitan el alcance de esta libertad: Aparte de la elevacin o no subir de errores, el resultado de evaluar una expresin reescrito debe cumplir con la semntica definida en esta especificacin para la expresin original.Nota:Esto permite una implementacin para devolver un resultado en los casos en que la expresin original habra planteado un error, o para elevar un error en los casos en que la expresin original habra regresado resultado.Los principales casos en que sea probable que surjan en la prctica son (a) cuando una reescritura cambia el orden de evaluacin, de manera que una subexpresin causando un error se evala cuando la expresin se escribe de una manera y no se evala cuando la expresin se escribe un diferente manera, y (b) cuando los resultados intermedios de la causa desbordamiento de evaluacin u otras condiciones fuera de rango.Nota:Esta regla no significa que el resultado de la expresin siempre ser la misma en los casos no de error como si no hubiera sido reescrito, debido a que hay muchos casos donde el resultado de una expresin es hasta cierto puntodependiente de la implementacinoimplementacin-definido. Las expresiones condicionales y typeswitch no deben criar a un error dinmico en relacin con subexpresiones que ocurren en una rama que no est seleccionada, y no deben devolver el valor entregado por una rama menos que se seleccione esa rama.Por lo tanto, el siguiente ejemplo no debe criar a un error dinmico si el documentoabc.xmlno existe: si (doc-disponible ('abc.xml')), entonces doc ('abc.xml') else () Como se dijo anteriormente, una expresin no debe ser reescrita para prescindir de un cheque cardinalidad requerida: por ejemplo,cadena de longitud (// ttulo)debe levantar un error si el documento contiene ms de un elemento de ttulo. Las expresiones no deben ser reescritos de una manera tal como para crear o eliminar los errores estticos.Por ejemplo, hay una regla que en la fundicin de una cadena a un QName el operando debe ser una cadena literal.Esta regla se aplica a la expresin original y no a cualquier forma refundido de la expresin.Expresin de reescritura se ilustra mediante los siguientes ejemplos. Considere la expresin// parte [color eq"rojo"].Una aplicacin puede optar por volver a escribir esta expresin como// parte [color = "Red"] [eq de color"rojo"].La aplicacin podra entonces procesar la expresin de la siguiente manera: En primer proceso, el"="predicado sondando un ndice en partes en color a encontrar rpidamente todas las piezas que tienen un color rojo;luego procesar el"eqpredicado" marcando cada una de estas partes para asegurarse de que slo tiene un solo color.El resultado sera la siguiente: Piezas que tienen exactamente un color que es de color rojo se devuelven. Si alguna parte es de color rojo, junto con algn otro color, se produce un error. La existencia de alguna parte que no tiene color rojo, pero tiene mltiples colores no rojas no dispara un error. La expresin en el siguiente ejemplo no puede elevar un error de fundicin si se evala exactamente como est escrito (es decir, de izquierda a derecha).Dado que ni predicado depende de la posicin contexto, una aplicacin puede optar por cambiar el orden de los predicados para lograr un mejor rendimiento (por ejemplo, mediante el aprovechamiento de un ndice).Esta reordenacin podra causar la expresin de elevar un error. $ N [x moldeable como xs: fecha] [xs: date (x) gt xs: date ("2000-01-01")]Para evitar errores inesperados causados por la reescritura de expresin, las pruebas que se han diseado para evitar errores dinmicos deben expresarse usando condicionalesotypeswitchexpresiones.Por ejemplo, la expresin anterior se puede escribir como sigue:$ N [si (x moldeable como xs: date) entonces xs: date (x) xs GT: date ("2000-01-01") false ()]2.4 ConceptosEsta seccin explica algunos conceptos que son importantes para el procesamiento de expresiones XQuery.2.4.1 Documento OrdenUn ordenamiento llamadoorden del documentose define entre todos los nodos accesibles durante el procesamiento de un determinadoconsulta,que pueden consistir en uno o ms rboles(documentos o fragmentos).El orden del documento se define en[XQuery 1.0 y XPath 2.0 Modelo de Datos (Segundaedicin)],y su definicin se repite aqu por conveniencia.[Definicin:El orden nodo que es el reverso de orden del documento se llamaorden del documentoinversa.]Fin del documento es un orden total, aunque el orden relativo de algunos nodos esdependiente de laimplementacin.[Definicin:Informalmente,el orden del documentoes el orden en el que los nodos aparecen en la serializacin XML de un documento.][Definicin:fin del documento esestable, lo que significa que el orden relativo de dos nodos no cambiar durante el procesamiento de una determinadaconsulta, incluso si este orden esdependiente de laimplementacin.]Dentro de un rbol, el orden del documento satisface las siguientes limitaciones:1. El nodo raz es el primer nodo.2. Cada nodo se produce antes de que todos sus hijos y descendientes.3. Atributo nodos siguen inmediatamente el nodo elemento con el que estn asociados.El orden relativo de los nodos de atributos es estable, perodependiente de laimplementacin.4. El orden relativo de los hermanos es el orden en el que se producen en elniosestablecimiento de su nodo padre.5. Los nios y los descendientes se producen antes siguientes hermanos.El orden relativo de los nodos en rboles distintos es estable, perodepende de laimplementacin,con sujecin a la siguiente limitacin: Si cualquier nodo en un rbol T1 dado es antes de cualquier nodo en un rbol T2 diferente, a continuacin, todos los nodos del rbol T1 estn delante de todos los nodos rbol T2.2.4.2 La atomizacinLa semntica de algunos operadores XQuery dependen de un proceso llamadoatomizacin.La atomizacin se aplica a un valor cuando se utiliza el valor en un contexto en el que se requiere una secuencia de valores atmicos.El resultado de la atomizacin es o bien una secuencia de valores atmicos o unerror de tipo[err: FOTY0012].[Definicin:La atomizacinde una secuencia se define como el resultado de invocar elfn: los datosde funcin en la secuencia, como se define en[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segundaedicin)].]La semntica defn: los datosse repiten aqu por conveniencia.El resultado defn: los datoses la secuencia de valores atmicos producidos por la aplicacin de las siguientes reglas para cada elemento de la secuencia de entrada: Si el artculo es un valor atmico, se devuelve. Si el elemento es un nodo, suvalor escritose devuelve (err: FOTY0012 se plante si el nodo no tiene ningn valor con tipo.)La atomizacin se utiliza en el procesamiento de los siguientes tipos de expresiones: Expresiones aritmticas Expresiones de comparacin Las llamadas a funciones y devoluciones Reparto de expresiones Expresiones de constructor para diversos tipos de nodos ordenado porclusulas en expresiones FLWOR2.4.3 eficaz Boolean ValorBajo ciertas circunstancias (enumerados a continuacin), es necesario encontrar elvalor booleano efectivade un valor.[Definicin:Elvalor booleano efectivade un valor se define como el resultado de aplicar elfn: booleanfuncin al valor, como se define en[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segundaedicin)].]La semntica dinmicos defn: booleanse repiten aqu por conveniencia:1. Si su operando es una secuencia vaca,fn: booleanosvuelvefalsa.2. Si su operando es una secuencia cuyo primer elemento es un nodo,fn: booleanosvuelveverdadera.3. Si su operando es unproducto nicovalor de tipoxs: booleano derivados dexs:boolean,fn: booleanodevuelve el valor de su operando sin cambios.4. Si su operando es unproducto nicovalor de tipoxs:string,xs:anyURI,xs:untypedAtomic,o un tipo derivado de uno de estos,fn: booleanosretornosfalsossi el valor del operando tiene longitud cero;de lo contrario devuelvecierto.5. Si su operando es unproducto nicovalor de cualquiernumricotipo o derivado de un tipo numrico,fn: booleanosvuelvefalsasi el valor del operando esNaNo es numricamente igual a cero;de lo contrario devuelvecierto.6. En todos los dems casos,fn: booleanplantea un error de tipo [err: FORG0006].Nota:La semntica estticas defn: booleanse definen enla Seccin 7.2.4 El fn: boolean y fn: no funcionesFS.Nota:Elvalor booleano eficazde una secuencia que contiene al menos un nodo y al menos un valor atmico puede ser no determinista en las regiones de una consulta, dondeel modo de ordenaresdesordenada.Elvalor booleano eficazde una secuencia se calcula implcitamente durante el procesamiento de los siguientes tipos de expresiones: Las expresiones lgicas(y,o) Elfn: nofuncin Eldondeclusula de una expresin FLWOR Ciertos tipos depredicados, tales comoun [b] Las expresiones condicionales(si) Expresiones cuantificadas(algunos,cada)Nota:La definicin devalor booleano efectivaesnoutiliza al lanzar un valor con el tipoxs:boolean,por ejemplo en unmoldede expresin o al pasar un valor a una funcin cuyo parmetro esperada es de tipoxs:boolean.2.4.4 Fuentes de entradaXQuery tiene un conjunto de funciones que permiten acceder a los datos de entrada.Estas funciones son de particular importancia debido a que proporcionan una manera en la que una expresin puede hacer referencia a un documento o una coleccin de documentos.Las funciones de entrada se describen aqu de manera informal;que se definen en[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segundaedicin)].Una expresin puede acceder a los datos de entrada, ya sea llamando a uno de las funciones de entrada o haciendo referencia a alguna parte delcontexto dinmicoque se inicializa por el ambiente externo, tal como unavariable deoelemento decontexto.Las funciones de entrada soportados por XQuery son los siguientes: Elfn: docfuncin toma una cadena que contiene un URI.Si ese URI est asociado con un documento enlos documentosdisponibles,fn: docdevuelve un nodo de documento cuyo contenido es elmodelo de datos dela representacin del documento dado;de lo contrario, plantea unerror dinmico(ver[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segunda edicin)]para ms detalles). Elfn: Coleccinfuncin con un argumento toma una cadena que contiene un URI.Si ese URI se asocia con una coleccin encoleccionesdisponibles,fn: Coleccindevuelve la representacin del modelo de datos de esa coleccin;de lo contrario, plantea unerror dinmico(ver[XQuery 1.0 y XPath 2.0 Funciones y operadores (Segunda edicin)]para ms detalles).Una coleccin puede ser cualquier secuencia de nodos.Por ejemplo, la expresinfn: Coleccin ("http://example.org") // clienteidentifica a todos losclientes delos elementos que son descendientes de los nodos que se encuentran en la coleccin cuyo URI eshttp://example.org. Elfn: Coleccinfuncin con cero argumentos devuelve lacoleccinpredeterminada,undependiente de la implementacinsecuencia de nodos.2.4.5 URI literalesEn ciertos lugares en la gramtica XQuery, se requiere un URI vlido estticamente conocido.Estos lugares se indican mediante el smbolo gramaticalURILiteral.Por ejemplo, URILiterals se utilizan para especificar los espacios de nombres y colaciones, los cuales deben ser conocidos de forma esttica.[140]URILiteral:: =StringLiteral

Sintcticamente, un URILiteral es idntico a unStringLiteral: una secuencia de cero o ms caracteres entre comillas simples o dobles.Sin embargo, una implementacinPUEDEcriar a unerror esttico[err:XQST0046]si el valor de una URILiteral es de longitud distinta de cero y no est en el espacio lxica dexs:anyURI.Como en una cadena literal, cualquierreferencia a entidad predefinida(como&),referencia de carcter(como& #x2022;)oEscapeQuotoEscapeApos(por ejemplo,"") se sustituye por su expansin apropiada.Ciertos personajes, sobre todo el signo, slo pueden ser representados usando unareferencia de entidad predefinidao unareferencia decarcter.El URILiteral se somete a la normalizacin de espacio en blanco como se define para losxs: anyURItipo en[XMLSchema]:esto significa que se elimina espacio inicial y final, y cualquier otra secuencia de caracteres de espacio en blanco se sustituye por un nico espacio (# x20) carcter.Normalizacin espacios en blanco se hace despus de la expansin de lasreferencias decaracteres,por lo que escribir un salto de lnea (por ejemplo) como& # xA;no impiden su ser normalizaron a un carcter de espacio.El URILiteral no se somete automticamente a cdigo porciento o decodificacin como se define en[RFC3986].Cualquier proceso que intenta resolver el URI contra una base URI, o para eliminar la referencia al URI, puede sin embargo aplicarse cdigo porciento o decodificacin como se define en las RFCs relevantes.Nota:Elxs: anyURItipo est diseado para anticipar la introduccin de identificadores de recursos internacionalizados (IRI) como se define en[RFC3987].El siguiente es un ejemplo de un URILiteral vlida:"http://www.w3.org/2005/xpath-functions/collation/codepoint"2.5 TiposEl sistema de tipo de XQuery se basa en[EsquemaXML],y se define formalmente en[XQuery 1.0 y XPath 2.0 Semntica Formal (Segundaedicin)].[Definicin:Untipo de secuenciaes un tipo que puede expresarse mediante elSequenceTypesintaxis.Se utilizan tipos de secuencia siempre que sea necesario para hacer referencia a un tipo en una expresin XQuery.El trminotipo de secuenciasugiere que esta sintaxis se utiliza para describir el tipo de un valor XQuery, que siempre es una secuencia.][Definicin:Untipo de esquemaes un tipo que es (o puede ser) define utilizando las instalaciones del[Esquema XML](incluida la incorporada en el tipo de[esquemaXML]).]Un tipo de esquema se puede utilizar como una anotacin de tipo en un nodo de elemento o atributo (a menos que sea un tipo no instanciable comoxs: NOTACINoxs:anyAtomicType,en cuyo caso sus tipos derivados pueden ser tan acostumbrados).Cada tipo de esquema es o bien untipo complejoo untiposimple;tipos simples se subdividen entipos delistas,tipos de uninytipos atmicos(ver[esquema XML]para las definiciones y explicaciones de estos trminos.)Tipos atmicos representan la interseccin entre las categoras detipo de secuenciaytipo deesquema.Un tipo atmica, comoxs: integeromi:HATSIZE,es a la vez untipo de secuenciay untipo deesquema.2.5.1 Tipos predefinidos de esquemaLostipos de esquema consideradas en el estudioen elcontexto estticose inicializan con ciertos tipos de esquemas predefinidos, incluyendo los tipos de esquema integradas en el espacio de nombreshttp://www.w3.org/2001/XMLSchema,que tiene las predefinidas prefijo de espacio de nombresxs.Los tipos de esquema en este espacio de nombres se definen en[esquema XML]y aumentados por tipos adicionales definidos en[XQuery 1.0 y XPath 2.0 Modelo de Datos (Segundaedicin)].Elemento y las declaraciones de atributos en elxsespacio de nombres no estn implcitamente incluidos en el contexto esttico.Los tipos de esquemas definidos en[XQuery 1.0 y XPath 2.0 Modelo de Datos (Segunda edicin)]se resumen a continuacin.1. [Definicin:xs: sin tipose utiliza como eltipo de anotacinde un nodo elemento que no ha sido validado, o que ha sido validado en elsalto. Modo] No hay tipos de esquemas predefinidos se derivan dexs: sintipo.2. [Definicin:xs: untypedAtomices un tipo atmico que se utiliza para denotar datos atmicos sin tipo, tales como texto que no se le ha asignado un tipo ms especfico.] Un atributo que ha sido validado enskipmodo est representado en elmodelo de datospor una atribuir nodo con lasanotaciones de tipoxs:untypedAtomic.No hay tipos de esquemas predefinidos se derivan dexs:untypedAtomic.3. [Definicin:xs: dayTimeDurationse deriva por la restriccin dexs:duracin.La representacin lxica dexs: dayTimeDurationse limita a contener nicamente los das, horas, minutos y segundos componentes].4. [Definicin:xs: yearMonthDurationse deriva por la restriccin dexs:duracin.La representacin lxica dexs: yearMonthDurationse limita a contener slo componentes de ao y mes].5. [Definicin:xs: anyAtomicTypees un tipo atmico que incluye todos los v