将每个XQuery结果放在一个新行上

Chr*_* V. 13 xml formatting 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> 
Run Code Online (Sandbox Code Playgroud)

我得到了正确的结果,但是当我真的想要这样的东西时,所有这些都在一条线上:

<li>1. Zeus</li>
<li>2. Fred</li>
...
Run Code Online (Sandbox Code Playgroud)

这可能吗?提前感谢您的回答!:)

Chr*_*rün 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>, '&#xa;')
Run Code Online (Sandbox Code Playgroud)

结果序列化的方式也取决于特定的XQuery处理器.


Chr*_*rün 6

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> 
Run Code Online (Sandbox Code Playgroud)


Chr*_*rün 5

所述的XQuery 3.1序列化规范提供新的“自适应”模式系列化,其输出在新的一行的每个XQuery的结果。

一些 XQuery 处理器使用这种模式作为新的默认模式。