Anda di halaman 1dari 105

Introduccin a XQuery con ejemplos

0. ndice de contenidos.

1. Entorno

2. Introduccin

3. Creacin y configuracin de la base de datos de ejemplo

4. Ejemplos

5. Conclusiones

1. Entorno
Este 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.0

2. Introduccin
XQuery 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 ejemplo


Vamos a trabajar con XML. Por lo tanto lo que primero necesitamos es un
fichero .XML con el siguiente contenido:

1 <tutoriales>
2
<tutorial anio="2007">
3
<titulo>XMLBeans, una forma de mapear un XML en objetos Java</titulo>
4
<autor>
5
<nombre>Alejandro</nombre>
6
<apellidos>Prez Garca</apellidos>
7
</autor>
8
<categoria>XML</categoria>
9
<visitas>25827</visitas>
1
</tutorial>
0
<tutorial anio="2013">
1
<titulo>Spring Security: haciendo uso de un servidor LDAP embebido</titulo>
1
<autor>
1
<nombre>Jos Manuel</nombre>
2
<apellidos>Snchez Surez</apellidos>
1
</autor>
3
<categoria>Spring</categoria>
1
<visitas>1996</visitas>
4
</tutorial>
1
<tutorial anio="2011">
5
<titulo>Mybatis con Maven y Spring</titulo>
1
<autor>
6
<nombre>Rubn</nombre>
1
<apellidos>Aguilera Daz-Heredero</apellidos>
7
</autor>
1
<categoria>Mybatis</categoria>
8
<visitas>6998</visitas>
1
</tutorial>
9
<tutorial anio="2011">
2
<titulo>Trabajar con XML sabiendo lo mnimo</titulo>
0
<autor>
2
<nombre>Roberto</nombre>
1
<apellidos>Canales Mora</apellidos>
2
</autor>
2
<categoria>XML</categoria>
2
<visitas>34842</visitas>
3
</tutorial>
2
<tutorial anio="2013">
4
<titulo>Introduccin a Spring Batch</titulo>
2
<autor>
5
<nombre>Miguel</nombre>
2
<apellidos>Arlandy Rodrguez</apellidos>
6
</autor>
2
<categoria>Spring</categoria>
7
<visitas>1273</visitas>
2
</tutorial>
8 </tutoriales>
2
9
3
0
3
1

3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7

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 descargar aqu
En 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. Ejemplos
En 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 incluirlo


En 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 incluyndolo


Para 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 nodo

Con 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 condicin


Podemos 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 lista


Si 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 textuales
Podemos 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 elemento


Para 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. Conclusiones
Hasta 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 Research <scott_boag@us.ibm.com>
Don Chamberlin (XML Query WG) <dchamber@us.ibm.com>
Mara F. Fernndez (XML Query WG), AT & T Labs
de <mff@research.att.com>
Daniela Florescu (XML Query WG),
Oracle <dana.florescu@oracle.com>
Jonathan Robie (XML Query WG), Red Hat, a
travs http://www.ibiblio.org/jwrobie/
Jrme Simon (XML Query WG), IBM TJ Watson Research
Center <simeon@us.ibm.com>

Por favor, consulte la fe de erratas de este documento, que puede incluir


algunas correcciones normativas.
Ver tambin traducciones.
Este documento tambin est disponible en estos formatos no
normativos: XML y las marcas de cambio relativo a la primera edicin.
Derechos de autor 2010 W3C (MIT, ERCIM, Keio), Todos los Derechos
Reservados. W3C de responsabilidad, marcas y uso de documentos se aplican las
reglas.

Nota:. Este prrafo es informativo Este 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 a http://www.w3.org/TR/xquery-3/.

Abstracto
XML 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 documento


Esta 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 el W3C ndice de informes
tcnicos en 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
Editado Recomendacin del 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 una Propuesta de Recomendacin Editada en 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 documento ha sido desarrollado por el
W3C XML Grupo de Trabajo de consulta, que es parte de
la Actividad XML.
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


la Recomendacin de 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 los cambios K desde la
primera edicin. Este documento sustituye a la primera edicin.
Un informe de aplicacin se encuentra disponible
en http://www.w3.org/XML/Query/test-suite/XQTSReport.html.
Este documento fue elaborado por un grupo que opera bajo el 05 de
febrero 2004 Poltica de Patentes del W3C. W3C mantiene una lista
pblica de cualquier divulgacin de patentes realizadas en relacin con
las entregas del grupo; esa pgina tambin incluye instrucciones para la
divulgacin de una patente. Un individuo que tiene conocimiento real de
una patente que el individuo cree contiene Reclamacin (s)
esencial debe revelar la informacin de acuerdo con el artculo 6 de la
Poltica de Patentes del W3C.

Tabla de contenidos
1 Introduccin
2 Conceptos bsicos
2.1 Contexto Expresin
2.1.1 Contexto esttico
2.1.2 Contexto Dinmico
2.2 Modelo de Procesamiento
2.2.1 Datos Generacin Modelo
2.2.2 Esquema de Importacin Procesamiento
2.2.3 Procesamiento de Expresin
2.2.3.1 esttica Fase de Anlisis
2.2.3.2 Fase de Evaluacin Dinmica
2.2 .4 serializacin
2.2.5 Restricciones Consistencia
2.3 Tratamiento de errores
2.3.1 Tipos de errores
2.3.2 identificar y reportar errores
2.3.3 Manejo de errores dinmicos

2.3.4 Errores y Optimizacin


2.4 Conceptos
2.4.1 Documento Solicitar
2.4.2 atomizacin
2.4.3 Eficaz Boolean Valor
2.4.4 Fuentes de entrada
2.4.5 URI Literales
2.5 Tipos
2.5.1 Tipos predefinidos esquema
2.5.2 Typed Valor y Valor alfanumrico
2.5.3 Sintaxis SequenceType
2.5.4 SequenceType Coincidencia
2.5.4.1 Coincidencia de un SequenceType y un valor de
2,5. 4.2 Coincidencia de un ItemType y un artculo
2.5.4.3 Elemento de prueba
2.5.4.4 Prueba elemento de esquema
2.5.4.5 Atributo de prueba
2.5.4.6 esquema de atributos de prueba
2.6 Comentarios
3 Expresiones
3.1 Expresiones primarias
3.1.1 Literales
3.1.2 Referencias variables
3.1.3 parentizadas Expresiones
3.1.4 Contexto Expresin artculo
3.1.5 Funcin llamadas
3.2 Camino Expresiones de
3.2.1 Pasos
3.2.1.1 Ejes
3.2.1.2 Nodo Pruebas
3.2.2 Los predicados
3.2.3 Sintaxis sin abreviar
3.2.4 Sintaxis abreviada
3.3 Secuencia de Expresiones de
3.3.1 Construir secuencias
3.3 0.2 Filtrar Expresiones

3.3.3 La combinacin de nodo Secuencias


3,4 expresiones aritmticas
3.5 Comparacin Expresiones
3.5.1 Las comparaciones de valor
3.5.2 Comparaciones generales
3.5.3 Las comparaciones de nodo
3.6 Lgica Expresiones
3.7 Constructores
3.7.1 directa Elemento Constructores
3.7.1.1 Atributos
3.7.1.2 Espacio de nombres Declaracin Atributos
3.7.1.3 Contenido
3.7.1.4 Lmites Whitespace
3.7.2 Otros constructores directos
3.7.3 calculadas Constructores
3.7.3.1 computarizada Element Constructores
3.7.3.2 Constructores atributo calculado
3.7.3.3 del documento Nodos Constructores
3.7.3.4 texto del nodo Constructores
3.7.3.5 Computarizada Constructores Instruccin Procesamiento
3.7.3.6 calculadas Constructores Comentar
3.7.4 En-alcance espacios de nombres de un Construido Element
3.8 FLWOR Expresiones
3.8.1 Para y dejar que las Clusulas
3.8.2 Cuando la clusula
3.8.3 Orden Por y volver Clusulas
3.8.4 Ejemplo
3.9 pedimos y desordenada Expresiones
3.10 Condicional Expresiones
3,11 cuantificada Expresiones
3.12 Expresiones sobre SequenceTypes
3.12.1 Instancia de
3.12.2 Typeswitch
3.12.3 moldeada
3.12.4 Castable
3.12.5 Funciones Constructor

3.12.6 Treat
3.13 Validar Expresiones
3.14 Extensin Expresiones
4 Mdulos y prlogos
4.1 Versin Declaracin
4.2 Declaracin Mdulo
4.3 Declaracin de Fronteras en el espacio
4.4 predeterminado Declaracin Colacin
4.5 Base Declaracin URI
4.6 Declaracin de construccin
4.7 pedidos Declaracin Mode
4.8 Vaciar Declaracin Solicitar
4.9 Copy-espacios de nombres Declaracin
4.10 Esquema de Importacin
4.11 Mdulo de importacin
4.12 Espacio de nombres Declaracin
4.13 defecto Espacio de nombres Declaracin
4.14 declaracin de variables
4,15 Declaracin de funciones
4.16 Opcin Declaracin
5 Conformidad
5.1 Mnimos Conformidad
5.2 Caractersticas opcionales
5.2.1 Esquema de Importacin de funciones
5.2.2 Esquema de validacin de funciones
5.2.3 Esttica Funcin Typing
5.2.3.1 estticas Extensiones Typing
5.2.4 Completo Eje Funcin
5.2.5 Mdulo Caracterstica
5.2. 6 serializacin de funciones
5.3 Data Model Conformidad
5.4 Extensiones de sintaxis

Apndices
Un XQuery Gramtica
A.1 EBNF

A.1.1 notacin
A.1.2 Restricciones extra-gramaticales
A.1.3 Gramtica Notas
A.2 estructura lxica
A.2.1 Terminal Smbolos
A.2.2 Terminal Delimitacin
A.2.3 Manejo de Fin de Lnea
A.2.3 0.1 XML 1.0 Fin de Lnea Manejo
A.2.3.2 XML 1.1 Fin de Lnea Manejo
A.2.4 Reglas espacios en blanco
A.2.4.1 defecto Whitespace Manejo
A.2.4.2 explcita Manipulacin Whitespace
A.3 Nombres de funcin Reservados
A.4 Precedencia Orden
B Tipo de Promocin y Operador Mapeo
B.1 Tipo Promocin
B.2 Operador Cartografa
C Contexto Componentes
C.1 esttico Contexto Componentes
C.2 Contexto Dinmico Componentes
C.3 serializacin Parmetros
D Artculos definido por la implementacin
E Referencias
E. 1 Referencias Normativas
E.2 Referencias para no normativos
E.3 Fondo material
F Error Condiciones
G La aplicacin / xquery Tipo de soporte
G.1 Introduccin
G.2 Registro de MIME Tipo de soporte application / XQuery
G.2.1 Consideraciones de interoperabilidad
G.2.2 Publicado especificacin
G.2.3 Las aplicaciones que utilizan este tipo de medios
G.2.4 extensiones de archivo
G.2.5 Destinado Uso
G.2.6 Autor / Cambio controlador

G.3 Codificacin de consideraciones


G.4 Reconociendo XQuery Archivos
G.5 Charset defecto Reglas
G.6 Consideraciones de Seguridad
H Glosario ( no normativo)
I Ejemplo Aplicaciones (no normativo)
I.1 une
I.2 Agrupacin
I.3 Consultas en Secuencia
I.4 recursiva Transformaciones
I.5 Seleccin Distinto Combinaciones
J Gua para el Manejo de los mdulos (no normativo)
J. 1 Mdulo URI
J.2 mltiples mdulos con el mismo mdulo URI
J.3 Ubicacin URI
J.4 Ciclos
K Cambios desde la Primera Edicin (no normativo)

1. Introduccin
Como 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 de Uso]. 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 [XPath 1.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 el modelo de datos, se define en [XQuery 1.0 y
XPath 2.0 Modelo de Datos (Second Edition)].]
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 [Esquema XML].

La biblioteca de funciones incorporadas y los operadores apoyados


por XQuery se definen en [XQuery 1.0 y XPath 2.0 Funciones y
operadores (Segunda edicin)].
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)
(Segunda edicin)].
Este documento especifica una gramtica para XQuery, utilizando la
misma notacin EBNF bsico utilizado en [XML 1.0]. A menos que se
indique lo contrario (ver estructura lxica A.2), espacio en blanco no es
significativa en las consultas. Producciones gramaticales se introducen
junto con las caractersticas que se describen, y una gramtica completa
tambin se presenta en el apndice [A XQuery Gramtica]. 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, como definido por la
implementacin o dependiente de la implementacin.

[Definicin: Implementacin definidos indica un aspecto que


puede diferir entre las implementaciones, sino que debe ser

especificado por el implementador para cada aplicacin en


particular.]

[Definicin: Implementacin dependiente indica 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
(Segunda edicin)]. En este documento, se proporcionan ejemplos y
materiales etiquetados como "Nota" con fines explicativos y no normativo.

2 Conceptos bsicos
El bloque bsico de XQuery edificio es la expresin, que es una cadena
de [Unicode] personajes (la versin de Unicode que se utilizar
est definido por la implementacin.) 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 en A.3 nombres
reservados de funcin.

[Definicin: En el modelo de datos, el valor es siempre


una secuencia.] [Definicin: Una secuencia es una coleccin ordenada
de cero o mselementos.] [Definicin: Un elemento es o bien un valor
atmico o un nodo.] [Definicin: Un valor atmico es un valor en el
espacio de valor de un tipoatmico, como se define
en [Esquema XML]] [. Definicin: Un nodo es una instancia de una de
las clases de nodos definidos en [XQuery 1.0 y XPath 2.0 Modelo de
Datos (Segunda Edition)].] Cada nodo tiene una nica identidad
de nodo, un valor escrito, y un valor de cadena. Adems, algunos nodos
tienen un nombre. El valor escrito de un nodo es una secuencia de cero
o ms valores atmicos. El valor de cadena de un nodo es un valor de
tipo xs: string. El nombre de un nodo es un valor de
tipo xs: QName. [Definicin: En ciertas situaciones se dice un valor a
ser indefinido (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 un singleton.] 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 denomina secuencia vaca.]
[Definicin: El trmino instancia XDM se utiliza, como sinnimo del
trmino valor, para denotar una secuencia ilimitada de nodos y /
o valores atmicos en el modelo de datos.]
Nombres en XQuery se llaman QNames, y se ajustan a la sintaxis
en [XML Names]. [Definicin: Lxicamente, un QName consiste 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 ampliado por la
resolucin de su prefijo de espacio de nombres a un espacio de nombres
URI, utilizando los espacios de nombres estticamente
conocidos [err: XPST0081]. [Definicin: Un QName ampliado consiste
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: anyURI escriba [esquema XML]. 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

(ver 4.15

Declaracin de funciones.)
Adems de los prefijos en la lista anterior, este documento se utiliza el
prefijo err para representar el espacio de nombres
URIhttp://www.w3.org/2005/xqt-errors (ver 2.3.2 La identificacin y
presentacin de informes de errores). 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 llamada espacios de nombres
consideradas en el estudio. [Definicin: El en-alcance espacios de
nombrespropiedad de un nodo de elemento es un conjunto de enlaces
de espacio de nombres, 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 [XPath 1.0], los espacios de nombres consideradas en el estudio de
un nodo elemento estn representados por una coleccin de nodos
espacio de nombres dispuestos en un eje de espacio de nombres, 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 trmino URI se refiere a un
identificador de recursos universal segn se define en [RFC3986] y
ampliado en [RFC3987] con el nuevo nombre IRI.] 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: El contexto de la expresin de una expresin dada consiste
en toda la informacin que puede afectar el resultado de la expresin.]
Esta informacin se organiza en dos categoras llamaron el contexto
esttico y el contexto dinmico.
2.1.1 Contexto Esttico

