<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Linguaxes_de_consulta_e_manipulaci%C3%B3n</id>
	<title>Linguaxes de consulta e manipulación - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Linguaxes_de_consulta_e_manipulaci%C3%B3n"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Linguaxes_de_consulta_e_manipulaci%C3%B3n&amp;action=history"/>
	<updated>2026-10-28T06:34:40Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Linguaxes_de_consulta_e_manipulaci%C3%B3n&amp;diff=28075&amp;oldid=prev</id>
		<title>Veiga: /* Referencias */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Linguaxes_de_consulta_e_manipulaci%C3%B3n&amp;diff=28075&amp;oldid=prev"/>
		<updated>2012-04-23T10:57:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Referencias&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introdución a XQuery=&lt;br /&gt;
XQuery é unha linguaxe de consulta de datos en formato XML, non só para ficheiros, senón tamén para bases de datos. É a XML o que o SQL é ás bases de datos relacionais. &lt;br /&gt;
&lt;br /&gt;
Como linguaxe de consulta permite atopar e extraer elementos e atributos dende ficheiros ou BBDD XML. Un exemplo de consulta en XQuery podería ser a seguinte:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Selecciona todos os rexistros cun prezo menor de 10€ na miña colección de CD almacenada nun documento XML chamado cd_catalog.xml&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
XQuery 1.0 e [[Linguaxe_de_navegaci%C3%B3n_no_documento_XML|XPath]] 2.0 comparten o mesmo modelo de datos, funcións e operadores. De feito, XQuery converteuse nunha recomendación do W3C dende o ano 2007 e, por tanto, é compatible con outras tecnoloxías XML como os espazos de nome, XSLT, XPath, e XML Schema.&lt;br /&gt;
&lt;br /&gt;
O uso de XQuery está amplamente estendido. Algunhas aplicacións concretas desta tecnoloxía son as seguintes:&lt;br /&gt;
*Extracción de información para usar nos [[Transmisi%C3%B3n_de_informaci%C3%B3n_mediante_linguaxes_de_marcas servizos| servizos web]].&lt;br /&gt;
*Xeración de informes, en especial, extractos de documentos a partir de orixinais.&lt;br /&gt;
*Transformación de XML en XHTML, conxuntamente con XSLT.&lt;br /&gt;
*Busca de información de interese nos documentos web.&lt;br /&gt;
=Selección de nodos=&lt;br /&gt;
XQuery emprega &amp;#039;&amp;#039;&amp;#039;funcións&amp;#039;&amp;#039;&amp;#039; para extraer datos dos documentos XML. Por exemplo, a función doc() úsase para abrir un ficheiro XML:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
doc(&amp;quot;books.xml&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
As &amp;#039;&amp;#039;&amp;#039;expresións XPath&amp;#039;&amp;#039;&amp;#039; úsanse para navegar polos elementos do documento XML. Por exemplo, o seguinte ficheiro contén datos sobre libros:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;bookstore&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;book category=&amp;quot;COOKING&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Everyday Italian&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;Giada De Laurentiis&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;year&amp;gt;2005&amp;lt;/year&amp;gt;&lt;br /&gt;
  &amp;lt;price&amp;gt;30.00&amp;lt;/price&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;book category=&amp;quot;CHILDREN&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;J K. Rowling&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;year&amp;gt;2005&amp;lt;/year&amp;gt;&lt;br /&gt;
  &amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;book category=&amp;quot;WEB&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;XQuery Kick Start&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;James McGovern&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;Per Bothner&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;Kurt Cagle&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;James Linn&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;Vaidyanathan Nagarajan&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;year&amp;gt;2003&amp;lt;/year&amp;gt;&lt;br /&gt;
  &amp;lt;price&amp;gt;49.99&amp;lt;/price&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;book category=&amp;quot;WEB&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;Erik T. Ray&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;year&amp;gt;2003&amp;lt;/year&amp;gt;&lt;br /&gt;
  &amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/bookstore&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A seguinte expresión XPath úsase para seleccionar todos os elementos title:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
doc(&amp;quot;books.xml&amp;quot;)/bookstore/book/title&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(/bookstore selecciona o elemento bookstore; /book selecciona todos os elementos book fillos do elemento bookstore e /title selecciona todos os elementos title fillos de cada elemento book)&lt;br /&gt;
&lt;br /&gt;
A consulta anterior devolverá o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Everyday Italian&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;XQuery Kick Start&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
XQuery usa &amp;#039;&amp;#039;&amp;#039;predicados&amp;#039;&amp;#039;&amp;#039; para limitar os resultados da consulta. No seguinte exemplo selecciónanse todos os elementos book baixo o elemento bookstore que teñen un prezo menor que 30:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
doc(&amp;quot;books.xml&amp;quot;)/bookstore/book[price&amp;lt;30]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
O resultado da consulta XQuery anterior será o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;book category=&amp;quot;CHILDREN&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;author&amp;gt;J K. Rowling&amp;lt;/author&amp;gt;&lt;br /&gt;
  &amp;lt;year&amp;gt;2005&amp;lt;/year&amp;gt;&lt;br /&gt;
  &amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Expresións FLWOR=&lt;br /&gt;
Tamén se poden seleccionar nodos mediante expresións FLWOR. Por exemplo, a seguinte expresión XPath selecciona todos os elementos title baixo os elementos book que están baixo o elemento bookstore e que teñen un prezo maior que 30:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
doc(&amp;quot;books.xml&amp;quot;)/bookstore/book[price&amp;gt;30]/title&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A seguinte expresión FLWOR fará exactamente o mesmo que a expresión XPath anterior:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book&lt;br /&gt;
where $x/price&amp;gt;30&lt;br /&gt;
return $x/title&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
O resultado será:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;XQuery Kick Start&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
As expresións FLWOR son máis potentes que as expresións XPath. Por exemplo, podemos ordenar o resultado:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book&lt;br /&gt;
where $x/price&amp;gt;30&lt;br /&gt;
order by $x/title&lt;br /&gt;
return $x/title&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
FLWOR é o acrónimo de FLWOR &amp;quot;For, Let, Where, Order by, Return&amp;quot;:&lt;br /&gt;
*A cláusula &amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; permite gardar todos os elemento book baixo o elemento bookstore nunha variable chamada $x.&lt;br /&gt;
*A cláusula &amp;#039;&amp;#039;&amp;#039;where&amp;#039;&amp;#039;&amp;#039; selecciona só os elementos book cun elemento prezo maior que 30.&lt;br /&gt;
*A cláusula &amp;#039;&amp;#039;&amp;#039;order by&amp;#039;&amp;#039;&amp;#039; especifica como se ten que ordenar o resultado. Neste caso ordenarase polo elemento title.&lt;br /&gt;
*A cláusula &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039; especifica que se ten que devolver. Neste caso o resultado será o elemento title.&lt;br /&gt;
&lt;br /&gt;
O resultado da expresión XQuery anterior será:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;XQuery Kick Start&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==For==&lt;br /&gt;
A cláusula &amp;#039;&amp;#039;&amp;#039;for&amp;#039;&amp;#039;&amp;#039; permite almacenar nunha variable cada elemento devolto pola expresión &amp;#039;&amp;#039;&amp;#039;in&amp;#039;&amp;#039;&amp;#039;. É unha estrutura de programación repetitiva ou iterativa. Pode haber múltiples cláusulas for na mesma expresión FLWOR.&lt;br /&gt;
&lt;br /&gt;
Para iterar un número específico de veces hai que usar a palabra reservada to:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x in (1 to 5)&lt;br /&gt;
return &amp;lt;test&amp;gt;{$x}&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
O resultado será o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;1&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;2&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;3&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;4&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;5&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A palabra reservada &amp;#039;&amp;#039;&amp;#039;at&amp;#039;&amp;#039;&amp;#039; úsase para almacenar o número de iteración:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x at $i in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book/title&lt;br /&gt;
return &amp;lt;book&amp;gt;{$i}. {data($x)}&amp;lt;/book&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O resultado:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;book&amp;gt;1. Everyday Italian&amp;lt;/book&amp;gt;&lt;br /&gt;
&amp;lt;book&amp;gt;2. Harry Potter&amp;lt;/book&amp;gt;&lt;br /&gt;
&amp;lt;book&amp;gt;3. XQuery Kick Start&amp;lt;/book&amp;gt;&lt;br /&gt;
&amp;lt;book&amp;gt;4. Learning XML&amp;lt;/book&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tamén está permitido máis dunha expresión in na cláusula for. Neste caso úsanse comas para separar cada unha:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x in (10,20), $y in (100,200)&lt;br /&gt;
return &amp;lt;test&amp;gt;x={$x} and y={$y}&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
O resultado:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;x=10 and y=100&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;x=10 and y=200&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;x=20 and y=100&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;x=20 and y=200&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Let==&lt;br /&gt;
A cláusula &amp;#039;&amp;#039;&amp;#039;let&amp;#039;&amp;#039;&amp;#039; permite declarar variables e evita repetir a mesma expresión varias veces.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
let $x := (1 to 5)&lt;br /&gt;
return &amp;lt;test&amp;gt;{$x}&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
O resultado:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;test&amp;gt;1 2 3 4 5&amp;lt;/test&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Where==&lt;br /&gt;
A cláusula &amp;#039;&amp;#039;&amp;#039;where&amp;#039;&amp;#039;&amp;#039; úsase para especificar un ou máis criterios para o resultado:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
where $x/price&amp;gt;30 and $x/price&amp;lt;100&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Order by==&lt;br /&gt;
A cláusula &amp;#039;&amp;#039;&amp;#039;order by&amp;#039;&amp;#039;&amp;#039; úsase para especificar como se ordena o resultado. No seguinte exemplo ordenamos por categoría e título:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book&lt;br /&gt;
order by $x/@category, $x/title&lt;br /&gt;
return $x/title&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
O resultado:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Everyday Italian&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;XQuery Kick Start&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return==&lt;br /&gt;
A cláusula &amp;#039;&amp;#039;&amp;#039;return&amp;#039;&amp;#039;&amp;#039; especifica que é o que se quere devolver:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book&lt;br /&gt;
return $x/title&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
O resultado:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Everyday Italian&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;XQuery Kick Start&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=XQuery e HTML=&lt;br /&gt;
A seguinte expresión FLWOR de XQuery seleccionará todos os elementos title baixo elementos book que estean baixo elementos bookstore e devolverá os títulos ordenados alfabeticamente:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book/title&lt;br /&gt;
order by $x&lt;br /&gt;
return $x&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se quixéramos representalos mediante unha lista en HTML poderíamos engadir as etiquetas &amp;amp;lt;ul&amp;gt; e  &amp;amp;lt;li&amp;gt; tal e como se amosa no seguinte exemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book/title&lt;br /&gt;
order by $x&lt;br /&gt;
return &amp;lt;li&amp;gt;{$x}&amp;lt;/li&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
O resultado será o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Everyday Italian&amp;lt;/title&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;XQuery Kick Start&amp;lt;/title&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se o que queremos é eliminar o elemento title e mostrar só os datos faríamos o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book/title&lt;br /&gt;
order by $x&lt;br /&gt;
return &amp;lt;li&amp;gt;{data($x)}&amp;lt;/li&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
E o resultado será unha lista HTML:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Everyday Italian&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Harry Potter&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Learning XML&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;XQuery Kick Start&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Engadir atributos ao HTML==&lt;br /&gt;
Tamén é posible engadir atributos de elementos XML como atributos nunha lista HTML. No seguinte exemplo, úsase o atributo category como un atributo class da lista HTML:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Bookstore&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book&lt;br /&gt;
order by $x/title&lt;br /&gt;
return &amp;lt;li class=&amp;quot;{data($x/@category)}&amp;quot;&amp;gt;{data($x/title)}&amp;lt;/li&amp;gt;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
O resultado será o seguinte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Bookstore&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;COOKING&amp;quot;&amp;gt;Everyday Italian&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;CHILDREN&amp;quot;&amp;gt;Harry Potter&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;WEB&amp;quot;&amp;gt;Learning XML&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;WEB&amp;quot;&amp;gt;XQuery Kick Start&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Terminoloxía=&lt;br /&gt;
XQuery usa a [[Linguaxe_de_navegaci%C3%B3n_no_documento_XML#Nodos_XPath|terminoloxía de XPath]]. Por tanto, os conceptos de nodo fillo, ancestros, etc. son iguais que en XPath.&lt;br /&gt;
&lt;br /&gt;
=Sintaxe=&lt;br /&gt;
==Regras sintácticas de XQuery==&lt;br /&gt;
As regras básicas de sintaxe son as seguintes:&lt;br /&gt;
*Distínguese entre maiúsculas de minúsculas.&lt;br /&gt;
*Os elementos, atributos e variables deben ser nomes XML válidos.&lt;br /&gt;
*As cadeas poden ir entre comiñas simples ou dobres.&lt;br /&gt;
*As variables están definidas mediante o símbolo $ seguida polo nome, ie: $bookstore&lt;br /&gt;
*Os comentarios están delimitados por (: e :), por exemplo: (: Comentario XQuery :)&lt;br /&gt;
&lt;br /&gt;
==Expresións condicionais==&lt;br /&gt;
Pódense usar expresións condicionais do tipo &amp;quot;If-Then-Else&amp;quot;. Por exemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
for $x in doc(&amp;quot;books.xml&amp;quot;)/bookstore/book&lt;br /&gt;
return if ($x/@category=&amp;quot;CHILDREN&amp;quot;)&lt;br /&gt;
then &amp;lt;child&amp;gt;{data($x/title)}&amp;lt;/child&amp;gt;&lt;br /&gt;
else &amp;lt;adult&amp;gt;{data($x/title)}&amp;lt;/adult&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
É obrigatorio usar parénteses na expresión if. A palabra reservada else é obrigatoria pero pode estar baleira. Isto indicarémolo mediante else ().&lt;br /&gt;
&lt;br /&gt;
O resultado do exemplo de enriba será:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;adult&amp;gt;Everyday Italian&amp;lt;/adult&amp;gt;&lt;br /&gt;
&amp;lt;child&amp;gt;Harry Potter&amp;lt;/child&amp;gt;&lt;br /&gt;
&amp;lt;adult&amp;gt;Learning XML&amp;lt;/adult&amp;gt;&lt;br /&gt;
&amp;lt;adult&amp;gt;XQuery Kick Start&amp;lt;/adult&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Comparacións==&lt;br /&gt;
Hai dúas formas de comparar valores:&lt;br /&gt;
#&amp;#039;&amp;#039;&amp;#039;Comparacións xerais&amp;#039;&amp;#039;&amp;#039;: =, !=, &amp;lt;, &amp;lt;=, &amp;gt;, &amp;gt;=&lt;br /&gt;
#&amp;#039;&amp;#039;&amp;#039;Comparacións de valor&amp;#039;&amp;#039;&amp;#039;: eq, ne, lt, le, gt, ge&lt;br /&gt;
&lt;br /&gt;
Vexamos a diferenza cun exemplo. A seguinte expresión devolve verdadeiro se algún atributo q ten un valor maior que 10:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
$bookstore//book/@q &amp;gt; 10&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A seguinte expresión devolve verdadeiro se hai só un atributo q devolto pola expresión XPath e o seu valor e maior que 10. Se se devolve máis dun atributo q prodúcese un erro:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
$bookstore//book/@q gt 10&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
=Funcións=&lt;br /&gt;
XQuery 1.0, XPath 2.0, e XSLT 2.0 comparten a mesma biblioteca de funcións predefinidas (máis de 100). Hai funcións para manexar cadeas, números, datas e tempo, manipulación de nodos e secuencias, valores boolean, etc. Tamén é posible definir funcións propias que se axusten ás nosas necesidades.&lt;br /&gt;
&lt;br /&gt;
O URI do espazo de nomes das funcións XQuery é http://www.w3.org/2005/02/xpath-functions. O prefixo por defecto é &amp;#039;&amp;#039;&amp;#039;fn:&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Para chamar a unha función úsase o prefixo fn: por exemplo, fn:string(). Con todo, xa que fn: é o prefixo por defecto do espazo de nomes os nomes das funcións non precisan o prefixo cando se chaman..&lt;br /&gt;
&lt;br /&gt;
Pódese [http://www.w3schools.com/xpath/xpath_functions.asp consultar a  referencia] completa das funcións predefinidas de XQuery.&lt;br /&gt;
&lt;br /&gt;
Vexamos algúns exemplos:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exemplo 1:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;name&amp;gt;{uppercase($booktitle)}&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exemplo 2:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
doc(&amp;quot;books.xml&amp;quot;)/bookstore/book[substring(title,1,5)=&amp;#039;Harry&amp;#039;]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Exemplo 3:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
let $name := (substring($booktitle,1,4))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
==Funcións definidas polo usuario==&lt;br /&gt;
Para definir unha función empregamos a seguinte sintaxe:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
declare function prefix:function_name($parameter AS datatype)&lt;br /&gt;
AS returnDatatype&lt;br /&gt;
{&lt;br /&gt;
 ...código da función...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Cando se declara unha función hai que ter en conta o seguinte:&lt;br /&gt;
*Hai que usar a palabra reservada &amp;#039;&amp;#039;&amp;#039;declare&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
*O nome da función debe ter un prefixo.&lt;br /&gt;
*Os tipos de datos dos parámetros son os mesmos que os definidos nos esquemas XML.&lt;br /&gt;
*O corpo da función debe ir entre chaves.&lt;br /&gt;
&lt;br /&gt;
Vexamos un exemplo:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?)&lt;br /&gt;
AS xs:decimal?&lt;br /&gt;
{&lt;br /&gt;
let $disc := ($p * $d) div 100&lt;br /&gt;
return ($p - $disc)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Pódese chamar á función anterior do seguinte xeito:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;minPrice&amp;gt;{local:minPrice($book/price,$book/discount)}&amp;lt;/minPrice&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejemplos de ficheros XML ==&lt;br /&gt;
&lt;br /&gt;
[[Archivo:bib.xml]]&lt;br /&gt;
&lt;br /&gt;
=Referencias=&lt;br /&gt;
Os contidos deste apartado están baseados no material sobre XQuery do sitio web http://www.w3schools.com.&lt;/div&gt;</summary>
		<author><name>Veiga</name></author>
	</entry>
</feed>