我刚刚开始在Xqilla上使用Xquery。
我希望我的结果会以正确的缩进和换行符返回。
我有一个名为$ duplicates的导演列表,我想在返回声明中从这些导演中获取所有电影片段。
我的回复声明:
for $duplicate in $duplicates
return
<movie director="{$duplicate}">
{$result/videos/video/title[../director=$duplicate]}</movie>
我想要格式化(有点像):
<movie director="Coppola">
<title>The Godfather</title>
<title>The Godfather pt. 2</title>
<title>Apocalypse Now</title></movie>
让孩子们正确缩进,每个都在一个新行上。
我得到的是:
<movie director="Coppola">
<title>The Godfather</title><title>The Godfather pt. 2</title><title>Apocalypse Now</title></movie>
所有标题都在一行中。
因为我之前只是返回一个变量就成功返回了一个标题列表
我按照wikibooks的建议尝试了一个带有for循环的嵌套return语句。此解决方案还包含明确定义的<title>
- 标记。
我在SO上找到了一个有同样问题here的人。
那里的答案没有用。当我添加一个命名空间时,我的程序完全停止输出。如果有一些非kludge解决方案(似乎是因为每个人似乎从一开始就获得了完美的输出),我也更喜欢它。
问题似乎是将XML和Xquery与大括号用法混合在一起。
答案 0 :(得分:2)
这不是查询问题,而是设置为控制输出序列化的标志和选项。
您可能想要的是set the XQilla format-pretty-print
flag to true,或者(对于XQuery 3.0)在您的序言中使用the indent
XQuery serialization option,如下所示:
declare option output:indent "yes";
如果这是用于命令行的,并且您还没有XQuery 3.0支持,那么您也可以使用不同的漂亮打印工具(如果在XQilla中没有明确的方法来设置序列化选项) )。例如,输出到xmlstarlet fo
的管道将在第二遍中打印出来。