[Definicin: El contexto esttico de 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 un error esttico. Si el anlisis de una expresin
depende de algn componente del contexto esttico que no se ha
asignado un valor, un error esttico se eleva [err: XPST0001].
Los componentes individuales de la contexto esttico se resumen a
continuacin. Las normas que rigen el alcance y la inicializacin de estos
componentes se pueden encontrar en componentes C.1
Contexto Esttico.
[Definicin:. Modo de compatibilidad 1.0 XPath Este 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 a falsa.]
[Definicin:. Espacios de nombres estticamente
conocidos Este 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 los xs:
anyURI escriba [esquema XML]. Tenga en cuenta la diferencia
entre los espacios de nombres consideradas en el estudio, que es
una propiedad dinmica de un nodo elemento, y los espacios de
nombres estticamente conocidos, 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 por las declaraciones de espacio de
nombres en un prlogo y atributos de declaracin de espacio de
nombres en constructores de elementos directos.
[Definicin:. Por defecto espacio de nombres elemento /
Tipo Este 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:
anyURI escriba [esquema XML].
[Definicin:. Por defecto la funcin de espacio de nombres Se
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: anyURI escriba [esquema XML].
[Definicin:. En-alcance definiciones de esquema Este 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:
o [Definicin: tipos incluidas en el esquema. Cada tipo de
definicin de esquema se identifica bien por un QName
ampliado (para un tipo con nombre) o por un dependiente de
la implementacin identificador de tipo (por

un tipo annimo). El en-alcance tipos de esquema incluyen


los tipos de esquemas predefinidos que se describen
en 2.5.1 Tipos predefinidos de esquema. Si la funcin de
importacin de esquema se apoya, en mbito tipos de
esquema tambin incluyen todas las definiciones de tipo que
se encuentran en esquemasimportados.]
o [Definicin:. Declaraciones de elementos consideradas en
el estudio Cada declaracin de elemento se identifica bien
por un QName ampliado (para una declaracin de elemento
de nivel superior) o por un dependiente de la
implementacin identificador elemento (para una declaracin
de elemento local). Si la caracterstica de esquema de
importacin es el apoyo, dentro del alcance declaraciones de
elementos incluyen todas las declaraciones de elementos
que se encuentran en esquemas importados.] Una
declaracin de elemento incluye informacin acerca del
elemento de grupo de sustitucin de afiliados.
[Definicin: grupos de sustitucin se definen en [XML
Schema] Parte 1, Seccin 2.2.2.2. Informalmente, el grupo
de sustitucin a cargo de un elemento dado (llamado
el elemento de cabeza) 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.]
o [Definicin:. Declaraciones de atributos consideradas en
el estudio Cada declaracin de atributo se identifica bien por
un QName ampliado (para una declaracin de atributo de
nivel superior) o por un dependiente de la
implementacin identificador de atributo (para una
declaracin de atributo local). Si la caracterstica de esquema
de importacin es el apoyo, dentro del alcance declaraciones
de atributos incluyen todas las declaraciones de atributos que
se encuentran en esquemas importados.]
[Definicin:. Consideradas en el estudio de variables Se trata de
un conjunto de (ampliado QName, tipo) pares. Define el conjunto
de variables que estn disponibles para la referencia dentro de una
expresin. El QName ampliado es el nombre de la variable, y el
tipo es el tipo esttico de la variable.]
Las declaraciones de variables en un Prolog se aaden a las
variables consideradas en el estudio. Una expresin que se une
una variable (como un let, para, alguna o todas de expresin)

extiende las variables que estn dentro del alcance de sus


subexpresiones con la nueva variable ligada y su tipo . Dentro de
una declaracin de la funcin, las variables de alcance se
extienden por los nombres y tipos de los parmetros de lafuncin.
El tipo esttico de una variable puede ser declarada ya sea en una
consulta o (si el Feature tipos estticos est habilitado) inferirse por
las reglas de inferencia de tipo estticas como se describe
en [XQuery 1.0 y XPath 2.0 Semntica Formal (Segunda edicin)].
[Definicin:. Elemento de contexto tipo esttico Este
componente define el tipo esttico del elemento de contexto dentro
del alcance de una expresin dada.]
[Definicin:. Firmas de funcin Este componente define el
conjunto de funciones que estn disponibles para ser llamado
desde dentro de una expresin. Cada funcin est identificada por
su ampliado QName y su aridad (nmero de parmetros).] Adems
del nombre y aridad, cada firma funcin especifica los tipos
estticos de los parmetros de la funcin y resultado.
Las firmas de funcin incluyen las firmas
de funciones constructoras, que se discuten en 3.12.5
Funciones Constructor.
[Definicin:. Colaciones estticamente conocidos Esta es
una aplicacin definida por el conjunto de pares (URI, cotejo). En l
se definen los nombres de las colaciones que estn disponibles
para su uso en procesamiento de consultas y expresiones]
[. Definicin: Una colacin es 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
(Segunda edicin)].]
[Definicin:. Colacin por defecto Esto identifica una de las
colaciones en colaciones estticamente conocidos como la
colacin para ser utilizado por las funciones y operadores de
comparacin y los valores de tipo de ordenar xs: string y xs:
anyURI (y tipos derivados de ellos) cuando no explcita se especifica
la intercalacin.]
[Definicin:. El modo de construccin El modo de construccin
gobierna el comportamiento de los elementos y nodos documento
constructores.Si el modo de construccin es preservar, el tipo de
un nodo elemento construido es xs: anyType, y todos los nodos de

elementos y atributos copiados durante la construccin nodo de


conservar sus tipos originales. Si el modo de construccin
es la tira, el tipo de un nodo elemento construido es xs:
sin tipo; todos los nodos de elementos copiados durante la
construccin nodo de recibir el tipo xs: sin tipo, y todos los nodos
de atributos copiados durante la construccin nodo de recibir el
tipo xs: untypedAtomic.]
[Definicin:. Ordenando modo de modo de Orden, que tiene el
valor de ordenada o desordenada, afecta el orden de la secuencia de
resultados devuelto por ciertas expresiones
de ruta, sindicales, cruzan, y salvo expresiones y expresiones
FLWOR que no tienen ninguna orden por clusula.] Detalles se
proporcionan en las descripciones de estas expresiones.
[Definicin:. Orden por defecto para las secuencias vacas Este
componente controla el procesamiento de secuencias vacas
y NaN valora como pedir las llaves en un orden por clusula en una
expresin FLWOR, como se describe en 3.8.3 clusulas ORDER
BY y Retorno.] Su valor puede ser ms o menos.
[Definicin:. La poltica de lmites espacio-Este componente
controla el procesamiento de espacios en blanco
frontera por constructores de elementos directos, como se describe
en 3.7.1.4 Lmites espacios en blanco.] Su valor se puede
preservar o tira.
[Definicin:. El modo de copia-namespaces Este 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 en 3.7.1 directa Elemento
de constructores. Su valor consiste en dos partes: preservar o sin
conservar y heredar o no-heredan.]
[Definicin:. Base URI Esto es un URI absoluto, que se utiliza
cuando es necesario en la resolucin de URIs relativos (por
ejemplo, por el fn: resolver-uri funcin.)] El valor URI se normaliz
el espacio en blanco de acuerdo a las normas de los xs:
anyURI escriba [esquema XML].
[Definicin:. Documentos estticamente conocidos Este es un
mapeo de las cadenas sobre tipos. La cadena representa el URI
absoluta de un recurso que es potencialmente disponible utilizando
el fn: doc funcin. El tipo es el tipo esttico de una llamada a fn:
doc con el URI dado como argumento literal. ] Si el argumento

de fn: doc es una cadena literal que no est presente en los


documentos estticamente conocidos,entonces el tipo
esttico de fn: doc es documento-node ()?.
Nota:
El propsito de los documentos estticamente conocidos es
el de proporcionar informacin de tipo esttico, no para
determinar qu documentos estn disponibles. Un URI no tiene
por qu encontrarse en los documentos estticamente
conocidos para acceder usandofn: doc.
[Definicin:. Colecciones estticamente conocidos Este es un
mapeo de las cadenas sobre tipos. La cadena representa el URI
absoluta de un recurso que es potencialmente disponible utilizando
el fn: Coleccin funcin. El tipo es el tipo de la secuencia de nodos
que resultaran de llamar al fn: coleccin. Funcin con este URI
como argumento] Si el argumento de fn: coleccin es una cadena
literal que no est presente encolecciones
estticamente conocidos, entonces el tipo esttico de fn:
coleccin es nodo () *.
Nota:
El propsito de las colecciones estticamente conocidos es
el de proporcionar informacin de tipo esttico, no para
determinar qu colecciones estn disponibles. Un URI no tiene
por qu encontrarse en las colecciones estticamente
conocidos para acceder usando fn:coleccin.
[Definicin:. Estticamente conocido tipo de coleccin
predeterminada Este 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
la coleccin predeterminada estticamente conocido
tipo es node () *.
2.1.2 Contexto Dinmico

[Definicin: El contexto dinmico de 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 del contexto
dinmico que no se ha asignado un valor, un error dinmico es
planteado [err:XPDY0002].

Los componentes individuales del contexto dinmico se resumen a


continuacin. Otras normas que rigen la semntica de estos
componentes se pueden encontrar en Componentes Contexto
C.2 dinmicos.
El contexto dinmico consiste en todos los componentes
del contexto esttico, y los componentes adicionales que se enumeran a
continuacin.
[Definicin: Los tres primeros componentes del contexto dinmico (tema
contexto, la posicin contextual y el tamao contextual) se llama
el enfoque de 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 la expresin de ruta E1
/ E2 y el predicado E1 [E2], crean un nuevo enfoque para la evaluacin
de una sub-expresin. En estas construcciones, E2 se evala una vez
para cada elemento de la secuencia que resulta de la evaluacin
de E1. Cada vez E2 se evala, se evala con un enfoque diferente. El
enfoque para la evaluacin de E2 se hace referencia ms adelante como
el enfoque interno, mientras que el enfoque para la evaluacin de E1 se
conoce como el foco exterior. Existe el enfoque interno slo
mientras E2 est siendo evaluado. Cuando esta evaluacin es completa,
la evaluacin de la expresin que contiene contina con su enfoque
original sin cambios.
[Definicin: El elemento de contexto es 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 el nodo de contexto.] El elemento de
contexto es devuelto por una expresin que consta de un solo
punto (. ). Cuando una expresin E1 / E2 o E1 [E2] se evala, cada
elemento de la secuencia obtenida mediante la evaluacin de E1 se
convierte en el elemento de contexto en el enfoque interno para
una evaluacin de E2.
[Definicin: La posicin de contexto. 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 expresin fn:


posicin (). Cuando una expresin E1 / E2 o E1 [E2] se evala, la
posicin contexto en el foco interior para una evaluacin de E2 es la
posicin del elemento de contexto en la secuencia obtenida
mediante la evaluacin de E1. 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: El tamao de contexto. 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 expresin fn: last (). Cuando una
expresin E1 / E2 o E1 [E2]se evala, el tamao contexto en el foco
interior para una evaluacin de E2 es el nmero de elementos de la
secuencia obtenida mediante la evaluacin de E1.
[Definicin: Los valores de variables. Se trata de un conjunto de
(ampliado QName, valor) pares. Contiene los mismos QNames
ampliadas como las variables de alcance en el contexto
esttico para la expresin. El QName ampliado es el nombre de la
variable y el valor es el valor dinmico de la variable, que incluye
su tipo dinmico.]
[Definicin: implementaciones de funcin. Cada funcin en firmas
de funcin tiene 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 una funcin definida por
el usuario, la implementacin de la funcin es una expresin
XQuery. Para una funcin incorporada o funcin externa, la
implementacin de la funcin esdependiente de
la implementacin.]
[Definicin:. FechaHora actual Esta informacin representa
un dependiente de la implementacin punto en el tiempo durante el
procesamiento deuna consulta, e incluye una zona horaria
explcito. Puede ser recuperado por el fn: corrientedateTime funcin. Si se invoca varias veces durante la ejecucin
de una consulta, esta funcin siempre devuelve el mismo
resultado.]
[Definicin:. Implcito zona horaria Esta 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 una aplicacin definida

por el valor de tipo xs:dayTimeDuration. Ver [Esquema XML] para


el rango de los valores legales de una zona horaria.]
[Definicin:. Documentos disponibles Este 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 el modelo de datos. El
nodo de documento es devuelto por el fn: doc funcin 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 en los documentos disponibles que se
asignan a un nodo de documento D, entonces la propiedaddocumento uri de Do bien debe estar ausente, o debe ser uno de
estos URI.
Nota:
Esto significa que le da un nodo de documento $ N, el
resultado de fn: doc (fn:-documento uri ($ N)) es de $
N siempre ser cierto que a menos fn:-documento uri ($ N) es
una secuencia vaca.
[Definicin:. Colecciones disponibles Este 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 la fn: Coleccin funcin cuando URI que se suministra
como argumento. ] El conjunto de colecciones disponibles no se
limita al conjunto de colecciones estticamente conocidos, y puede
estar vaco.
Por cada nodo de documento D que se encuentra en el blanco de
una asignacin en colecciones disponibles, o que es la raz de un
rbol que contiene un nodo tal, la propiedad-documento uri de D o
bien debe estar ausente, o debe ser un URI U tal que documentos
disponibles contiene un mapeo de U a D ".
Nota:
Esto significa que para cualquier nodo de documento $
N recuperada mediante el fn: Coleccin funcin, ya sea
directamente o mediante la navegacin a la raz de un nodo
que se ha devuelto, el resultado de fn: doc (fn: Documento-uri
($ N)) es de $ N siempre ser cierto que a menos fn:
Documento-uri ($ N) es una secuencia vaca. Esto implica un
requisito para el fn: doc y fn: recogida de funciones para ser

consistentes en su efecto. Si la aplicacin utiliza catlogos o


resolucin de URI suministrados por el usuario a la URI
dereference suministrados al fn: doc funcin, la aplicacin de
la fn: Coleccin funcin 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 el fn:
doc funcin.
[Definicin:. Predeterminado coleccin Esta es la secuencia de
nodos que resultaran de llamar al fn: coleccin. Funcin sin
argumentos] El valor de la coleccin predeterminada puede ser
inicializado por la implementacin.

2.2 Modelo de Procesamiento


XQuery se define en trminos del modelo de datos y el contexto de
la expresin.

Figura 1: Modelo de Procesamiento de Informacin general


Figura 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 marcada de procesamiento externo. El dominio de procesamiento

externo incluye la generacin de una instancia de XDM que representa


los datos para ser consultados (ver 2.2.1 Datos Generacin Modelo), el
procesamiento de importacin de esquema (ver 2.2.2 Esquema de
Importacin deprocesamiento) y la serializacin
(ver 2.2.4 serializacin). El rea dentro de los lmites de la lengua se
conoce como el dominio de procesamiento deconsultas, que incluye el
anlisis esttico y las fases de evaluacin dinmica (vase 2.2.3
Procesamiento de Expresin). Restricciones de consistencia en
la consulta de dominio de procesamiento se definen en 2.2.5
Restricciones de consistencia.
2.2.1 Datos Generacin Modelo

Antes de una consulta puede ser procesada, sus datos de entrada deben
ser representados como una instancia de XDM. 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 un ejemplo XDM:
1. Un documento puede ser analizado usando un analizador XML que
genera un XML Information Set (ver [conjunto de
informacin XML]). El documento analizado puede entonces ser
validado contra uno o varios esquemas. Este proceso, que se
describe en [Esquema XML], resulta en una estructura de
informacin abstracta llama el Post-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
una instancia de XDM por un procedimiento descrito en [XQuery
1.0 y XPath 2.0 Modelo de Datos (Second Edition)]. (Ver DM2 en la
Fig. 1.)
Los pasos anteriores proporcionan un ejemplo de cmo un ejemplo
XDM podra 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 de datos, pero no impone ninguna
restriccin sobre cmo instancias XDM son construido.
[Definicin: Cada nodo de elemento y el nodo de atributo en
una instancia de XDM tiene una anotacin de tipo (que se refiere

el [XQuery 1.0 y XPath 2.0 Modelo de Datos (Segunda edicin)] como


su nombre-tipo de propiedad.) El tipo de anotacin de un nodo es un tipo
de esquema que describe la relacin entre el valor de cadena del nodo y
su valor con tipo.] Si la instancia de XDM se deriv de un documento
XML validado como se describe en la Seccin 3.3 de la construccin de
un PSVI DM, 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 las anotacin de
tipo xs: 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. El tipo de anotacin de 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 esquema xs: sin tipo. Un elemento
que ha sido validado y se encontr que ser parcialmente vlido se anota
con el tipo de esquema xs: anyType. Si un nodo elemento est anotado
como xs: sin tipo, todos sus nodos de elemento descendiente tambin
estn anotados como xs: sin tipo. Sin embargo, si un nodo elemento
est anotado como xs: anyType, algunos de sus nodos de elementos
descendientes pueden tener una ms especfica tipo de anotacin.
2.2.2 Esquema de Importacin Procesamiento

Las definiciones de esquema consideradas en el estudio en el contexto


esttico pueden 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 en 2.2.5 Restricciones deconsistencia.
Procesamiento 2.2.3 Expresin

XQuery define dos fases de procesamiento de llamadas de la fase de


anlisis esttico y de la fase de evaluacin dinmica (ver Fig. 1). Durante
la fase de anlisis esttico, los

errores estticos, errores dinmicos, o errores de tipo pueden ser


incrementados. Durante la fase de evaluacin dinmica, slo los errores
dinmicos o errores de tipo pueden ser incrementados. Este tipo de
errores se definen en 2.3.1 Tipos de errores.
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: La fase de anlisis esttico depende de la expresin de s


mismo y en el contexto esttico. La fase de anlisis esttico no
depende de los datos de entrada (distintos de los esquemas).]
Durante la fase de anlisis esttico, la consulta se analiza en una
representacin interna llamado el rbol de operacin (paso SQ1 en la
Figura 1). Un error de anlisis se plantea como un error
esttico [err: XPST0003]. El contexto esttico es inicializado por la
aplicacin (paso SQ2). El contexto estticose cambia entonces y
aumentada basado en la informacin en el prlogo (paso SQ3). Si
la caracterstica de esquema de importacin es compatible,
las definiciones de esquema en el estudio que se rellenan con la
informacin de esquemas importados. Si la caracterstica del mdulo es
compatible, el contexto esttico se ampla con declaraciones de
funciones y declaraciones de variables de los mdulos
importados. El contexto esttico se 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 el rbol de la operacin no se encuentra en
el contexto esttico, un error
esttico ([err: XPST0008] o [err: XPST0017]) es elevado (no obstante,
ver excepciones a esta regla en 2.5.4.3 Prueba Element y 2.5.4.5
Prueba Atributo.)
El rbol de la operacin es luego normaliz al hacer explcitas las
operaciones implcitas tales como la atomizacin y la extraccin de
los valores efectivos de Boole (paso SQ5). El proceso de normalizacin
se describe en [XQuery 1.0 y XPath 2.0 Semntica Formal
(Segunda edicin)].

Cada expresin entonces se le asigna un tipo esttico (paso


SQ6). [Definicin: El tipo esttico de expresin es un tipo tal que,
cuando se evala la expresin, el valor resultante siempre ser conforme
con el tipo esttico.] Si la caracterstica tipos estticos es compatible,
los tipos estticos de diversas expresiones se infieren de acuerdo a las
reglas descritas en [XQuery 1.0 y XPath 2.0 Semntica Formal
(Segunda edicin)]. Si la caracterstica tipos estticos no es compatible,
los tipos estticos que se asignan son dependiente de la implementacin.
Durante la fase de anlisis esttico, si la caracterstica mecanografa
esttica est en vigor y un operando de una expresin se encuentra que
tiene untipo esttico que no es apropiado para ese operando, un error de
tipo se eleva [err: XPTY0004]. Si la comprobacin de tipos estticos
plantea ningn error y asigna un tipo esttico T 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
un error dinmico.
El propsito de la Funcin tipos estticos es para proporcionar la
deteccin temprana de errores de tipo y 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: La fase de evaluacin dinmica. Es la fase durante la cual


se calcula el valor de una expresin] Se produce despus de la
finalizacin de lafase de anlisis esttico.
La fase de evaluacin dinmica slo puede ocurrir si no se detectaron
errores durante la fase de anlisis esttico. Si la caracterstica de
mecanografa esttica es, en efecto, todos los errores de tipo son
detectados durante el anlisis esttico y sirven para inhibir la fase de
evaluacin dinmica.
La fase de evaluacin dinmica depende del rbol de la operacin de la
expresin de ser evaluado (paso DQ1), sobre los datos de entrada (paso
DQ4), y en el contexto dinmico (paso DQ5), que a su vez atrae a la
informacin del medio externo (paso DQ3 ) y el contexto esttico (paso
DQ2). La fase de evaluacin dinmica puede crear nuevos valores en
modelos de datos (paso DQ4) y se podr prorrogar el contexto
dinmico (paso DQ5), por ejemplo, por los valores de unin a las
variables.

[Definicin: Un tipo dinmico est asociado con cada valor, ya que se


calcula. El tipo dinmico de un valor puede ser ms especfico que el tipo
esttico de la expresin que calcula l (por ejemplo, el tipo esttico de
una expresin podra ser xs: integer *, que denota una secuencia de
cero o ms nmeros enteros, pero al tiempo de evaluacin su valor
puede tener el tipo dinmico xs: enteros, que denota exactamente un nmero
entero)].

Si se encuentra que un operando de una expresin para tener un tipo


dinmico que no es apropiado para ese operando, un error de tipo se
eleva [err:XPTY0004].
A pesar de que la tipificacin esttica puede coger muchos errores de
tipo antes 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 dinmico resultar. Del mismo modo, una
expresin puede aplicar un operador aritmtico a un valor cuyo tipo
esttico es xs: untypedAtomic. Esto no es un error esttico, pero en
tiempo de ejecucin, si el valor no se puede lanzar con xito a
una numrico tipo, un error dinmico se elevar.
Cuando la caracterstica esttica Typing es, en efecto, tambin es posible
que el anlisis esttico de una expresin para elevar un error de tipo, 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 el tipo esttico del parmetro de la funcin de ser un
elemento opcional. Este caso se trata como un error de tipo e 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 serializacin es el proceso de convertir una instancia de


XDM en 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 (Segunda edicin)].

Una implementacin XQuery no est obligado a proporcionar una interfaz


de serializacin. Por ejemplo, una aplicacin slo podr proporcionar una
interfaz DOM (ver [Document Object Model]) 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 de parmetros de serializacin que 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) en los parmetros de serializacin C.3. Una
implementacin de XQuery que proporciona una interfaz de serializacin
debe ser compatible con una combinacin de parmetros de serializacin
en el que method = "xml" y version = "1.0".
Nota:
El modelo de datos permite a un nodo elemento a tener menos espacios
de nombres consideradas en el estudio que su padre. Serializacin
correcta de un nodo tal elemento requerira "undeclaration" de espacios
de nombres, que es una caracterstica de [XML Names 1.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 consistencia

Para que XQuery para estar bien definido, la entrada


de instancia XDM, el contexto esttico, y el contexto dinmico deben 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 de una consulta bajo cualquier
condicin en la cual una o ms de estas limitaciones no se cumple.
Algunas de las restricciones de consistencia usan el trmino esquema
de modelo de datos. [Definicin: Para un nodo dado en
un ejemplo XDM, elesquema de modelo de datos se define como el
esquema de la cual el tipo de anotacin se deriva de ese nodo.] Para un

nodo que se construy por algn procedimiento distinto de la validacin


de esquema, el modelo de datos esquema consiste simplemente en la
definicin de tipo de esquema que se representa mediante la anotacin
de tipo del nodo.
Por cada nodo que tiene una anotacin de tipo, si ese tipo de
anotacin se encuentra en el in-alcance definiciones de
esquema (SIDS), a continuacin, su definicin en el ISSD debe ser
equivalente a su definicin en el esquema de modelo de datos. Por
otra parte, todos los tipos que se derivan, por extensin, del tipo
dado en el esquema de modelo de datos tambin deben ser
conocidos por las definiciones equivalentes en el ISSD.
Por cada nombre de elemento ES que se encuentra tanto en
una instancia de XDM y en las definiciones incluidas en el
esquema (SIDS), todos los elementos que se conocen en
el esquema de modelo de datos para estar en el grupo de
sustitucin encabezada por ES tambin debe ser conocido en el
ISSD para estar en el grupo de sustitucin encabezada por ES.
Cada nombre de elemento, atributo nombre, o el esquema nombre
del tipo de referencia en en mbito de variables o firmas de
funcin deben estar en las definiciones de esquema consideradas
en el estudio, a menos que sea un nombre de elemento que se
hace referencia como parte de un ElementTest o un nombre de
atributo referenciado como parte de un AttributeTest.
Cualquier referencia a un nombre global elemento, atributo, o
escribe en las definiciones de esquema consideradas en el
estudio debe tener un elemento correspondiente, atributo o tipo de
definicin en las definiciones de esquema consideradas en
el estudio.
Para cada asignacin de una cadena en un nodo de documento
de los documentos disponibles, si existe una aplicacin de la
misma cadena en un tipo de documento en documentos
estticamente conocidos, el nodo documento debe coincidir con el
tipo de documento, el uso de las normas de congruencia en 2.5.4
SequenceType Coincidencia.
Para cada asignacin de una cadena a una secuencia de nodos
en colecciones disponibles, si existe una aplicacin de la misma
cadena a un tipo de colecciones estticamente conocidos, la

secuencia de nodos debe coincidir con el tipo, el uso de las normas


de congruencia en 2.5.4 SequenceType Coincidencia.
La secuencia de nodos de la coleccin predeterminada debe
coincidir con el tipo de coleccin por defecto de forma
esttica conocida, utilizando las reglas de coincidencia en 2.5.4
SequenceType Matching.
El valor del elemento de contexto debe coincidir con el tipo esttico
elemento de contexto, el uso de las normas de congruencia
en 2.5.4 SequenceType Matching.
Para cada uno (variable, tipo) par en las variables consideradas en
el estudio y el correspondiente (valor variable) par de valores 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 en 2.5.4 SequenceType Matching .
Para cada variable declarada como externa: Si la declaracin de
variables incluye un tipo declarado, el entorno externo debe
proporcionar un valor para la variable que coincide con el tipo

2.5.4
SequenceType Matching. 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: la implementacin de
la funcin debe devolver, ya sea un valor que coincide con el tipo
de resultado declarada, utilizando las reglas de coincidencia
en 2.5.4 SequenceType Matching, o subir una aplicacin definida
por el error.
Para una consulta determinada, definir un ISSD
participando como las definiciones de esquema consideradas en
el estudio de 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 esquema T, el conjunto de
tipos derivados por extensin de T debe ser equivalente en ambos
ISSDs.Adems, si dos ISSDs participantes cada uno contienen una
definicin de un nombre de elemento E, el grupo de sustitucin
encabezada por Edebe ser equivalente en ambos ISSDs.
declarado, utilizando las reglas de coincidencia en

En los espacios de nombres estticamente conocidos, el


prefijo xml no debe obligarse a ningn URI de espacio que no
seahttp://www.w3.org/XML/1998/namespace, y ningn prefijo que
sea XML se puede unir a este espacio de nombres URI.

no

Manejo 2.3 Error


2.3.1 Tipos de Errores

Como se describe en 2.2.3 Procesamiento de Expresin, XQuery define


una fase de anlisis esttico, que no depende de los datos de entrada, y
unafase de evaluacin dinmica, que no depende de los datos de
entrada. Los errores pueden ser planteadas durante cada fase.
[Definicin: Un error esttico es un error que debe ser detectado
durante la fase de anlisis esttico. Un error de sintaxis es un ejemplo de
un erroresttico.]
[Definicin: Un error dinmico es 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: Un error de tipo puede elevarse durante la fase de anlisis
esttico o la fase de evaluacin dinmica. Durante la fase de anlisis
esttico, un error de tipo se produce cuando el tipo esttico de una
expresin no coincide con el tipo esperado del contexto en el que se
produce la expresin.Durante la fase de evaluacin dinmica, un error de
tipo ocurre cuando el tipo dinmico de valor no coincide con el tipo
esperado del contexto en que se produce el valor.]
El resultado de la fase de anlisis esttico es el xito o uno o ms errores
de tipo, errores estticos o estticamente
detectados errores dinmicos. El resultado de la fase de evaluacin
dinmica es o bien un valor de resultado, un error de tipo, o de
un error dinmico.
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 la fase de anlisis esttico, si la caracterstica mecanografa


esttica est en efecto y el tipo esttico asignado a una expresin que no
sea () olos datos (()) es vaco-secuencia (), un error esttico se
eleva [err: XPST0005]. Esto atrapa casos en los que una consulta se
refiere a un elemento o atributo que no est presente en las definiciones
de esquema consideradas en el estudio, posiblemente debido a un error
de ortografa.
Independientemente de si la caracterstica esttica Typing es, en efecto,
si una aplicacin puede determinar durante la fase de anlisis
esttico que una expresin, si es evaluado, necesariamente criar a
un error de tipo o de un error dinmico, la aplicacin puede (pero no est
obligado a) Informe ese error durante la fase de anlisis esttico. Sin
embargo, el fn: error () funcin no debe ser evaluado durante la fase de
anlisis esttico.
[Definicin: Adems de los errores estticos, errores dinmicos y errores
de tipo, una implementacin de XQuery puede plantear advertencias, ya
sea durante la fase de anlisis esttico o la fase de
evaluacin dinmica. Las circunstancias en las que se cran advertencias
y las formas en que las advertencias se manejan, son definido por
la implementacin.]
Adems de los errores definidos en esta memoria descriptiva, una
implementacin puede plantear un error dinmico por 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, son dependiente de la implementacin.
2.3.2 identificar y reportar errores

Los errores definidos en esta especificacin se identifican por QNames


que tienen la forma err: XXYYnnnn, donde:

denota el espacio de nombres de errores XPath y


XQuery, http://www.w3.org/2005/xqt-errors. Esta unin del prefijo
de espacio err se utiliza por conveniencia en este documento, y no
es normativo.
XX indica el idioma en el que se define el error, utilizando la
siguiente codificacin:
err

denota un error definida por XPath. Este error tambin


puede producirse XQuery desde XQuery incluye XPath como
un subconjunto.
o XQ denota un error definido por XQuery.
o

YY

XP

indica la categora de error, utilizando la siguiente codificacin:


o

ST

indica un error esttico.

DY

denota un error dinmico.

TY

denota un error de tipo.

nnnn

es 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 es definido por la implementacin.
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
URI NSy parte local LP puede ser representado como el URI de
referencia NS # LP. Por ejemplo, un error cuya QName es err:
XPST0017 podra representarse como http://www.w3.org/2005/xqterrors#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 es definido por la implementacin.
2.3.3 Manejo de errores dinmicos

Excepto como se indica en este documento, si cualquier operando de


una expresin plantea un error dinmico, la expresin tambin plantea
un errordinmico. 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 lgica expr1 y expr2 pueden
devolver el valor false si cualquier operando vuelve falsa, 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) y xs: 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 llamados valores de error.] 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 una funcin incorporada o el
operador. Por ejemplo, el div operador genera un error si los operandos
son xs: decimal valores 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 (Segunda edicin)].
Un error dinmico tambin se puede elevar de forma explcita llamando
al fn: error de 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 (Segunda edicin)]. 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 prefijo aplicacinest 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 Optimizacin

Debido a que diferentes implementaciones pueden elegir para evaluar u


optimizar una expresin de diferentes maneras, ciertos aspectos de la
deteccin y la notificacin de errores dinmicos son dependiente de
la implementacin, 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
las expresiones de filtro sugiere 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 predicado posicin () = 1. En la
prctica, muchas implementaciones reconocern que puedan evaluar
esta expresin al tomar el primer elemento de la secuencia y luego
salir. Si $ s est 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 un libro de los
elementos de los datos de entrada con ms de un autor subelemento.
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 expresin Q que tiene un operando (sub-expresin) E. En
general, el valor de E es 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 de Q, es decir, el valor V o un error,
entonces el procesador puede entregar el resultado V sin evaluar otros
elementos en el operando E. 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


operando E (en todo o en parte), entonces es necesario establecer que el
valor real del operando E no viola ninguna restriccin en su
cardinalidad. Por ejemplo, la expresin $ e eq 0 resultados en un error de
tipo si el valor de $ e contiene dos o ms elementos. Un procesador no
se le permite decidir, despus de evaluar el primer elemento en el valor
de $ e y encontrarlo igual a cero, que los nicos resultados posibles son
el valor verdadero o un error de tipo causado por la violacin
cardinalidad. Se debe establecer que el valor de $ e no 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
operandos E1 yE2, puede ser evaluado mediante las muestras de las
respectivas secuencias que satisfacen las reglas anteriores.
La cascada de reglas: Si A es un operando de B y B es un operando
de C, entonces el procesador necesita evaluar solamente una muestra
suficiente de B para determinar el valor de C, y tiene que evaluar
solamente una muestra suficiente de A para determinar esta muestra
de B.
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
volver verdaderacomo resultado de la expresin S1 = S2 tan 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 $ expr1 en el
siguiente ejemplo tiene el valor 47, se le permiti

como resultado de la algunos expresin, sin tener


que buscar otro elemento devuelto por $ expr1 que aumentara un
error si se evaluaron.
regresar verdadera

unos $ x en satisface $ EXPR1 $ x = 47

En el siguiente ejemplo, si una aplicacin puede encontrar (por


ejemplo, mediante el uso de un ndice) los productos elemento en
forma de nodos que tienen un Identificacin del nio con el
valor 47, se le permiti regresar estos nodos como el resultado de
la expresin de ruta,sin buscando otro producto nodo que elevara
un error, ya que tiene una Identificacin del nio 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 punto dependiente de la
implementacin oimplementacin- 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
documento abc.xml no 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 "eq predicado" marcando cada una de estas partes
para asegurarse de que slo tiene un solo color. El resultado sera
la siguiente:
o Piezas que tienen exactamente un color que es de color rojo
se devuelven.
o Si alguna parte es de color rojo, junto con algn otro color, se
produce un error.
o 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 ("200001-01")]

Para evitar errores inesperados causados por la reescritura de


expresin, las pruebas que se han diseado para evitar errores
dinmicos deben expresarse usando
condicionales o typeswitch expresiones. 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 Conceptos
Esta seccin explica algunos conceptos que son importantes para el
procesamiento de expresiones XQuery.
2.4.1 Documento Orden

Un ordenamiento llamado orden del documento se define entre todos


los nodos accesibles durante el procesamiento de un
determinado consulta, 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 (Segunda edicin)], y su
definicin se repite aqu por conveniencia. [Definicin: El orden nodo que
es el reverso de orden del documento se llama orden del
documento inversa.]
Fin del documento es un orden total, aunque el orden relativo de algunos
nodos es dependiente de
la implementacin. [Definicin: Informalmente, el orden del
documento es el orden en el que los nodos aparecen en la serializacin
XML de un documento.] [Definicin: fin del documento es estable, lo que
significa que el orden relativo de dos nodos no cambiar durante el
procesamiento de una determinada consulta , incluso si este orden
es dependiente de la implementacin.]
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 la implementacin.
4. El orden relativo de los hermanos es el orden en el que se
producen en el nios establecimiento 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,
pero depende de la implementacin, 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 atomizacin

