0. ndice de contenidos.
1. Entorno
2. Introduccin
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)
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.
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
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).
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.
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
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.
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
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.
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
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
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
FunctionCall
:: =
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.
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
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
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
no
YY
XP
ST
DY
TY
nnnn
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
$ N [x moldeable como xs: fecha] [xs: date (x) gt xs: date ("200001-01")]
2.4 Conceptos
Esta seccin explica algunos conceptos que son importantes para el
procesamiento de expresiones XQuery.
2.4.1 Documento Orden
Reparto de expresiones
Expresiones de constructor para diversos tipos de nodos
ordenado por
boolean
no
funcin
[b]
URILiteral
:: =
StringLiteral
por
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
= | (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"
[135] SchemaElementTest
:: "esquema de elementos"
[131] SchemaAttributeTest
:: "esquema-atributo"
[132]
[134]
[138]
[130]
[137]
[139]
=
[128]
PITest
:: "instruccin de procesamiento"
[127] CommentTest
[126] Texttest
[124] AnyKindTest
xs: la fecha
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)
artculo ()
node ()
texto ()
procesamiento de instrucciones ()
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]
Comentario ()
documento-node ()
documento de nodo
3.
4.
5.
6.
(ElementName)
1.
(AttributeName)
2.
2.6 Comentarios
[151]
[159]
Comentario
CommentContents
:: =
:: =
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
Expr
ExprSingle
:: =
:: =
Literal
[86]
NumericLiteral
:: NumericLiteral | StringLiteral
=
[141] IntegerLiteral
[142] DecimalLiteral
[143] DoubleLiteral
[144] StringLiteral
[145]
PredefinedEntityR
ef
[158]
Dgitos
= l
:: Dgitos
=
:: ("." Dgitos) | (Dgitos "." [0-9] *)
=
:: ("." (Dgitos) | (Dgitos "."? ([0-9] *)))?
= [EE] [+ -] Dgitos
:: ('"' (PredefinedEntityRef | CharRef | EscapeQu
| [^" &]) * '"') |
= ot
(" '"(PredefinedEntityRef |CharRef | EscapeApo
=
:: [0-9] +
=
<
& gt;
>
& amp;
& quot;
"
& apos;
'
"12.5"
indica la cadena que contiene los caracteres '1', '2', '.', Y '5'.
12
12.5
125E2
integer
valor doce.
decimal
doble
comillas y un apstrofe.
valor "Ben
&
Jerry".
string
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:
un nmero."
"infinito positivo."
Tambin es posible construir los valores de varios tipos utilizando
un molde expresin. Por ejemplo:
es HATSIZE.
3.1.2 Referencias Variable
[87]
[88]
Ref.var
NombreVar
:: =
:: =
"$" NombreVar
QName
[err:XPDY0002].
ParenthesizedExpr
:: =
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
:: =
"."
[93]
FunctionCall
:: =
PathExpr
:: =
[69]
RelativePathExpr
:: =
("/" RelativePathExpr?)
| ("//" RelativePathExpr)
| RelativePathExpr
StepExpr (("/" | "//") StepExpr) *
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,
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 *
ForwardAxis
:: =
[76]
ReverseAxis
:: =
("nio" "::")
| ("descendiente" "::")
| ("atributo" "::")
| ("yo" "::")
| ("descendiente-o-yo" ": : ")
| (" siguiente-hermano "" :: ")
| (" siguiente "" :: ")
("padre" "::")
| ("ancestro" "::")
| ("anterior-hermano" "::")
| ("anterior" "::")
| ("ancestro-o-yo" "::")
[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
NodeTest
NameTest
Comodn
:: =
:: =
:: =
KindTest | NameTest
QName | Comodn
"*"
| (NCName ":" "*")
| ("*" ":" NCName)
node ()
texto ()
Comentario ()
elemento ()
esquema-elemento (persona)
elemento (persona)
nombre es persona,
independientemente de su nombre.
atributo ()
atributo (precio)
es el
documento-node ()
Predicado
:: =
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
child :: para
contexto
child :: *
contexto
child :: texto ()
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
contexto
atribuir :: *
parent :: node ()
ancestro-or-self :: div
self :: para
selecciona el
selecciona
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]
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
AbbrevForwardStep
AbbrevReverseStep
:: =
:: =
"@"? NodeTest
".."
prr
texto ()
contexto
name selecciona el nombre
@ *
prrafo [1]
de
contexto
* / para
// prrafo
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
../@lang
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:
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>
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.