Поместите каждый результат XQuery в новую строку - PullRequest
12 голосов
/ 07 февраля 2012

Можно ли поместить каждый результат XQuery на новую строку?Я думал, что вспомнил, что в начале документа был установлен атрибут, но не могу вспомнить.: /

У меня есть этот файл .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> 

Я получаю правильные результаты, но все они в одной строке, когда я действительно хочу что-то вроде:

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

Возможно ли это?Заранее спасибо за ваши ответы!:)

Ответы [ 4 ]

20 голосов
/ 07 февраля 2012

... вы можете добавить строку новой строки в качестве второй части предложения возврата:

(: 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;')

Способ сериализации результатов также зависит от конкретного процессора XQuery.

6 голосов
/ 14 августа 2013

XQuery 3.0 предоставляет новую опцию сериализации item-separator, которую можно указать в прологе запроса:

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> 
4 голосов
/ 08 февраля 2012

Механизм XQuery, который вы используете, может иметь возможность сделать отступ для вывода.Например, в Zorba опция отступа работает следующим образом:

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/>
3 голосов
/ 06 марта 2015

Сериализация XQuery 3.1 предоставляет новый «адаптивный» режим сериализации, который выводит каждый результат XQuery на новую строку.

Некоторые процессоры XQuery используют этот режим в качестве нового по умолчанию.

...