La semntica de algunos operadores XQuery dependen de un proceso


llamado atomizacin. 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 un error de tipo [err: FOTY0012]. [Definicin: La
atomizacin de una secuencia se define como el resultado de invocar
el fn: los datos de funcin en la secuencia, como se define en [XQuery
1.0 y XPath 2.0 Funciones y operadores (Segunda edicin)].]
La semntica de fn: los datos se repiten aqu por conveniencia. El
resultado de fn: los datos es 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, su valor escrito se 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 por

clusulas en expresiones FLWOR

2.4.3 eficaz Boolean Valor

Bajo ciertas circunstancias (enumerados a continuacin), es necesario


encontrar el valor booleano efectiva de un valor. [Definicin: El valor
booleano efectiva de un valor se define como el resultado de aplicar
el fn: boolean funcin al valor, como se define en [XQuery 1.0 y XPath 2.0
Funciones y operadores (Segunda edicin)].]
La semntica dinmicos de fn:

boolean

se repiten aqu por conveniencia:

1. Si su operando es una secuencia vaca, fn: booleanos vuelve falsa.


2. Si su operando es una secuencia cuyo primer elemento es un
nodo, fn: booleanos vuelve verdadera.
3. Si su operando es un producto nico valor de tipo xs: boolean o
derivados de xs: boolean, fn: booleano devuelve el valor de su
operando sin cambios.
4. Si su operando es un producto nico valor de
tipo xs: string, xs: anyURI, xs: untypedAtomic, o un tipo derivado
de uno de estos, fn: booleanosretornos falsos si el valor del
operando tiene longitud cero; de lo contrario devuelve cierto.
5. Si su operando es un producto nico valor de
cualquier numrico tipo o derivado de un tipo numrico, fn:
booleanos vuelve falsa si el valor del operando es NaN o es
numricamente igual a cero; de lo contrario devuelve cierto.
6. En todos los dems casos, fn: boolean plantea un error de tipo [err:
FORG0006].
Nota:
La semntica estticas de fn: boolean se definen en la Seccin 7.2.4 El
fn: boolean y fn: no funciones FS.
Nota:

