我刚刚开始在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>将所有标题放在一行中。
因为我之前已经通过简单地返回一个变量成功地返回了一个标题列表,所以我尝试了一个带有for循环的嵌套返回语句,就像wikibooks上建议的那样。此解决方案还包含显式定义的<title>-tags。
我发现一个人在here上有同样的问题。
这里的答案并不管用。当我添加一个命名空间时,我的程序完全停止了输出。我也更希望有一些非杂乱无章的解决方案(似乎有,因为每个人似乎从一开始就得到了完美的输出)。
问题似乎在于将XML和Xquery与花括号混合使用。
发布于 2012-04-12 05:36:26
这不是查询的问题,而是设置用于控制输出序列化的标志和选项的问题。
您可能想要的是set the XQilla format-pretty-print flag to true,或者(对于XQuery 3.0)在您的prolog中使用the indent XQuery serialization option,如下所示:
declare option output:indent "yes";如果这是针对命令行使用的,并且您还没有可用的XQuery 3.0支持,那么您也可以使用其他漂亮的打印工具(如果在XQilla中没有一种明确的方法来设置序列化选项)。例如,通过管道将输出输出到xmlstarlet fo将在第二次遍历中打印出来。
https://stackoverflow.com/questions/10108093
复制相似问题