是否可以将每个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>
...
这可能吗?提前感谢您的回答! :)
答案 0 :(得分:20)
...您可以添加换行符字符串作为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处理器。
答案 1 :(得分:6)
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>
答案 2 :(得分:4)
您正在使用的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 :(得分:3)
XQuery 3.1 Serialization规范提供了新的&#34;自适应&#34;序列化模式,它在一个新行上输出每个XQuery结果。
某些XQuery处理器将此模式用作新默认值。