El valor booleano eficaz de una secuencia que contiene al menos un


nodo y al menos un valor atmico puede ser no determinista en las
regiones de una consulta, donde el modo de ordenar es desordenada.
El valor booleano eficaz de una secuencia se calcula implcitamente
durante el procesamiento de los siguientes tipos de expresiones:
Las expresiones lgicas (y, o)
El fn:

no

funcin

El donde clusula de una expresin FLWOR


Ciertos tipos de predicados, tales como un

[b]

Las expresiones condicionales (si)


Expresiones cuantificadas (algunos, cada)
Nota:
La definicin de valor booleano efectiva es no utiliza al lanzar un valor
con el tipo xs: boolean, por ejemplo en un molde de expresin o al pasar
un valor a una funcin cuyo parmetro esperada es de tipo xs: boolean.
2.4.4 Fuentes de entrada

XQuery 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
(Segunda edicin)].
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 dinmico que se inicializa por el ambiente externo, tal como
una variable de o elemento de contexto.
Las funciones de entrada soportados por XQuery son los siguientes:
El fn: doc funcin toma una cadena que contiene un URI. Si ese
URI est asociado con un documento en los
documentos disponibles, fn: docdevuelve un nodo de documento

cuyo contenido es el modelo de datos de la representacin del


documento dado; de lo contrario, plantea un error
dinmico (ver [XQuery 1.0 y XPath 2.0 Funciones y operadores
(Segunda edicin)] para ms detalles).
El fn: Coleccin funcin con un argumento toma una cadena que
contiene un URI. Si ese URI se asocia con una coleccin
en coleccionesdisponibles, fn: Coleccin devuelve la
representacin del modelo de datos de esa coleccin; de lo
contrario, plantea un error 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 expresin fn: Coleccin
("http://example.org") // cliente identifica a todos los clientes
de los elementos que son descendientes de los nodos que se
encuentran en la coleccin cuyo URI es http://example.org.
El fn: Coleccin funcin con cero argumentos devuelve
la coleccin predeterminada, un dependiente de la
implementacin secuencia de nodos.
2.4.5 URI literales

En 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 un StringLiteral: una


secuencia de cero o ms caracteres entre comillas simples o dobles. Sin
embargo, una implementacin PUEDE criar a un error
esttico [err: XQST0046] si el valor de una URILiteral es de longitud
distinta de cero y no est en el espacio lxica de xs: anyURI.
Como en una cadena literal, cualquier referencia a entidad
predefinida (como & amp;), referencia de carcter (como &
# x2022;) o EscapeQuot oEscapeApos (por ejemplo, "") se sustituye
su expansin apropiada. Ciertos personajes, sobre todo el signo, slo
pueden ser representados usando una referencia de entidad
predefinida o una referencia de carcter.

por

El URILiteral se somete a la normalizacin de espacio en blanco como se


define para los xs: anyURI tipo en [XML Schema]: 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 las referencias de caracteres, 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:
El xs: anyURI tipo 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 Tipos
El sistema de tipo de XQuery se basa en [Esquema XML], y se define
formalmente en [XQuery 1.0 y XPath 2.0 Semntica Formal
(Segunda edicin)].
[Definicin: Un tipo de secuencia es un tipo que puede expresarse
mediante el SequenceType sintaxis. Se utilizan tipos de secuencia
siempre que sea necesario para hacer referencia a un tipo en una
expresin XQuery. El trmino tipo de secuencia sugiere que esta
sintaxis se utiliza para describir el tipo de un valor XQuery, que siempre
es una secuencia.]
[Definicin: Un tipo de esquema es un tipo que es (o puede ser) define
utilizando las instalaciones del [Esquema XML] (incluida la incorporada
en el tipo de [esquema XML]).] 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 como xs:


NOTACIN o xs: anyAtomicType, en cuyo caso sus tipos derivados pueden
ser tan acostumbrados). Cada tipo de esquema es o bien un tipo
complejo o un tipo simple; tipos simples se subdividen en tipos
de listas, tipos de unin y tipos atmicos (ver [esquema XML] para las
definiciones y explicaciones de estos trminos.)
Tipos atmicos representan la interseccin entre las categoras de tipo de
secuencia y tipo de esquema. Un tipo atmica, como xs:
integer o mi:HATSIZE, es a la vez un tipo de secuencia y un tipo
de esquema.
2.5.1 Tipos predefinidos de esquema

Los tipos de esquema consideradas en el estudio en el contexto


