2012-02-07 27 views
11

¿Es posible poner cada resultado de XQuery en una nueva línea? Pensé que recordaba que había un atributo para establecer al principio del documento, pero no recuerdo. :/Ponga cada resultado de XQuery en una nueva línea

tengo este archivo .xq:

(: declare default element namespace "http://www.w3.org/2001/XMLSchema"; :) 
for $x at $i in doc("zoo.xml")//animal 
return <li>{$i}. {$x/name/text()}</li> 

consigo resultados correctos, pero todos ellos están en una sola línea, cuando lo que realmente quiero algo como:

<li>1. Zeus</li> 
<li>2. Fred</li> 
... 

Es esto posible? ¡Gracias de antemano por sus respuestas! :)

Respuesta

19

... se puede añadir una cadena de nueva línea como la segunda parte de la cláusula de retorno:

(: declare default element namespace "http://www.w3.org/2001/XMLSchema"; :) 
for $x at $i in doc("zoo.xml")//animal 
return (<li>{$i}. {$x/name/text()}</li>, '&#xa;') 

La manera cómo los resultados son serializados también depende del procesador XQuery específica.

4

El motor XQuery que está utilizando podría tener la opción de aplicar sangría a la salida. P.ej. en Zorba, opción de guión funciona así:

zorba -i -q 'for $x in 1 to 10 return <a/>' 
<?xml version="1.0" encoding="UTF-8"?> 
<a/> 
<a/> 
<a/> 
<a/> 
<a/> 
<a/> 
<a/> 
<a/> 
<a/> 
<a/> 
5

XQuery 3.0 proporciona una nueva opción de serialización item-separator, que puede especificarse en el prólogo consulta:

declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization"; 
declare option output:item-separator "&#xa;"; 

for $x at $i in doc("zoo.xml")//animal 
return <li>{$i}. {$x/name/text()}</li> 
3

La especificación XQuery 3.1 Serialization ofrece el nuevo "adaptativo" modo de serialización, que genera cada resultado de XQuery en una nueva línea.

Algunos procesadores XQuery usan este modo como nuevo valor predeterminado.

Cuestiones relacionadas