b'\n_START_ARTICLE_\nXQuery\n_START_PARAGRAPH_\nXQuery es un lenguaje de consulta dise\xc3\xb1ado para colecciones de datos XML. Es sem\xc3\xa1nticamente similar a SQL, aunque incluye algunas capacidades de programaci\xc3\xb3n._NEWLINE_XQuery 1.0 fue desarrollado por el grupo de trabajo de Consulta XML del W3C. El trabajo fue estrechamente coordinado con el desarrollo de XSLT 2.0 por el Grupo de trabajo XSL; los dos grupos compartieron la responsabilidad del XPath 2.0, que es un subconjunto de XQuery 1.0. XQuery 1.0 es una Recomendaci\xc3\xb3n del W3C desde el 23 de enero de 2007.\n_START_SECTION_\nCaracter\xc3\xadsticas\n_START_PARAGRAPH_\nXQuery proporciona los medios para extraer y manipular informaci\xc3\xb3n de documentos XML, o de cualquier fuente de datos que pueda ser representada mediante XML como, por ejemplo, bases de datos relacionales o documentos ofim\xc3\xa1ticos. _NEWLINE_XQuery utiliza expresiones XPath para acceder a determinadas partes del documento XML. A\xc3\xb1ade, adem\xc3\xa1s, expresiones similares a las usadas en SQL, conocidas como expresiones FLWOR. Las expresiones FLWOR toman su nombre de los 5 tipos de sentencias de las que pueden estar compuestas: FOR, LET, WHERE, ORDER BY y RETURN._NEWLINE_Tambi\xc3\xa9n incluye la posibilidad de construir nuevos documentos XML a partir de los resultados de la consulta. Se puede usar una sintaxis similar a XML si la estructura (elementos y atributos) es conocida con antelaci\xc3\xb3n, o usar expresiones de construcci\xc3\xb3n din\xc3\xa1mica de nodos en caso contrario. Todos estos constructores se definen como expresiones dentro del lenguaje, y se pueden anidar arbitrariamente._NEWLINE_El lenguaje se basa en el modelo en \xc3\xa1rbol de la informaci\xc3\xb3n contenida en el documento XML, que consiste en siete tipos distintos de nodo: elementos, atributos, nodos de texto, comentarios, instrucciones de procesamiento, espacios de nombres y nodos de documentos._NEWLINE_El sistema de tipos usado por el lenguaje considera todos los valores como secuencias, asumi\xc3\xa9ndose un valor simple como una secuencia de un solo elemento. Los elementos de una secuencia pueden ser valores at\xc3\xb3micos o nodos. Los valores at\xc3\xb3micos pueden ser n\xc3\xbameros enteros, cadenas de texto, valores booleanos, etc. La lista completa de los tipos disponibles est\xc3\xa1 basada en las primitivas definidas en XML Schema._NEWLINE_XQuery 1.0 no incluye capacidad de actualizar los documentos XML. Tampoco puede realizar b\xc3\xbasquedas textuales. Estas dos capacidades est\xc3\xa1n siendo objeto de desarrollo para su posible incorporaci\xc3\xb3n en la siguiente versi\xc3\xb3n del lenguaje.\n_START_SECTION_\nEjemplos\n_START_PARAGRAPH_\nEl siguiente ejemplo de c\xc3\xb3digo XQuery lista los personajes que aparecen en cada acto del Hamlet de Shakespeare, obtenidas a partir del documento hamlet.xml._NEWLINE_<html><head/><body>_NEWLINE_{_NEWLINE_  for $act in doc("hamlet.xml")//ACT_NEWLINE_  let $speakers\xc2\xa0:= distinct-values($act//SPEAKER)_NEWLINE_  return_NEWLINE_    <span>_NEWLINE_      <h1>{ $act/TITLE/text() }</h1>_NEWLINE_      <ul>_NEWLINE_      {_NEWLINE_        for $speaker in $speakers_NEWLINE_        return <li>{ $speaker }</li>_NEWLINE_      }_NEWLINE_      </ul>_NEWLINE_    </span>_NEWLINE_}_NEWLINE_</body></html>_NEWLINE_XQuery es un lenguaje de programaci\xc3\xb3n funcional que consta en su totalidad de expresiones. No hay sentencias, aun cuando algunas de las palabras claves utilizadas puede sugerir un comportamiento similar al de una sentencia. Para ejecutar una funci\xc3\xb3n, la expresi\xc3\xb3n dentro del cuerpo de la misma se eval\xc3\xbaa y se retorna el resultado obtenido. Por ejemplo, para escribir una funci\xc3\xb3n que duplique el valor suministrado como argumento, escribir\xc3\xadamos:_NEWLINE_declare function local:doubler($x) { $x * 2 }_NEWLINE_Para escribir una consulta XQuery que retorne el texto "Hola, Mundo", escribimos la expresi\xc3\xb3n:_NEWLINE_"Hola, Mundo"'