esttico se inicializan con ciertos tipos de esquemas predefinidos,
incluyendo los tipos de esquema integradas en el espacio de
nombres http://www.w3.org/2001/XMLSchema, que tiene las predefinidas
prefijo de espacio de nombres xs.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
(Segunda edicin)]. Elemento y las declaraciones de atributos en
el xs espacio 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 tipo se utiliza como el tipo de anotacin de un
nodo elemento que no ha sido validado, o que ha sido validado en
el salto. Modo] No hay tipos de esquemas predefinidos se derivan
de xs: sin tipo.
2. [Definicin: xs: untypedAtomic es 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
en skip modo est representado en el modelo de datos por una
atribuir nodo con lasanotaciones de tipo xs: untypedAtomic. No
hay tipos de esquemas predefinidos se derivan
de xs: untypedAtomic.
3. [Definicin: xs: dayTimeDuration se deriva por la restriccin
de xs: duracin. La representacin lxica de xs: dayTimeDuration se

limita a contener nicamente los das, horas, minutos y segundos


componentes].
4. [Definicin: xs: yearMonthDuration se deriva por la restriccin
de xs: duracin. La representacin lxica de xs:
yearMonthDuration se limita a contener slo componentes de ao y
mes].
5. [Definicin: xs: anyAtomicType es un tipo atmico que incluye todos
los valores atmicos (y no hay valores que no son atmica). Su tipo
de base es xs: anySimpleType del que se derivan todos los tipos
simples, incluyendo tipos atmica, de la lista, y sindicales,. Todos
los tipos primitivos atmicas, como xs: decimal y xs: string,
tienen xs: anyAtomicType como su tipo de base].
Nota:
xs: anyAtomicType no aparecern como el tipo de un valor real
en un ejemplo XDM.
Las relaciones entre los tipos de esquema en el xs espacio de nombres
se ilustran en la Figura 2. Una descripcin ms completa de la jerarqua
de tipos XQuery se puede encontrar en [XQuery 1.0 y XPath 2.0
Funciones y operadores (Segunda edicin)].

Figura 2: Jerarqua de los tipos de esquema utilizado en XQuery


2.5.2 Typed Valor y Valor alfanumrico

Cada nodo tiene un valor con tipo y un valor


de cadena. [Definicin: El valor escrito de un nodo es una secuencia de
valores atmicos y se puede extraer mediante la aplicacin de
la FN: datos. Funcin para el nodo] [Definicin: El valor de cadena de un
nodo es una cadena y se puede extraer mediante la aplicacin de la fn:
string funcin para el nodo] Definiciones de. fn: datos y fn: string se
puede encontrar en [XQuery 1.0 y XPath 2.0 Funciones y operadores
(Segunda edicin)].
Una implementacin puede almacenar tanto el valor introducido y el valor
de cadena de un nodo, o puede almacenar slo uno de ellos y derivar el
otro segn sea necesario. El valor de cadena de un nodo debe ser una
representacin lxica vlida del valor escrito del nodo, pero el nodo no
est obligada a preservar la representacin de cadena del documento

fuente original. Por ejemplo, si el valor escrito de un nodo es el xs:


integer valor 30, su valor de cadena podra ser "30" o "0030".
El valor escrito, valor de cadena y tipo de anotacin de un nodo estn
estrechamente relacionados, y se definen las reglas que se encuentran
en los siguientes lugares:
Si el nodo fue creado por el mapeo de un conjunto de informacin
o PSVI, vea las reglas en [XQuery 1.0 y XPath 2.0 Modelo de
Datos (Segundaedicin)].
Si el nodo fue creado por una constructora nodo XQuery, vea las
reglas en 3.7.1 Elemento directa de constructores, 3.7.3.1
calculadas Elemento de constructores, o 3.7.3.2 Constructores
atributo calculado.
Si el nodo fue creado por un validar expresin, ver reglas en 3.13
Validar Expresiones.
Como una conveniencia para el lector, la relacin entre el valor con
tipo y valor de cadena para varios tipos de nodos se resume e ilustra con
ejemplos de abajo.
1. Para texto y documentos nodos, el valor escrito del nodo es igual a
su valor de cadena, como un ejemplo del
tipo xs: untypedAtomic. El valor de cadena de un nodo de
documento est formado por la concatenacin de los valores de
cadena de todos sus nodos de texto descendiente, en el orden
del documento.
2. El valor tecleado de un nodo de comentario o procesamiento de
instrucciones es el mismo que su valor de cadena. Es un ejemplo
del tipo xs:string.
3. El valor tecleado de un nodo atributo con las anotaciones de
tipo xs: anySimpleType o xs: untypedAtomic es igual a su valor de
cadena, como una instancia de xs: untypedAtomic. El valor
tecleado de un nodo atributo con cualquier otro tipo de anotacin
se deriva de su valor de cadena y el tipo de anotacin mediante el
mapeo lxico-valor-espacio definido en [XML Schema] Parte 2 para
el tipo.
Ejemplo: A1 es un valor de cadena de atributo que tiene "3.14E2" Tipo de anotacin y xs: double. El valor escrito de A1 es los xs:
doble valor cuya representacin lxica es 3.14E-2.

Ejemplo: A2 es un atributo con el tipo de


anotacin xs: IDREFS, que es un tipo de datos lista cuyo tipo de
elemento es el tipo de datos atmicosxs: IDREF. Su valor de
cadena es "bar baz faz". El valor escrito de A2 es una secuencia de
tres valores atmicos ("barra", "Baz", "faz"), cada uno de
tipo xs: IDREF. El valor tecleado de un nodo no se trata como una
instancia de un tipo de lista con nombre. En cambio, si el tipo de
anotacin de un nodo es un tipo de lista (como xs: IDREFS), su
valor escrito se trata como una secuencia del tipo atmico a partir
de la que se deriva (como xs: IDREF).
4. Para un nodo de elemento, la relacin entre el valor con tipo y valor
de cadena depende del nodo tipo de anotacin, como sigue:
a. Si la anotacin de tipo es xs: sin tipo o xs: anySimpleType o
denota un tipo complejo con contenido mixto
(incluyendo xs: anyType),entonces el valor con tipo del nodo
es igual a su valor de cadena, como una instancia
de xs: untypedAtomic. Sin embargo, si el nilledpropiedad del
nodo es cierto, entonces su valor escrito es la secuencia
vaca.

Ejemplo: E1 es un nodo elemento que tiene tipo de


anotacin xs: sin tipo y la cadena de valor "05/31/1999". El
valor escrito de E1 es"05/31/1999", como una instancia
de xs: untypedAtomic.
Ejemplo: E2 es un nodo de elemento con el tipo de
anotacin frmula, que es un tipo complejo con contenido
mixto. El contenido de E2 consiste en el carcter "H", un
elemento hijo llamado subndice con valor de cadena "2", y el
carcter "O". El valor escrito de E2 es"H2O" como una
instancia de xs: untypedAtomic.
b. Si la anotacin de tipo designa un tipo simple o un tipo
complejo con contenido simple, entonces el valor escrito del
nodo se deriva de su valor de cadena y su tipo de anotacin
de una manera que es consistente con la validacin del
esquema. Sin embargo, si el nilledpropiedad del nodo
es cierto, entonces su valor escrito es la secuencia vaca.
Ejemplo: E3 es un nodo de elemento con el tipo de
anotacin costo, que es un tipo complejo que tiene varios
atributos y un tipo de contenido simple de
los xs:

decimal. El valor de cadena de E3 es "74.95". El

valor escrito del E3 es 74,95, como una instancia


de xs: decimal.
Ejemplo: E4 es un nodo de elemento con el tipo de
anotacin hatsizelist, que es un tipo simple derivado de tipo
atmico HATSIZE, que a su vez se deriva de xs:
nmero entero. El valor de cadena de E4 es "7 8 9". El valor
escrito de E4 es una secuencia de tres valores (7,8, 9), cada
uno de tipo HATSIZE.
Ejemplo: E5 es un nodo elemento con el tipo de
anotacin mi: nmero entero o cuerdas que es un tipo unin
con tipos miembro xs: integer y xs: string. El valor de
cadena de E5 es "47". El valor escrito de E5
es 47 como xs: integer, ya xs: integer es el tipo de miembro
que valida el contenido de E5. En general, cuando el tipo de
anotacin de un nodo es un tipo de unin, el valor escrito del
nodo ser una instancia de uno de los tipos de miembros de
la unin.
Nota:
Si implementacin un almacena slo el valor de cadena
de un nodo, y el tipo de anotacin del nodo es un tipo de
unin, la aplicacin debe ser capaz de entregar el valor
escrito del nodo como una instancia del tipo de miembro
correspondiente.
c. Si la anotacin de tipo representa un tipo complejo con
contenido vaco, entonces el valor escrito del nodo es la
secuencia vaca y su valor de cadena es la cadena de
longitud cero.
d. Si la anotacin de tipo designa un tipo complejo con el
contenido-elemento solamente, entonces el valor escrito del
nodo es indefinido. El FN: datos de la funcin plantea un error
de tipo [err: FOTY0012] cuando se aplica a un nodo de este
tipo. El valor de cadena de un nodo de este tipo es igual a los
valores de cadena concatenados de todos sus descendientes
nodo de texto, en el orden del documento.
Ejemplo: E6 es un nodo de elemento con el tipo de
anotacin del tiempo, que es un tipo complejo cuyo tipo de
contenido especifica-nicoelemento. E6 tiene dos elementos
secundarios llamados de temperatura y precipitacin. El valor
escrito de E6 es indefinido y el fn: data funcin aplicada a E6
genera un error.

2.5.3 Sintaxis SequenceType

Siempre que sea necesario para hacer referencia a un tipo en una


expresin XQuery, el SequenceType se utiliza la sintaxis.
[119] SequenceType
[121]
[120]
[122]
[123]

:: ("vaco-secuencia" "(" ")")

= | (ItemType OccurrenceIndicator?)
Tipo de artculo
:: KindTest | ("punto" "(" ")") | AtomicType
=
OccurrenceIndicator :: "?" | "*" | "+"
=
AtomicType
:: QName
=
KindTest
:: DocumentTest
= || ElementTest
AttributeTest

[125] DocumentTest
=
[133]

ElementTest

| SchemaElementTest
| SchemaAttributeTest
| PITest
| CommentTest
| TextTest
| AnyKindTest
:: "documento-nodo"
"(" (ElementTest | SchemaElementTest?) ")"

:: "elemento"

(ElementNameOrWildcard ("," TypeName "?"


= "("
?)?)? ")"

[135] SchemaElementTest

:: "esquema de elementos"

[131] SchemaAttributeTest

:: "esquema-atributo"

= "(" ElementDeclaration ")"


[136] ElementDeclaration
:: ElementName
=
AttributeTest
[129]
:: "atributo"
(AttribNameOrWildcard ("," TypeName)?)?
= "("
")"

[132]
[134]
[138]
[130]
[137]
[139]

= "(" AttributeDeclaration ")"


AttributeDeclaratio :: AttributeName
n
=
ElementNameOrWildca :: ElementName | "*"
rd
=
ElementName
:: QName
=
AttribNameOrWildcar :: AttributeName | "*"
d
=
AttributeName
:: QName
=
TypeName
:: QName

=
[128]

PITest

:: "instruccin de procesamiento"

= "(" (NCName | StringLiteral?) ")"


:: "comentar" "(" ")"
=
:: "texto" "(" ")"
=
:: "nodo" "(" ")"
=

[127] CommentTest
[126] Texttest
[124] AnyKindTest

Con la excepcin del tipo especial vaco de secuencia (), un tipo de


secuencia consiste en un tipo de elemento que restringe el tipo de cada
elemento de la secuencia, y una cardinalidad que limita el nmero de
artculos en la secuencia. Aparte del tipo de elemento artculo (), que
permite cualquier tipo de elemento, los tipos de elementos se dividen

tipos de nodo (por ejemplo, elemento ()) y tipos atmicos (tales


como xs:integer).
en

Los tipos de elementos que representan elementos y atributos nodos


pueden especificar las necesarias anotaciones de tipo de los nodos, en la
forma de un tipo de esquema. As, el tipo de elemento elemento (*,
nosotros: Direccin) denota cualquier nodo de elemento cuyo tipo de
anotacin es (o se deriva de) el tipo de esquema
nombrado nosotros: Direccin.
Estos son algunos ejemplos de tipos de secuencias que podran ser
utilizados en expresiones XQuery:

xs: la fecha

elemento ()

elemento (po: enviarA, po: la direccin)

se refiere a la incorporada en el tipo de esquema


atmica nombrados xs: fecha
atributo ()? se refiere a un nodo de atributo opcional
se refiere a cualquier nodo de elemento

se refiere a un nodo de
elemento que tiene el nombre po: enviarA y tiene el tipo de
anotacin po: la direccin (o un tipo de esquema derivado de po:
la direccin de)
elemento (*, po: la direccin) se refiere a un nodo elemento de
cualquier nombre que tiene el tipo de anotacin po: la direccin (o
un tipo derivado de po: la direccin de)

se refiere a un nodo de elemento con


nombre del cliente con cualquier tipo de anotacin
esquema de elementos (cliente) se refiere a un nodo elemento cuyo
nombre es cliente (o est en el grupo de sustitucin encabezada
por elcliente) y cuyo tipo de anotacin coincide con el tipo de
esquema declarado para un cliente elemento en las declaraciones
de elementos comprendidos en el
node () * se refiere a una secuencia de cero o ms nodos de
cualquier clase
elemento () + se refiere a una secuencia de uno o ms nodos o
valores atmicos
elemento (cliente)

2.5.4 SequenceType Matching

[Definicin: Durante la evaluacin de una expresin, a veces es


necesario para determinar si un valor con un conocido tipo
dinmico "coincide con" una esperada tipo de secuencia. Este proceso se
conoce como juego SequenceType.] Por ejemplo, una instancia
de expresin devuelve verdadero si eltipo dinmico de un determinado
valor coincide con un determinado tipo de secuencia, o falso si no lo
hace.
QNames que aparecen en un tipo de secuencia tienen sus prefijos
ampliarse para namespace URI a travs de los espacios de nombres
estticamente conocidos y (en su caso) el espacio de nombres de
elemento / tipo predeterminado. Un atributo sin prefijo QName es en
ningn espacio de nombres.Igualdad de QNames se define por
la ecuacin operador.
Las reglas de juego SequenceType comparan el tipo dinmico de valor
con una esperada tipo de secuencia. Estas reglas son un subconjunto de
las reglas formales que responden a un valor con un tipo esperado se
define en [XQuery 1.0 y XPath 2.0 Semntica Formal
(Segunda edicin)], porque la semntica formal debe ser capaz de
igualar los valores contra los tipos que no son expresables mediante
la SequenceType sintaxis.
Algunas de las reglas de juego SequenceType requieren establecer si un
tipo de esquema dado es igual o derivado de un tipo de esquema
esperado.El tipo determinado esquema puede ser "conocido" (definido en
las definiciones de esquema en el mbito de aplicacin), o "desconocido"

(no definidos en las definiciones de esquema consideradas en


el estudio). Un tipo de esquema desconocido podra ser encontrado, por
ejemplo, si un documento de origen se ha validado mediante un
esquema que no se import en el contexto esttico. En este caso, se
permite una implementacin (pero no es necesario) para proporcionar
un dependiente de la implementacin mecanismo para determinar si el
tipo de esquema desconocida se deriva de el tipo de esquema
esperado. Por ejemplo, una implementacin podra mantener un
diccionario de datos que contiene informacin acerca de las jerarquas de
tipo.
[Definicin: El uso de un valor cuyo tipo dinmico se deriva de un tipo
esperado que se conoce como sustitucin subtipo.] Sustitucin Subtipo
no cambia el tipo real de un valor. Por ejemplo, si un xs: integer se utiliza
el valor donde un xs: decimal se espera valor, el valor conserva su tipo
que xs:integer.
La definicin de juego SequenceType se basa en una funcin seudo
nombre deriva -desde (AT, ET), que tiene una simple o tipo de esquema
complejo real AT y un tipo de esquema simple o compleja espera ET, y, o
bien devuelve un valor booleano o plantea una Tipo de
error [err:XPTY0004]. La funcin seudo deriva -desde se define a
continuacin y se define formalmente en [XQuery 1.0 y XPath 2.0
Semntica Formal (Segundaedicin)].

(AT, ET) devuelve verdadero si ET es un tipo conocido


y cualquiera de las tres condiciones siguientes es verdadera:
1. AT es un tipo de esquema que se encuentra en
las definiciones de esquema incluidas en el estudio, y es el
mismo que ET o se deriva por la restriccin o ampliacin
de ET
2. AT es un tipo de esquema no se encuentra en
las definiciones de esquema incluidas en el estudio, y
un dependiente de la implementacinmecanismo es capaz
de determinar que AT se deriva por la restriccin de ET
3. Existe algn tipo de esquema de TI de forma que se deriva,
desde (TI, ET) y deriva -desde (EN, IT) son ciertas.
deriva -desde (AT, ET) devuelve falso si ET es un tipo conocido y
ya sea la primera y la tercera o la segunda y la tercera de las
siguientes condiciones son verdaderas:
deriva -desde

1. AT es un tipo de esquema que se encuentra en


las definiciones de esquema incluidas en el estudio, y no es
el mismo que ET, y no se deriva por la restriccin o
ampliacin de ET
2. AT es un tipo de esquema no se encuentra en
las definiciones de esquema incluidas en el estudio, y
un dependiente de la implementacinmecanismo es capaz
de determinar que AT no se deriva por la restriccin de ET
3. Ningn tipo de esquema de TI existe tal que deriva
-desde (TI, ET) y deriva -desde (EN, IT) son ciertas.
deriva -desde (AT, ET) plantea un error de tipo [err: XPTY0004] si:
1. ET es un tipo desconocido, o
2. AT es un tipo desconocido, y la aplicacin no es capaz de
determinar si AT se deriva por la restriccin de ET.
Nota:
Los deriva-de pseudo-funcin no se pueden escribir como una funcin
real XQuery, porque los tipos no son parmetros de funcin vlidos.
Las reglas de juego SequenceType se indican a continuacin, con
ejemplos (los ejemplos son para fines de ilustracin, y no cubren todos
los casos posibles).
2.5.4.1 Coincidencia de un SequenceType y un valor

El tipo de secuencia vaca-secuencia () coincide con un valor que


es la secuencia vaca.
Un ItemType sin OccurrenceIndicator coincide con cualquier valor
que contiene exactamente un elemento si el ItemType coincide con
ese tema (vase 2.5.4.2 Coincidencia de un ItemType y
un artculo).
Un ItemType con un OccurrenceIndicator coincide con un valor si el
nmero de elementos en el valor coincide con
el OccurrenceIndicator y laItemType coincide con cada uno de los
artculos en el valor.
Un OccurrenceIndicator especifica el nmero de elementos en una
secuencia, de la siguiente manera:

Coincide con cero o artculos de uno

Coincide con cero o ms elementos

Partidos uno o ms artculos

Como consecuencia de estas reglas, cualquier tipo de


secuencia cuya OccurrenceIndicator es * o? Coincide con un valor que
es una secuencia vaca.
2.5.4.2 Coincidencia de un ItemType y un artculo

Un ItemType que consiste simplemente en un QName se interpreta


como un AtomicType. Un AtomicType AtomicType coincide con un
valor atmico cuyo tipo real es AT si deriva
-desde (AT, AtomicType) es verdadera. Si un QName que se utiliza
como un AtomicType no se define como un tipo atmica en
los tipos de esquema en-scope, un error esttico se
eleva [err: XPST0051].
Ejemplo: El AtomicType xs: decimal coincide con el
valor 12.34 (unos decimales literal). Xs: decimal tambin coincide
con un valor cuyo tipo esSHOESIZE, si SHOESIZE es un tipo atmico
derivado por restriccin de xs: decimal.
Nota:
Los nombres de los tipos no-atmicas como IDREFS: xs no son
aceptados en este contexto, pero a menudo se pueden sustituir
por una de tipo atmico con un indicador de ocurrencia,
como xs: IDREF +.

artculo ()

node ()

texto ()

procesamiento de instrucciones ()

coincide con cualquier elemento individual.


Ejemplo: artculo () coincida con el valor atmico 1 o el
elemento <a/>.
coincide con cualquier nodo.
coincide con cualquier nodo de texto.
coincide con cualquier nodo de

procesamiento de instrucciones.
procesamiento de instrucciones (N) coincide con cualquier nodo de
procesamiento de instrucciones cuya PITarget es igual a fn:
normalizar el espacio (N). Si fn: normalizar el espacio (N) no est
en el espacio lxica de NCName, se eleva un error de
tipo [err: XPTY0004]

Ejemplo: instruccin de procesamiento (xml-stylesheet) coincide con


cualquier instruccin de procesamiento cuya PITarget es xmlstylesheet.

Para la compatibilidad con XPath 1.0, el PITarget de una


instruccin de procesamiento tambin se puede expresar como
una cadena literal, como en este ejemplo: instruccin de
procesamiento ("xml-stylesheet").

Comentario ()

documento-node ()

documento de nodo

coincide con cualquier nodo comentario.


coincide con cualquier nodo de documento.

(E) coincide con cualquier nodo de documento


que contiene exactamente un nodo de elemento, opcionalmente
acompaado por uno o ms de comentario e instruccin de
procesamiento de nodos, si E es
un ElementTest o SchemaElementTest que coincide con el nodo de
elemento (vase 2.5.4.3 Prueba Element y 2.5 .4.4 esquema de
elementos de prueba).
Ejemplo: Documento-nodo (elemento (libro)) partidos un nodo
documento que contiene exactamente un nodo de elemento que se
corresponde con la ElementTest elemento (libro).
Un ItemType que es
un ElementTest, SchemaElementTest, AttributeTest,
o SchemaAttributeTest coincide con un elemento o atributo nodo
segn se describe en las siguientes secciones.
2.5.4.3 Prueba Elemento

Un ElementTest se utiliza para que coincida con un nodo elemento por su


nombre y / o tipo de anotacin. Un ElementTest puede tomar cualquiera
de las siguientes formas. En estas formas, ElementName no tiene por
qu estar presente en las declaraciones de elementos consideradas en
el estudio, peroTypeName debe estar presente en los tipos de esquema
consideradas en el estudio [err: XPST0008]. Tenga en cuenta que los
grupos de sustitucin no afectan a la semntica de ElementTest.
1.

y elemento (*) coincidir con cualquier nodo de


elemento nico, independientemente de su nombre o tipo de
anotacin.
2. elemento (ElementName) coincide con cualquier nodo de elemento
cuyo nombre es ElementName, independientemente de su tipo de
anotacin onilled propiedad.
elemento ()

3.

4.

5.

6.

Ejemplo: elemento (persona) coincide con cualquier nodo de


elemento cuyo nombre es persona.
elemento (ElementName, TypeName) coincide con un nodo
elemento cuyo nombre es ElementName si deriva
-desde (AT, TypeName) esverdadera, donde AT es el tipo de
anotacin del nodo de elemento y el nilled propiedad del nodo
es falsa.
Ejemplo: elemento (persona, cirujano) coincide con un nodo de
elemento no nilled cuyo nombre es persona y cuyo tipo de anotacin
escirujano (o se deriva del cirujano).
elemento (ElementName, TypeName?) coincide con un nodo
elemento cuyo nombre es ElementName si deriva
-desde (AT, TypeName) esverdadera, donde AT es el tipo de
anotacin del nodo elemento. El nilled propiedad del nodo puede
ser verdadera o falsa.
Ejemplo: elemento (? Persona, cirujano) coincide con un nodo de
elemento nilled o no nilled cuyo nombre es persona y cuyo tipo de
anotacin es cirujano (o se deriva del cirujano).
elemento (*, TypeName) coincide con un nodo elemento,
independientemente de su nombre, si deriva
-desde (AT, TypeName) es verdadera, donde AT es el tipo de
anotacin del nodo de elemento y el nilled propiedad del nodo
es falsa.
Ejemplo: elemento (*, cirujano) coincide con cualquier nodo de
elemento no nilled cuyo tipo de anotacin es cirujano (o se deriva
delcirujano), independientemente de su nombre.
elemento (*, TypeName?) coincide con un nodo elemento,
independientemente de su nombre, si deriva
-desde (AT, TypeName) esverdadera, donde AT es el tipo de
anotacin del nodo elemento. El nilled propiedad del nodo puede
ser verdadera o falsa.
Ejemplo: elemento (? *, Cirujano) coincide con cualquier nodo de
elemento nilled o no nilled cuyo tipo de anotacin es cirujano (o se
deriva del cirujano), independientemente de su nombre.

2.5.4.4 Prueba de elemento de esquema

Un SchemaElementTest coincide con un nodo elemento en contra de una


declaracin de elemento correspondiente que se encuentra en

lasdeclaraciones de elementos en el mbito de aplicacin. Se toma la


siguiente forma:
esquema de elementos

(ElementName)

Si el ElementName especificado en el SchemaElementTest no se


encuentra en las declaraciones de elementos consideradas en
el estudio, un error esttico se eleva [err: XPST0008].
Un SchemaElementTest coincide con un nodo de elemento candidato si
los tres de las siguientes condiciones:
1. El nombre del nodo candidato coincide con la
especificada ElementName o coincide con el nombre de un
elemento en un grupo de sustitucin a cargo de un elemento
llamado ElementName.
2. deriva -desde (AT, ET) es verdadera, donde AT es el tipo de
anotacin del nodo candidato y ET es el tipo de esquema
declarado para el elemento ElementName en las declaraciones de
elementos consideradas en el estudio.
3. Si la declaracin de elemento para ElementName en
las declaraciones de elementos consideradas en el estudio no
es anulable, el nilledpropiedad del nodo candidato es falsa.
Ejemplo: El SchemaElementTest esquema de elementos (cliente) coincide
con un nodo de elemento candidato si el cliente es una declaracin de
elemento de nivel superior en las declaraciones de elementos
consideradas en el estudio, el nombre del nodo candidato es cliente o se
encuentra en un grupo de sustitucin encabezada por el cliente, el tipo
de anotacin del nodo candidato es igual o deriva del tipo de esquema
declarado para elcliente elemento, y, o bien el nodo candidato no
se nilled o cliente se declara nillable.
Prueba 2.5.4.5 Atributo

Un AttributeTest se utiliza para que coincida con un nodo atributo por su


nombre y / o tipo de anotacin. Un AttributeTest cualquier tomar
cualquiera de las formas siguientes. En estas formas, AttributeName no
necesita estar presente en las declaraciones de atributos consideradas
en el estudio, peroTypeName debe estar presente en los tipos de
esquema consideradas en el estudio [err: XPST0008].

1.

y atributos (*) coincidir con cualquier nodo de atributo


nico, independientemente de su nombre o tipo de anotacin.
2. atributo (AttributeName) coincide con cualquier nodo de atributo
cuyo nombre es AttributeName, independientemente de su tipo de
anotacin.
Ejemplo: atributo (precio) coincide con cualquier nodo de atributo
cuyo nombre es el precio.
3. atributo (AttributeName, TypeName) coincide con un nodo de
atributo cuyo nombre es AttributeName si deriva
-desde (AT, TypeName) esverdadera, donde AT es el tipo de
anotacin del nodo atributo.
Ejemplo: atributo (precio, moneda) coincide con un nodo de atributo
cuyo nombre es el precio y cuyo tipo de anotacin es la moneda (o
se deriva de la moneda).
4. atributo (*, TypeName) coincide con un nodo de atributo
independientemente de su nombre, si deriva
-desde (AT, TypeName) es verdadera, donde AT es el tipo de
anotacin del nodo atributo.
Ejemplo: atributo (*, moneda) coincide con cualquier nodo de
atributo cuyo tipo de anotacin es la moneda (o se deriva
de la moneda),independientemente de su nombre.
atributo ()

2.5.4.6 esquema de atributos de prueba

Un SchemaAttributeTest coincide con un nodo de atributo en contra de


una declaracin de atributo correspondiente que se encuentra en
lasdeclaraciones de atributos consideradas en el estudio. Se toma la
siguiente forma:
esquema-atributo

(AttributeName)

Si el AttributeName especificado en el SchemaAttributeTest no se


encuentra en las declaraciones de atributos consideradas en
el estudio, un error esttico se eleva [err: XPST0008].
Un SchemaAttributeTest coincide con un candidato atributo nodo si
ambas de las siguientes condiciones:
1. El nombre del nodo candidato coincide con el
especificado AttributeName.

2.

(AT, ET) es verdadera, donde AT es el tipo de


anotacin del nodo candidato y ET es el tipo de esquema
declarado para atributoAttributeName en el in-alcance
atribuir declaraciones.
deriva -desde

Ejemplo: El SchemaAttributeTest esquema de atributos (color) coincide


con un candidato atributo nodo si el color es una declaracin de atributo
de nivel superior en las declaraciones de atributos consideradas en
el estudio, el nombre del nodo candidato es el color y el tipo de
anotacin del nodo candidato es el mismo o deriva del tipo de esquema
declarado para el color de atributo.

2.6 Comentarios
[151]
[159]

Comentario
CommentContents

:: =
:: =

"(:" (CommentContents | Responder) * ":)"


(Char + - (Char * ('(:' | ':)') Char *))

Los comentarios pueden ser utilizados para proporcionar anotacin


informativo para una consulta, ya sea en el Prolog o en el cuerpo de
la consulta. Los comentarios son construcciones lxicas solamente, y no
afectan a la consulta de procesamiento.
Los comentarios son cadenas, delimitadas por los smbolos (: y :). Los
comentarios pueden anidarse.
Un comentario puede ser utilizado en cualquier lugar de espacio en
blanco ignorables est permitido (vase A.2.4.1 defecto
Whitespace Manejo).
El siguiente es un ejemplo de un comentario:
(: Houston, tenemos un problema :)

3 Expresiones
En esta seccin se analiza cada uno de los tipos bsicos de
expresin. Cada tipo de expresin tiene un nombre tal como PathExpr,
que se introduce en el lado izquierdo de la produccin gramtica que

Desde XQuery es un lenguaje composable, cada


tipo de expresin se define en trminos de otras expresiones cuyos
operadores tienen una prioridad ms alta. De esta manera, la
precedencia de operadores se representa explcitamente en la gramtica.
define la expresin.

El orden en que las expresiones se analizan en este documento no


refleja el orden de precedencia de los operadores. En general, este
documento presenta los tipos ms simples de expresiones primero,
seguido por las expresiones ms complejas. Para la gramtica completa,
vase el Apndice [AXQuery Gramtica].
[Definicin: Una consulta se compone de uno o ms mdulos.] Si una
consulta es ejecutable, uno de sus mdulos tiene un cuerpo de la
consulta que contiene una expresin cuyo valor es el resultado de la
consulta. Una expresin se representa en la gramtica XQuery por el
smbolo Expr.
[31]
[32]

Expr
ExprSingle

:: =
:: =

ExprSingle ("," ExprSingle) *


FLWORExpr
| QuantifiedExpr
| TypeswitchExpr
| IfExpr
| OrExpr

El operador XQuery que tiene prioridad ms baja es el operador


de coma, que se utiliza para combinar dos operandos para formar una
secuencia.Como se muestra en la gramtica, una expresin
general (Expr) puede consistir en mltiples ExprSingle operandos,
separados por comas. El nombreExprSingle denota una expresin que
no contiene un alto nivel de operador coma (a pesar de su nombre,
una ExprSingle puede evaluar a una secuencia que contiene ms de un
artculo.)
El smbolo ExprSingle se utiliza en diversos lugares de la gramtica que
no se permite una expresin que contiene una coma de nivel
superior. Por ejemplo, cada uno de los argumentos de una llamada a la
funcin debe ser un ExprSingle, ya que las comas se utilizan para
separar los argumentos de una llamada de funcin.
Despus de la coma, las expresiones que tienen prxima prioridad ms
baja
son FLWORExpr, QuantifiedExpr, TypeswitchExpr, IfExpr y OrExpr. Cada
una de estas expresiones se describe en una seccin separada de este
documento.

3.1 Expresiones primarias

[Definicin: Primaria expresiones son las primitivas bsicas de la


lengua. Incluyen literales, referencias variables, expresiones elemento de
contexto,constructores, y llamadas a funciones. Una expresin primaria
tambin puede ser creado por encerrar cualquier expresin entre
parntesis, que a veces es til en el control de la precedencia de los
operadores.] Los constructores se describen en 3.7 Constructores.
[84 Primar Literal | Ref.var | ParenthesizedExpr | ContextItemExpr | Fun
] yExpr :: ctionCall | OrderedExpr | UnorderedExpr |Constructor
=
3.1.1 Los literales

[Definicin: Un literal. Es una representacin sintctica directa de un


valor atmico] XQuery es compatible con dos tipos de literales:
literales numricos y literales de cadena.
[85]

Literal

[86]

NumericLiteral

:: NumericLiteral | StringLiteral
=

[141] IntegerLiteral
[142] DecimalLiteral
[143] DoubleLiteral
[144] StringLiteral

[145]

PredefinedEntityR
ef

[158]

Dgitos

:: IntegerLiteral | DecimalLiteral | DoubleLitera

= l
:: Dgitos
=
:: ("." Dgitos) | (Dgitos "." [0-9] *)
=
:: ("." (Dgitos) | (Dgitos "."? ([0-9] *)))?
= [EE] [+ -] Dgitos
:: ('"' (PredefinedEntityRef | CharRef | EscapeQu
| [^" &]) * '"') |
= ot
(" '"(PredefinedEntityRef |CharRef | EscapeApo
=

s | [^' &]) *" '")


:: "&" ("Lt" | "gt" | "amplificador" | "quot" |
"apos") ";"

:: [0-9] +
=

El valor de un literal numrico que contiene no "." y


ningn correo o E personaje es un valor atmico de tipo xs: integer. El
valor de un literal numrico que contiene "." pero
ningn correo o E personaje es un valor atmico de tipo xs: decimal. El
valor de un literal numrico que contenga un correo o Epersonaje es un
valor atmico de tipo xs: double. El valor del literal numrico se
determina por lanzarlo al tipo apropiado de acuerdo con las reglas para la

emisin de xs: untypedAtomic a un tipo numrico como se especifica en la


Seccin 17.1.1 Colada de xs: string y xs: untypedAtomic FO.
El valor de una cadena literal es un valor atmico cuyo tipo es xs:
string y cuyo valor es la cadena indicada por los caracteres entre los
apstrofes de delimitacin o comillas. Si el literal est delimitada por
apstrofes, dos apstrofes adyacentes dentro de lo literal se interpretan
como un solo apstrofo.Del mismo modo, si el literal est delimitada por
comillas, dos comillas adyacentes dentro de lo literal se interpretan como
una comilla.
Un literal de cadena puede contener una referencia de
entidad predefinida. [Definicin: Una referencia de entidad
predefinida es una secuencia corta de caracteres, comenzando con un
smbolo de unin, que representa un nico carcter que podran tener
importancia sintctica.] Cada referencia de entidad predefinido se
sustituye por el personaje que representa cuando se procesa la cadena
literal. Las referencias a entidades predefinidas reconocidos por XQuery
son los siguientes:
Entidad de Referencia Carcter Representada
& lt;

<

& gt;

>

& amp;

& quot;

"

& apos;

'

Un literal de cadena tambin puede contener una referencia


de carcter. [Definicin: Una referencia de carcter es una referencia de
estilo XML a un][Unicode carcter, identificado por su decimal o punto de
cdigo hexadecimal.] Por ejemplo, el smbolo del euro () se puede
representar por la referencia de carcter & # 8364;. Las referencias de
caracteres estn normativamente definen en la Seccin 4.1 de la
especificacin XML (que esdefinido por la implementacin si las normas
en [XML 1.0] o [XML 1.1] aplicar.) Un error esttico [err: XQST0090] se
eleva si una referencia de carcter no identificar un carcter vlido en la
versin de XML que est en uso.
Estos son algunos ejemplos de expresiones literales:

"12.5"

indica la cadena que contiene los caracteres '1', '2', '.', Y '5'.

12

12.5

125E2

"l dijo:" "No me gusta". ""

denota los xs:

integer

denota los xs:

valor doce.

decimal

denota los xs:

doble

valor doce y la una y media.

valor de doce mil quinientos.


Denota una cadena que contiene dos

comillas y un apstrofe.

"Ben & amp; Jerry & apos; s"


string

valor "Ben

"& # 8364; 99.50"

&

denota los xs:

Jerry".

denota los xs:

string

valor " 99,50".

Los xs: boolean valores cierto y falso puede ser representado por
llamadas a las funciones integradas fn: true () y fn:
false (), respectivamente.
Los valores de otros tipos atmicos pueden construirse llamando a
la funcin constructora para el tipo dado. Las funciones constructoras
para XML Schema tipos incorporadas se definen en [XQuery 1.0 y XPath
2.0 Funciones y operadores (Segunda edicin)]. En general, el nombre
de una funcin constructora para un tipo dado es el mismo que el nombre
del tipo (incluyendo su espacio de nombres). Por ejemplo:

xs: entero ("12")

xs: date ("08/25/2001")

devuelve el valor entero doce.

devuelve un objeto cuyo tipo es xs: fecha y


cuyo valor representa la fecha 25 de agosto 2001.
xs: dayTimeDuration ("PT5H") devuelve un objeto cuyo tipo es xs:
dayTimeDuration y cuyo valor representa una duracin de cinco
horas.
Las funciones constructoras tambin se pueden utilizar para crear
valores especiales que no tienen ninguna representacin literal, como en
los siguientes ejemplos:

xs: float ("NaN")

devuelve el valor de punto flotante especial ", no

un nmero."

xs: doble ("INF")

devuelve el valor de doble precisin especial,

"infinito positivo."
Tambin es posible construir los valores de varios tipos utilizando
un molde expresin. Por ejemplo:

9 reparto como HATSIZE

devuelve el valor atmico 9 cuyo tipo

es HATSIZE.
3.1.2 Referencias Variable
[87]
[88]

Ref.var
NombreVar

:: =
:: =

"$" NombreVar
QName

[Definicin: Una variable de referencia. Es un QName precedido por un


signo $] Dos referencias a variables son equivalentes si sus nombres
locales son los mismos y sus prefijos de espacio de nombres estn
vinculados a la misma URI de espacio en los espacios de nombres
estticamenteconocidos. Una referencia de variable sin prefijo no es en
ningn espacio de nombres.
Cada referencia de variable debe coincidir con un nombre en
las variables en-alcance, que incluyen las variables de las siguientes
fuentes:
1. Una variable puede ser declarada en un prlogo, en el
actual mdulo o un mdulo importado. Ver 4 Mdulos y
prlogos para una discusin de los mdulos y prlogos.
2. El en-alcance las variables se puede aumentar mediante la
implementacin definidos por variables.
3. Una variable puede estar unido por una expresin XQuery. Los
tipos de expresiones que pueden unirse variables son expresiones
FLWOR (3,8FLWOR Expresiones), expresiones
cuantificadas (3,11 cuantificada Expresiones) y typeswitch expresi
ones (3.12.2 Typeswitch). Funcin llamadas tambin se unen los
valores de los parmetros formales de las funciones antes de
ejecutar el cuerpo de la funcin.
Cada variable de unin tiene un alcance esttico. El alcance define
dnde pueden producirse vlidamente referencias a la variable. Es
un error esttico[err: XPST0008] para hacer referencia a una variable que
no est en el mbito. Si una variable est ligada en el contexto
esttico para una expresin, esa variable est en el mbito de la
expresin completa.
Una referencia a una variable declarada externa,

pero no estaba atado a


un valor por el ambiente externo, plantea un error
dinmico

[err:XPDY0002].

Si una variable de referencia coincide con dos o ms enlaces de


variables que son en su alcance, entonces se toma la referencia de que
se refiere a la unin interior, es decir, una cuyo alcance es ms
pequeo. En el momento de la evaluacin, el valor de una variable de
referencia es el valor de la expresin a la que se une la variable
relevante. El alcance de una unin variable se define por separado para
cada tipo de expresin que se puede unir variables.
3.1.3 parentizadas Expresiones
[89]

ParenthesizedExpr

:: =

"(" Expr? ")"

Los parntesis pueden ser usados para hacer cumplir una orden de
evaluacin en particular en las expresiones que contienen varios
operadores. Por ejemplo, la expresin (2 + 4) * 5 evala a treinta, ya
que la expresin entre parntesis (2 + 4) se evala primero y su
resultado se multiplica por cinco.Sin parntesis, la expresin 2 + 4 *
5 evala a los veintids aos, ya que el operador de multiplicacin tiene
mayor precedencia que el operador de suma.
Parntesis vacos se utilizan para denotar una secuencia vaca, como se
describe en 3.3.1 Secuencias Construir.
3.1.4 Contexto Expresin artculo
[90]

ContextItemExpr

:: =

"."

Una expresin elemento de contexto evala el elemento


de contexto, que puede ser un nodo (como en la expresin fn: doc
("bib.xml") / libros / libro [fn: count (./ autor)> 1]) o un valor atmico
(como en la expresin (1 a 100) [. mod 5 eq 0]).
Si el elemento de contexto es indefinido, una expresin elemento de
contexto plantea un error dinmico [err: XPDY0002].
3.1.5 Las llamadas de funcin

[Definicin: Las funciones integradas con el apoyo de XQuery se


definen en [XQuery 1.0 y XPath 2.0 Funciones y operadores
(Segunda edicin)].]Funciones adicionales pueden ser declaradas en
un prlogo, importado de un mdulo de la biblioteca, o proporcionados
por el exterior medio ambiente como parte del contexto esttico.

[93]

FunctionCall

:: =

QName "(" (ExprSingle ("," ExprSingle) *)? ")"

Una llamada a la funcin consiste en un QName seguido de una lista


entre parntesis de cero o ms expresiones, llamados argumentos. Si el
QName en la llamada de funcin no tiene prefijo de espacio de nombres,
se considera que estar en el espacio de nombres de funcin por defecto.
Si el QName ampliado y el nmero de argumentos en una llamada de
funcin no coinciden con el nombre y la aridad de un firma de funcin en
elcontexto esttico, un error esttico se eleva [err: XPST0017].
Una llamada a la funcin se evala de la siguiente manera:
1. Expresiones de argumentos se evalan, produciendo valores de
los argumentos. El orden de evaluacin argumento es dependiente
de la implementacin y una funcin no necesita evaluar un
argumento si la funcin puede evaluar su cuerpo sin evaluar ese
argumento.
2. Cada valor del argumento se convierte mediante la aplicacin de
las reglas de conversin funcin se indican a continuacin.
3. Si la funcin es una funcin incorporada, se evala utilizando los
valores de los argumentos convertidos. El resultado es o bien una
instancia de declarada tipo de retorno de la funcin o de un error
dinmico. Errores planteadas por funciones incorporadas se
definen en [XQuery 1.0 y XPath 2.0 Funciones y operadores
(Segunda edicin)].
4. Si la funcin es una funcin declarada de usuario que tiene un
cuerpo, los valores de los argumentos convertidos estn ligados a
los parmetros formales de la funcin, y se evala el cuerpo de la
funcin. El valor devuelto por el cuerpo de la funcin se convierte
entonces en el tipo de retorno declarado de la funcin mediante la
aplicacin de las reglas de conversin funcin.
Cuando un valor del argumento convertido se une a un parmetro
de la funcin, el valor del argumento conserva su forma ms
especfica de tipodinmico, a pesar de que este tipo puede
derivarse a partir del tipo del parmetro formal. Por ejemplo, una
funcin con un parmetro $ p del tipoxs: decimal se puede invocar
con un argumento de tipo xs: nmero entero, que se deriva
de xs: decimal. Durante el procesamiento de esta funcin
invocacin, el tipo dinmico de $ p en el interior del cuerpo de la
funcin se considera que es xs: nmero entero. Del mismo modo, el

valor devuelto por una funcin conserva su tipo ms especfico,


que puede derivarse a partir del tipo de retorno declarado de la
funcin. Por ejemplo, una funcin que tiene un tipo de retorno
declarado de xs: decimal puede, de hecho, devolver un valor de
tipo dinmicos xs: integer.
Durante la evaluacin de un cuerpo de la funcin, el contexto
esttico y contexto dinmico para la evaluacin de la expresin son
definidos por elmdulo en el que se declara la funcin, que no es
necesariamente el mismo que el mdulo en el que la funcin se
llama. Por ejemplo, las variables en alcance, mientras que la
evaluacin de un cuerpo de funcin se definen por las variables
consideradas en el estudio del mdulo que declara la funcin en
lugar del mdulo en el que se invoca la funcin. Durante la
evaluacin de un cuerpo de la funcin, el enfoque (elemento de
contexto, la posicin de contexto, y el tamao de contexto)
es indefinido, excepto cuando se define por alguna expresin en el
interior del cuerpo de la funcin.
5. Si la funcin es una funcin externa declarada usuario,
su implementacin de la funcin se invoca con los valores de los
argumentos convertidos. El resultado es o bien un valor del tipo
declarado o definido por la implementacin de error (ver 2.2.5
Restricciones de consistencia).
Las reglas de conversin de funcin se utilizan para convertir un valor
de argumento o un valor de retorno a su tipo esperado; es decir, para el
tipo declarado de la funcin del parmetro o de retorno. El tipo esperado
se expresa como un tipo de secuencia. Las reglas de conversin de la
funcin se aplican a un valor dado de la siguiente manera:
Si el tipo esperado es una secuencia de un tipo atmica
(posiblemente con un indicador de ocurrencia *, +, o?), Se aplican
las siguientes conversiones:
1. La atomizacin se aplica al valor dado, lo que resulta en una
secuencia de valores atmicos.
2. Cada elemento de la secuencia atmica que es del tipo xs:
untypedAtomic se convierte en el tipo atmico
esperado. Por funciones integradas donde se especifica el
tipo esperado como numrico, argumentos de tipo xs:
untypedAtomic son echados a xs: double.

3. Para cada numrico elemento de la secuencia atmica que


puede ser promovido al tipo atmica esperada utilizando
promocin numrica como se describe en B.1
Tipo promocin, la promocin se hace.
4. Para cada elemento de tipo xs: anyURI en la secuencia
atmica que pueden ser promovidos al tipo atmica esperada
utilizando promocin URI como se describe en B.1
Tipo promocin, la promocin se hace.
Si, despus de las conversiones anteriores, el valor resultante no
coincide con el tipo esperado de acuerdo a las reglas
para SequenceTypeMatching, un error de tipo se
eleva [err: XPTY0004]. Si la llamada de funcin se lleva a cabo en
un mdulo que no sea el mdulo en el cual la funcin se define,
esta norma debe cumplirse tanto en el mdulo en el que se invoca
la funcin y el mdulo en el que se define la funcin (la prueba se
repite porque los dos mdulos pueden tener diferentes definiciones
de esquema consideradas en el estudio.) Tenga en cuenta que las
normas para SequenceType Matching permite un valor de un tipo
derivado para ser sustituido por un valor de su tipo base.
Dado que los argumentos de una llamada de funcin estn separados
por comas, cualquier expresin argumento de que contiene un alto nivel
deoperador coma debe ir entre parntesis. Estos son algunos ejemplos
ilustrativos de las llamadas de funcin:

mi: tres argumento de la funcin (1, 2, 3)

denota una llamada a la

funcin con tres argumentos.

denota una llamada a la


funcin con dos argumentos, el primero de los cuales es una
secuencia de dos valores.
mi: de dos argumentos de funciones (1, ()) denota una llamada a la
funcin con dos argumentos, el segundo de los cuales es una
secuencia vaca.
mi: un argumento de funcin ((1, 2, 3)) denota una llamada a la
funcin con un argumento que es una secuencia de tres valores.
mi: un argumento de funcin (()) denota una llamada a la funcin
con un argumento que es una secuencia vaca.
mi: sin argumentos-funcin () denota una llamada a la funcin con
cero argumentos.
mi: de dos argumentos funcin ((1, 2), 3)

3.2 Expresiones Path


[68]

PathExpr

:: =

[69]

RelativePathExpr

:: =

("/" RelativePathExpr?)
| ("//" RelativePathExpr)
| RelativePathExpr
StepExpr (("/" | "//") StepExpr) *

[Definicin: Una expresin de ruta se puede utilizar para localizar nodos


dentro de rboles. Una expresin de ruta consiste en una serie de uno o
mspasos, separados por "/" o "//", y, opcionalmente, que comienza
con "/" o "//".] Un inicial "/" o "//" es una abreviatura de una o ms
etapas iniciales que se agregan implcitamente al comienzo de la
expresin de ruta, como se describe a continuacin.
Una expresin de ruta que consta de un solo paso se evala como se
describe en 3.2.1 Pasos.
A "/" al principio de una expresin de ruta es una abreviatura para el
paso inicial (fn: root (self :: node ()) tratar como documento-node ()) /
(sin embargo, si el "/" es la totalidad expresin de ruta, el trailing "/" se
omite de la expansin.) El efecto de este paso inicial es comenzar la ruta
en el nodo raz del rbol que contiene el nodo de contexto. Si el elemento
de contexto no es un nodo, un error de tipo se eleva [err: XPTY0020]. A
la hora de la evaluacin, si el nodo raz por encima del nodo de contexto
no es un nodo de documento, un error dinmico se
eleva [err: XPDY0050].
Un "//" al principio de una expresin de ruta es una abreviatura de los
pasos iniciales (fn: root (self :: node ()) tratar como documento-node
()) / descendiente-or-self :: node () / (sin embargo, "//" por s mismo
no es una expresin ruta vlida [err: XPST0003]). El efecto de estos
pasos iniciales es establecer una secuencia de nodo inicial que contiene
la raz del rbol en el que se encuentra el nodo de contexto , adems de
todos los nodos descendientes de esta raz. Esta secuencia de nodo se
utiliza como la entrada a los pasos subsiguientes en la expresin de
ruta. Si el elemento de contexto no es un nodo, un error de tipo se
eleva [err: XPTY0020]. A la hora de la evaluacin, si el nodo raz por
encima del nodo de contexto no es un nodo de documento, un error
dinmico se eleva [err: XPDY0050].
Nota:
Los descendientes de un nodo no incluyen nodos de atributos.

Cada ocurrencia no inicial de "//" en una expresin de ruta se expande


como se describe en 3.2.4 Sintaxis abreviada, dejando una secuencia
de pasos separados por "/". Esta secuencia de pasos es evaluado de
izquierda a derecha. Cada operacin de E1 / E2 se evala como sigue:
ExpresinE1 se evala, y si el resultado no es una (posiblemente vaco)
secuencia de nodos, un error de tipo se eleva [err: XPTY0019]. Cada
nodo resultante de la evaluacin de E1 a continuacin, sirve a su vez para
proporcionar un enfoque interno para una evaluacin de E2, como se
describe en 2.1.2 Contexto Dinmico. Las secuencias resultantes de
todas las evaluaciones de E2 se combinan de la siguiente manera:
1. Si cada evaluacin de E2 devuelve una (posiblemente vaca)
secuencia de nodos, estas secuencias se combinan, y los nodos
duplicados se eliminan basan en la identidad de nodo. Si el modo
de ordenar se orden, la secuencia de nodo resultante se devuelve
en el orden deldocumento; de lo contrario, se devuelve
en dependiente de la implementacin orden.
2. Si cada evaluacin de E2 devuelve una (posiblemente vaca)
secuencia de valores atmicos, estas secuencias se concatenan y
se devuelven. Si el modo de ordenar se orden, la secuencia de
regresar preserva los ordenamientos dentro y entre las
subsecuencias generados por las evaluaciones de E2; de lo
contrario el orden de la secuencia devuelta es dependiente de
la implementacin.
3. Si las mltiples evaluaciones de E2 regresan al menos un nodo y al
menos un valor atmico, un error de tipo se eleva [err: XPTY0018].
Nota:
Puesto que cada paso en una trayectoria proporciona nodos de contexto
para la etapa siguiente, en efecto, slo se permite el ltimo paso en una
trayectoria para devolver una secuencia de valores atmicos.
Como un ejemplo de una expresin de ruta, child :: div1 / child ::
para selecciona los prr hijos de elementos de los div1 hijos de elementos
del nodo de contexto, o, en otras palabras, las prr nietos elemento del
nodo de contexto que tienen div1 padres .
Nota:

El "/ carcter" puede ser utilizado ya sea como una expresin de ruta
completa o como el comienzo de una expresin de ruta ms larga tales
como"/ *". Adems, "*" es a la vez el operador se multiplican y un
comodn en expresiones de ruta. Esto puede causar dificultades a la hora
de analizar"/ aparece" en el lado izquierdo de "*". Esto se resuelve con
el lder-solitaria-slash restriccin. Por ejemplo, "/ *" y "/ *" son
expresiones de ruta vlidos que contienen comodines,

5" y "/ * 5" aumentan los errores de sintaxis. Los parntesis se


deben utilizar cuando "/"se utiliza en el lado de la mano izquierda de un
operador, como en "(/) * 5". Del mismo modo, "4 + / 5 *" plantea un
error de sintaxis, pero "4 + (/) * 5" es una expresin vlida. La
expresin "4 + /" tambin es vlido, ya que / no se produce en el lado
izquierdo del operador.
pero "/ *

3.2.1 Pasos
[70]
[71]
[72]
[75]
[82]

StepExpr
AxisStep
ForwardStep
ReverseStep
PredicateList

:: =
:: =
:: =
:: =
:: =

FilterExpr | AxisStep
(ReverseStep | ForwardStep) PredicateList
(ForwardAxis NodeTest) | AbbrevForwardStep
(ReverseAxis NodeTest) | AbbrevReverseStep
Predicado *

[Definicin: Un paso es una parte de una expresin de ruta que genera


una secuencia de elementos y luego filtra la secuencia de cero o
mspredicados. El valor del paso consiste en aquellas partidas que
satisfacen los predicados, trabajando de izquierda a derecha. Un paso
puede ser unpaso eje o una expresin de filtro.] Filtro expresiones se
describen en 3.3.2 Filtrar Expresiones.
[Definicin: Un paso eje devuelve una secuencia de nodos que son
accesibles desde el nodo de contexto a travs de un eje
especificado. Esta medida tiene dos partes: un eje, que define la
"direccin del movimiento" para el paso, y una prueba de nodo, que
selecciona los nodos en funcin de su tipo, el nombre y / o el tipo
de anotacin] Si el elemento de contexto es una. nodo, un paso eje
devuelve una secuencia de cero o ms nodos; de lo contrario, un error de
tipo se eleva [err: XPTY0020.] Si el modo de ordenar se orden, la
secuencia de nodo resultante se devuelve en el orden del documento; de lo
contrario, se devuelve en dependiente de la implementacin orden. Un
paso eje puede ser un paso adelante o un paso inverso,seguido de cero
o ms predicados.

En la sintaxis abreviada para un paso, el eje se puede omitir y otras


notaciones cortas se puede utilizar como se describe en 3.2.4
Sintaxis abreviada.
La sintaxis no abreviada para un paso de eje consiste en el nombre del
eje y el nodo de prueba separados por dos puntos dobles. El resultado
de la etapa consta de los nodos alcanzables desde el nodo de contexto a
travs del eje especificado que tienen el tipo de nodo, el nombre y / o tipo
de anotacin especificado por la prueba de nodo. Por ejemplo, el
paso child :: para selecciona los prr hijos de elementos del nodo de
contexto: nioes el nombre del eje, y el prrafo es el nombre de los
nodos de elementos para ser seleccionado en este eje. Los ejes
disponibles se describen en3.2.1.1 Ejes. Las pruebas de nodos
disponibles se describen en 3.2.1.2 Las pruebas de nodo. Ejemplos de
medidas se proporcionan en 3.2.3 Sintaxis sin abreviar y 3.2.4
Sintaxis abreviada.
3.2.1.1 Ejes
[73]

ForwardAxis

:: =

[76]

ReverseAxis

:: =

("nio" "::")
| ("descendiente" "::")
| ("atributo" "::")
| ("yo" "::")
| ("descendiente-o-yo" ": : ")
| (" siguiente-hermano "" :: ")
| (" siguiente "" :: ")
("padre" "::")
| ("ancestro" "::")
| ("anterior-hermano" "::")
| ("anterior" "::")
| ("ancestro-o-yo" "::")

XQuery soporta los siguientes ejes (sujeto a las limitaciones que se


describen en 5.2.4 Completo Eje Feature):
El nio eje contiene los hijos del nodo de contexto, que son los
nodos devueltos por el dm: los nios de acceso en [XQuery 1.0 y
XPath 2.0 Modelo de Datos (Segunda edicin)].
Nota:
Slo los nodos de documentos y nodos elemento tienen
hijos. Si el nodo de contexto es cualquier otro tipo de nodo, o si
el nodo de contexto es un nodo documento o elemento de
vaco, entonces el eje nio es una secuencia vaca. Los hijos
de un nodo documento o nodo de elemento puede ser

elemento, instruccin de procesamiento, comentario o nodos


de texto. Atributo y nodos de documento nunca pueden
aparecer como hijos.
el descendiente eje se define como el cierre transitivo del eje de
nio; contiene los descendientes del nodo de contexto (los hijos,
los hijos de los hijos, etc.)
el padre eje contiene la secuencia devuelta por el dm: matriz de
acceso en [XQuery 1.0 y XPath 2.0 Modelo de Datos
(Segunda edicin)], que devuelve el padre del nodo de contexto, o
una secuencia vaca si el nodo contextual no tiene padre
Nota:
Un nodo de atributo puede tener un nodo elemento como su
padre, a pesar de que el nodo de atributo no es un hijo del
nodo de elemento.
el ancestro eje se define como el cierre transitivo del eje de
matrices; contiene los ancestros del nodo de contexto (el padre, el
padre de los padres, etc.)
Nota:
El eje ancestro incluye el nodo raz del rbol en el que se
encuentra el nodo de contexto, a menos que el nodo de
contexto es el nodo raz.
la siguiente-hermanos eje contiene siguientes hermanos del nodo de
contexto, los hijos de los padres del nodo de contexto que se
producen despus de que el nodo de contexto en el orden
del documento; si el nodo contextual es un nodo de atributo,
el siguiente hermano-eje est vaca

el-hermano precedente eje contiene hermanos precedentes del


nodo contexto, los hijos de los padres del nodo de contexto que se
producen antes de que el nodo de contexto en el orden
del documento; si el nodo contextual es un nodo de atributo,
el anterior-hermano eje est vaca
el siguiente eje contiene todos los nodos que son descendientes de
la raz del rbol en el que se encuentra el nodo de contexto, no son
descendientes del nodo de contexto, y se producen despus de
que el nodo de contexto en el orden del documento
el anterior eje contiene todos los nodos que son descendientes de
la raz del rbol en el que se encuentra el nodo de contexto, no son

ancestros del nodo de contexto, y se producen antes de que el


nodo de contexto en el orden del documento
el atributo eje contiene los atributos del nodo de contexto, que son
los nodos devueltos por el dm: Atributos de acceso en [XQuery 1.0
y XPath 2.0 Modelo de Datos (Segunda edicin)]; el eje estar
vaco a menos que el nodo de contexto es un elemento
el auto eje contiene slo el nodo de contexto en s
el descendiente-or-self eje contiene el nodo de contexto y los
descendientes del nodo contextual
el ancestro-or-self eje contiene el nodo de contexto y los ancestros
del nodo de contexto; por lo tanto, el eje de ancestro-or-self
siempre incluirn el nodo raz
Ejes puede ser categorizado como ejes delantero y ejes revertir. Un eje
que slo alguna vez contiene el nodo de contexto o nodos que estn
despus del nodo de contexto en el orden del documento es un eje hacia
adelante. Un eje que slo alguna vez contiene el nodo de contexto o
nodos que estn delante del nodo de contexto en el orden del
documento es un eje inverso.
El padre, ancestro, ancestro-or-self, preceden y anterior-hermanos ejes son
ejes inversa; todos los otros ejes son ejes
delanteros. El antepasado,descendiente, siguiente, anterior y auto ejes
particionar un documento (ignorando los nodos de atributos): que no se
superpongan y juntos contienen todos los nodos del documento.
[Definicin: Cada eje tiene un tipo de nodo director. Si un eje puede
contener elementos, entonces el tipo de nodo principal es elemento; de lo
contrario, es el tipo de nodos que el eje puede contener] Por lo tanto.:
Para el eje de atributo, el tipo de nodo principal es atributo.
Para el resto de ejes, el tipo de nodo principal es elemento.
3.2.1.2 Las pruebas de nodo

[Definicin: Una prueba de nodo es una condicin que debe ser cierto
para cada nodo seleccionado por un paso.] La condicin puede estar
basada en el tipo de nodo (elemento, atributo, texto, documento,
comentario o instruccin de procesamiento), el nombre del nodo, o (en el

caso del elemento, atributo y nodos de documento), el tipo de


anotacin del nodo.
[78]
[79]
[80]

NodeTest
NameTest
Comodn

:: =
:: =
:: =

KindTest | NameTest
QName | Comodn
"*"
| (NCName ":" "*")
| ("*" ":" NCName)

[Definicin: Una prueba de nodo que se compone slo de un QName o


un Comodn se denomina prueba de nombre.] Una prueba de nombre es
verdadera si y slo si el tipo del nodo es el tipo principal de nodo para el
eje de paso y el ampliado QName de el nodo es igual (como se define
por el eqoperador) a la QName ampliado especificado por la prueba de
nombre. Por ejemplo, child :: para selecciona los prr hijos de
elementos del nodo de contexto; si el nodo contextual no tiene prr hijos,
se selecciona un conjunto vaco de nodos. atributo :: abc:
href selecciona el atributo del nodo de contexto con el
QName abc: href; si el nodo contextual no tiene tal atributo, selecciona
un conjunto vaco de nodos.
Un QName en una prueba de nombre se resuelve en un QName
ampliado utilizando los espacios de nombres estticamente conocidos en
el contexto de la expresin. Es un error esttico [err: XPST0081] si el
QName tiene un prefijo que no corresponde a ningn espacio de
nombres estticamente conocido. Un QName sin prefijo, cuando se
utiliza como una prueba de nombre en un eje cuyo director nodo tipo es
elemento, tiene el espacio de nombres URI del espacio de nombres de
elemento por defecto / tipo en el contexto de expresin; de lo contrario,
no tiene espacio de nombres URI.
Una prueba de nombre no se satisface con un nodo elemento cuyo
nombre no coincide con el QName ampliado de la prueba de nombre,
aunque sea en un grupo de sustitucin cuya cabeza es el elemento con
nombre.
Una prueba de nodo * es cierto para cualquier nodo de la directora tipo
de nodo del eje paso. Por ejemplo, child :: * seleccionar todos los
nios de los elementos del nodo de contexto, y atribuir ::
* seleccionar todos los atributos del nodo de contexto.
Una prueba de nodo puede tener la forma NCName: *. En este caso, el
prefijo se expande en la misma forma que con un QName, utilizando

los espacios de nombres estticamente conocidos en


el contexto esttico. Si el prefijo no se encuentra en los espacios de
nombres estticamente conocidos, unerror esttico se
eleva [err: XPST0081]. La prueba de nodo es cierto para cualquier nodo
de la directora tipo de nodo del eje paso cuya ampliado QName tiene el
URI de espacio al que est enlazado el prefijo, independientemente de la
parte local del nombre.
Una prueba de nodo tambin puede tener la forma *: NCName. En este
caso, la prueba de nodo es cierto para cualquier nodo de la directora tipo
de nodo del eje paso cuyo nombre local coincide con el NCName dado,
independientemente de su espacio de nombres o la falta de un espacio
de nombres.
[Definicin: Una forma alternativa de una prueba de nodo
llamado prueba de tipo puede seleccionar nodos en funcin de su tipo,
nombre y tipo deanotacin.] La sintaxis y la semntica de una prueba tipo
se describen en 2.5.3 Sintaxis SequenceType y 2.5.4
SequenceType Coincidencia. Cuando se utiliza una prueba de este tipo
en una prueba de nodo, se seleccionan slo aquellos nodos en el eje
designadas que coinciden con el tipo de prueba.A continuacin se
muestran varios ejemplos de pruebas tipo que podran ser utilizados en
expresiones de ruta:

node ()

texto ()

Comentario ()

elemento ()

esquema-elemento (persona)

coincide con cualquier nodo.


coincide con cualquier nodo de texto.
coincide con cualquier nodo comentario.

coincide con cualquier nodo de elemento.

coincide con cualquier nodo de elemento


cuyo nombre es la persona (o est en el grupo de
sustitucin encabezada por persona), y cuyo tipo de anotacin es
lo mismo que (o se deriva de) el tipo declarado de
la persona

elemento en el en declaraciones de elementos -scope.

elemento (persona)

coincide con cualquier nodo de elemento cuyo

nombre es persona,

independientemente de su tipo de anotacin.

coincide con cualquier nodo de


elemento no nilled cuyo nombre es persona, y cuyo tipo de
anotacin escirujano o se deriva de cirujano.
elemento (persona, cirujano)

coincide con cualquier nodo de elemento no


nilled cuya anotacin de tipo es cirujano (o se deriva del cirujano),
elemento (*, cirujano)

independientemente de su nombre.

atributo ()

atributo (precio)

es el

coincide con cualquier nodo de atributo.

coincide con cualquier atributo cuyo nombre


precio, independientemente de su tipo de anotacin.

atributos (*, xs: decimal)

documento-node ()

documento-nodo (elemento (libro))

coincide con cualquier atributo cuyo


anotacin de tipo es xs: decimal (o se deriva
de xs: decimal),independientemente de su nombre.
coincide con cualquier nodo de documento.

coincide con cualquier nodo de


documento cuyo contenido consiste en un nico nodo de elemento
que satisface la prueba de tipo elemento (libro), intercalados con
cero o ms comentarios e instrucciones de procesamiento.

3.2.2 Los predicados


[83]

Predicado

:: =

"[" Expr "]"

[Definicin: Un predicado consiste en una expresin, llama expresin


de predicado, entre corchetes. Un predicado sirve para filtrar una
secuencia, que conserva algunos elementos y descartar otros.] En el
caso de mltiples predicados adyacentes, los predicados se aplican de
izquierda a derecha, y el resultado de la aplicacin de cada predicado
sirve como la secuencia de entrada para el siguiente predicado.
Para cada elemento de la secuencia de entrada, la expresin de
predicado se evala utilizando un enfoque interno, define de la siguiente
manera: El elemento de contexto es el elemento actualmente se est
probando contra el predicado. El tamao contexto es el nmero de
elementos en la secuencia de entrada. La posicin contexto es la
posicin del elemento de contexto dentro de la secuencia de
entrada. Para el propsito de evaluar la posicin de contexto dentro de
un predicado, la secuencia de entrada se considera que ser resuelto de
la siguiente manera: en el orden del documento si el predicado est en
un paso del eje hacia adelante, en el orden del documento inversa si el
predicado est en un eje inversa paso, o en su orden original, si el
predicado no est en un paso.

Para cada elemento de la secuencia de entrada, el resultado de la


expresin de predicado se coaccion a una xs: boolean valor, llamado
el valor de verdad de predicados, como se describe a
continuacin. Esos elementos para los que el valor de verdad del
predicado es verdadero se conservan, y aquellos para los que el valor de
verdad de predicados es falsa se descartan.
El valor de verdad de predicados se deriva mediante la aplicacin de las
siguientes normas, con el fin de:
1. Si el valor de la expresin de predicado es un producto nico valor
atmico de un numrico tipo o derivado de un numrico tipo, el
valor de verdad predicado es verdadero si el valor de la expresin
de predicado es igual (por el eq operador) a la posicin
de contexto, y es falso lo contrario.[Definicin: Un predicado cuya
expresin predicado devuelve un tipo numrico se llama
un predicado numrico.]
Nota:
En una regin de una consulta en el modo de
ordenar es desordenada, el resultado de un predicado numrico
es no determinista, como se explica en 3.9 ordenadas y
desordenadas Expresiones.
2. De lo contrario, el valor de verdad predicado es el valor booleano
eficaz de la expresin de predicado.
Estos son algunos ejemplos de las medidas de los ejes que contienen
predicados:
En este ejemplo se selecciona el segundo captulo elemento que
es un hijo del nodo de contexto:
child :: captulo [2]

Este ejemplo selecciona todos los descendientes del nodo de


contexto que son elementos llamados "juguete" y cuyo color
de atributo tiene el valor "rojo":
descendiente :: juguete [atributo :: color = "red"]

Este ejemplo selecciona todos los empleados hijos del nodo


contextual que tiene tanto una secretaria elemento secundario y
un asistenteelemento hijo:
child :: empleado [secretaria] [asistente]

Nota:
Cuando se utiliza predicados con una secuencia de nodos seleccionados
usando un eje inverso, es importante recordar que los las posiciones de
contexto para tal secuencia se asignan en el orden del
documento inversa. Por ejemplo, anterior :: foo [1] devuelve la primera
fase de clasificacin foo elemento en orden de
documento inversa, porque el predicado es parte de una etapa
eje usando un eje inverso. Por el contrario,(anterior :: foo) [1] devuelve
la primera fase de clasificacin foo elemento en el orden
del documento, ya que los parntesis causan (anterior :: foo) para ser
analizada como una expresin primaria en el que las posiciones de
contexto se asignan en el orden del documento. Del mismo
modo, ancestro :: * [1] devuelve el elemento antecesor ms cercano,
porque el ancestro eje es un eje inverso, mientras que (ancestro :: *)
[1] devuelve el elemento raz (primera ancestro en el orden del
documento).
El hecho de que un paso del eje inverso asigna posiciones de contexto
en el orden del documento inversa con el fin de predicados que evalan
no altera el hecho de que el resultado final de la etapa (cuando est en
modo ordenado) est siempre en el orden del documento.
3.2.3 Sintaxis sin abreviar

En esta seccin se ofrece una serie de ejemplos de expresiones de ruta


en la que se especifica explcitamente el eje en cada paso. La sintaxis
utilizada en estos ejemplos se denomina sintaxis sin abreviar. En
muchos casos comunes, es posible escribir expresiones de ruta ms
concisa utilizando unasintaxis abreviada, como se explica en 3.2.4
Sintaxis abreviada.

child :: para

selecciona los prr hijos de elementos del nodo de

contexto

child :: *

selecciona todos los nios de los elementos del nodo de

contexto

child :: texto ()

selecciona todos los hijos del nodo de texto del

nodo de contexto
child :: node () selecciona todos los hijos del nodo de
contexto. Tenga en cuenta que no hay nodos de atributos se
devuelven, porque los atributos no son nios.

atribuir :: nombre

selecciona el nombre

de

atributo del nodo de

contexto

atribuir :: *

parent :: node ()

ancestro-or-self :: div

self :: para

selecciona todos los atributos del nodo de contexto

selecciona el padre del nodo de contexto. Si el


nodo de contexto es un nodo de atributo, esta expresin devuelve
el nodo de elemento (si existe) al que est conectado el nodo
atributo.
descendiente :: para selecciona los prr descendientes de
elementos del nodo de contexto
ancestro :: div selecciona todos div ancestros del nodo contextual
selecciona las div ancestros del nodo de
contexto y, de ser el nodo de contexto es un div elemento, el nodo
de contexto, as
descendiente-or-self :: para selecciona los prr descendientes de
elementos del nodo de contexto y, de ser el nodo de contexto es
unprrafo elemento, el nodo de contexto, as

selecciona el nodo de contexto si es


un prrafo elemento, y de lo contrario devuelve una secuencia
vaca
child :: captulo / descendiente :: para selecciona
los prr descendientes elemento del captulo hijos de elementos
del nodo de contexto
child :: * / child :: para selecciona todos prr nietos del nodo de
contexto
/ Selecciona la raz del rbol que contiene el nodo de contexto,
pero plantea un error dinmico si esta raz no es un nodo de
documento
/ descendiente :: para selecciona todos los prr elementos en el
mismo documento que el nodo de contexto
/ descendiente :: Lista / child :: miembro selecciona todos
los miembros de elementos que tienen una lista de los padres y que
estn en el mismo documento que el nodo de contexto
child :: para [nota: la posicin () = 1] selecciona el
primer prrafo hijo del nodo de contexto
child :: para [nota: la posicin () = fn: last ()] selecciona el
ltimo prrafo hijo del nodo de contexto

child :: para [nota: la posicin () = fn: last () - 1]

selecciona el

penltimo prrafo hijo del nodo de contexto


child :: para [nota: la posicin ()> 1] selecciona todos
los prr hijos del nodo de contexto que no sea el primer prrafo hijo
del nodo de contexto
following-sibling :: captulo [nota: la posicin () = 1] Selecciona
el siguiente captulo hermano del nodo de contexto

anterior-hermano :: captulo [nota: la posicin () = 1]

selecciona

el anterior captulo hermano del nodo de contexto

/ descendiente :: figura [nota: la posicin () = 42]

/ child :: libro / child :: captulo [nota: la posicin () = 5] /

selecciona la
cuadragsima segunda cifra elemento en el documento que
contiene el nodo de contexto

selecciona la
segundaseccin del quinto captulo del libro cuyo padre es el nodo
de documento que contiene el nodo de contexto
child :: para [atributo :: Tipo eq "warning"] selecciona
todos prr hijos del nodo de contexto que tienen un tipo de atributo
con valor deadvertencia
child :: seccin [fn: posicin () = 2]

child :: para [atributo :: Tipo eq 'advertencia'] [nota: la

selecciona el quinto prrafo hijo del nodo de


contexto que tiene un tipo de atributo con valor de advertencia
posicin () = 5]

child :: para [nota: la posicin () = 5] [atributo :: Tipo eq

selecciona el quinto prrafo hijo del nodo de contexto si


ese nio tiene un tipo de atributo con valor de advertencia
"warning"]

child :: captulo [child :: title = 'Introduccin']

child :: captulo [child :: ttulo]

child :: * [self :: captulo o self :: apndice]

child :: * [self :: captulo o self :: apndice] [nota: la posicin

selecciona
los captulos hijos del nodo contextual que tengan uno o
ms ttulosnios cuyo valor escrito es igual a la
cadena Introduccin
selecciona los captulos hijos
del nodo contextual que tengan uno o ms ttulos nios
selecciona
los captulos y apndice hijos del nodo de contexto
() = fn: last ()]

nodo de contexto

selecciona el ltimo captulo o apndice hijo del

3.2.4 Sintaxis abreviada


[74]
[77]

AbbrevForwardStep
AbbrevReverseStep

:: =
:: =

"@"? NodeTest
".."

La sintaxis abreviada permite las siguientes abreviaturas:


1. El eje de atributos atribuyen :: puede abreviarse por @. Por
ejemplo, una expresin de ruta para [@ type = "warning"] es la
abreviatura dechild :: para [atributo :: type = "warning"] y as
selecciona prr nios con un tipo de atributo con valor igual
a la advertencia.
2. Si el nombre de eje se omite un paso del eje, el eje por defecto
es nio a menos que el paso del eje contiene
un AttributeTest oSchemaAttributeTest; en ese caso, el eje por
defecto es atributo. Por ejemplo, la expresin de ruta seccin /
para es una abreviatura de child :: seccin / child :: para, y la
expresin de ruta seccin / @ id es una abreviatura de child ::
seccin / atributo :: identificacin. Del mismo modo, la seccin /
atributo (id) es una abreviatura de child :: seccin / atributo ::
atributo (id). Tenga en cuenta que esta ltima expresin contiene
tanto una especificacin de eje y una prueba de nodo.
3. Cada ocurrencia no inicial de // se sustituye eficazmente por /
descendiente-or-self :: node () / durante el procesamiento de una
expresin de ruta. Por ejemplo, div1 // prrafo es la abreviatura
de child :: div1 / descendiente o auto-:: node () / child :: para y
as seleccionar todos prr descendientes de div1 nios.
Nota:
La expresin de ruta // prrafo [1] no no significa lo mismo
que la expresin ruta / descendiente :: para [1]. Este ltimo
selecciona el primer descendiente prr elemento; los ex
selecciona todos los descendientes prr elementos que son los
primeros prr hijos de sus respectivos padres.
4. Una etapa que consiste en .. es la abreviatura de parent ::
node (). Por ejemplo, ../title es la abreviatura de parent :: node ()
/ child :: ttulo y as seleccionar los ttulos hijos del padre del
nodo de contexto.
Nota:

La expresin., Conocida como una expresin elemento


de contexto, es una expresin primaria, y se describe en 3.1.4
Expresin Contexto artculo.
Estos son algunos ejemplos de expresiones de ruta que utilizan la
sintaxis abreviada:

prr

texto ()

selecciona los prr hijos de elementos del nodo de contexto

Selecciona todos los hijos de los elementos del nodo de contexto


selecciona todos los hijos del nodo de texto del nodo de

contexto
name selecciona el nombre

@ *

prrafo [1]

prrafo [fn: last ()]

de

atributo del nodo de contexto

Selecciona todos los atributos del nodo de contexto


selecciona el primer prrafo hijo del nodo de contexto
selecciona el ltimo prrafo hijo del nodo de

contexto

* / para

/ libro / captulo [5] / seccin [2]

// prrafo

selecciona todos prr nietos del nodo de contexto

selecciona la
segunda seccin del quinto captulo del libro cuyo padre es el nodo
de documento que contiene el nodo de contexto
captulo // prrafo selecciona los prr descendientes elemento
del captulo hijos de elementos del nodo de contexto

selecciona todos los prr descendientes del nodo raz


del documento y por lo tanto selecciona todos prr elementos en el
mismo documento que el nodo de contexto
// @ versin selecciona todas las versin nodos de atributos que
estn en el mismo documento que el nodo de contexto
// lista / miembro selecciona todos los miembros de los elementos
en el mismo documento que el nodo de contexto que tienen
una lista de los padres
.//para selecciona los prr descendientes de elementos del nodo
de contexto
.. Selecciona el padre del nodo contextual

../@lang

selecciona el lang atributo del padre del nodo contextual

selecciona todos prr hijos del


nodo de contexto que tienen un tipo de atributo con valor
de advertencia
prrafo [@ type = "warning"] [5] selecciona el quinto prrafo hijo
del nodo de contexto que tiene un tipo de atributo con valor
de advertencia
prrafo [5] [@ type = "warning"] selecciona el quinto prrafo hijo
del nodo de contexto si ese nio tiene un tipo de atributo con valor
deadvertencia
captulo [title = "Introduccin"] selecciona los captulos hijos del
nodo contextual que tengan uno o ms ttulos nios cuyo valor
escritoes igual a la cadena Introduccin
captulo [ttulo] selecciona los captulos hijos del nodo contextual
que tengan uno o ms ttulos nios
empleado [secretary yassistant] selecciona todos los empleados hijos
del nodo contextual que tiene tanto una secretaria atributo y
unasistente del atributo
Libro / (captulo | apndice) / seccin selecciona cada seccin
de elemento que tiene un padre que es o bien un captulo o
un apndiceelemento, que a su vez es un nio de un libro
de elemento que es un hijo del nodo de contexto.
Si E es cualquier expresin que devuelve una secuencia de nodos,
entonces la expresin E /. Devuelve los mismos nodos en el orden
deldocumento, con duplicados eliminados basada en la identidad
de nodo.
prrafo [@ type = "advertencia"]

3.3 Secuencia Expresiones


http://www.w3.org/TR/xquery/

2. Aspecto de XQuery

Usualmente Xquery se almacena en archivos. Estos archivos pueden combinar elementos de marcado, datos
expresiones FLWOR encerradas entre llaves.
Las caractersticas de los archivos XQuery son las siguientes:

Suelen tener la extensin "xquery" o, ms comnmente "xq".

Suelen comenzar con la lnea siguiente: xquery version "1.0";

Las expresiones FLWOR van entre llaves { }

Las declaraciones y expresiones se separan por punto y coma (;)

Los comentarios se enciarran entre caras alegres (: y :)

Se puede utilizar XQuery en cualquier programa que tenga un intrprete XQuery. Es altamente recomendabl
base de datos XML nativa BaseX. Tambin podemos probar nuestras expresiones XQuery on-line mediante
demo.
Como ejemplo podemos crear una base de datos XML "libros" a partir del fichero "libros.xml" que tenemos
Introduciendo la expresin siguiente en el editor de Xquery y salvando el fichero como libros.xq.
titulos.xq: Obtiene lista de titulos de libros en formato de tabla html
xquery version "1.0";
<html>
<body>
<table border="1">
{
for $x in doc("libros.xml")/libreria/libro
return <tr><td>{string($x/titulo)}</td></tr>
}
</table>
</body>
</html>
<html>
<body>
<table border="1">
<tr>
<td>Everyday Italian</td>
</tr>
<tr>
<td>Harry Potter</td>
</tr>
<tr>
<td>XQuery Kick Start</td>
</tr>
<tr>
<td>Learning XML</td>
</tr>
</table>
</body>
</html>

1. Estructura de un documento XML

Aunque a primera vista, un documento XML puede parecer similar a HTML, hay una diferencia
documento XML contiene datos que se autodefinen, exclusivamente. Un documento HTML con
definidos, mezclados con elementos de formato. En XML se separa el contenido de la presenta
total.
Una forma de entender rpidamente la estructura de un documento XML, es viendo un peque
Documento XML
<?xml version="1.0"?>
<!DOCTYPE MENSAJE SYSTEM "mensaje.dtd">
<mensaje>
<remite>
<nombre>Alfredo Reino</nombre>
<email>alf@ibium.com</email>
</remite>
<destinatario>
<nombre>Bill Clinton</nombre>
<email>president@whitehouse.gov</email>
</destinatario>
<asunto>Hola Bill</asunto>
<texto>

<parrafo>Hola qu tal? Hace <enfasis>mucho</enfasis> que no escribes. A ver si llamas y quedamos para toma
</texto>
</mensaje>

Este mismo documento puede ser visto de forma grfica, para comprender mejor la estructura
documento XML.

Anda mungkin juga menyukai