Поместите каждый результат XQuery на новую строку
Можно ли поместить каждый результат 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>
...
Возможно ли это? Заранее благодарю за ваши ответы!:)
Ответы
Ответ 1
... вы можете добавить строку новой строки в качестве второй части предложения return:
(: 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>, '
')
Способ сериализации результатов также зависит от конкретного процессора XQuery.
Ответ 2
XQuery 3.0 предоставляет новую возможность сериализации item-separator
, которая может быть указана в прологе запроса:
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:item-separator "
";
for $x at $i in doc("zoo.xml")//animal
return <li>{$i}. {$x/name/text()}</li>
Ответ 3
Используемый вами движок 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/>
Ответ 4
спецификация XQuery 3.1 Serialization предоставляет новый "адаптивный" режим сериализации, который выводит каждый результат XQuery на новую строку.
Некоторые процессоры XQuery используют этот режим как новый по умолчанию.