当我运行 galax-run a.xq 时,a.xq 是
<html>
<body>
<ul>
{
for $x in doc("books.xml")/bookstore/book
return <li>{data($x/title)}</li>
}
</ul>
</body>
</html>
输出全部在一行上。如何保持 a.xq 中的格式(新行和其他空格)?
当我运行 galax-run a.xq 时,a.xq 是
<html>
<body>
<ul>
{
for $x in doc("books.xml")/bookstore/book
return <li>{data($x/title)}</li>
}
</ul>
</body>
</html>
输出全部在一行上。如何保持 a.xq 中的格式(新行和其他空格)?
结果 xmllint --format a.xml 将打印一个格式整齐的 a.xml 版本。这就是我所需要的。您还可以通过管道传输到 xmllint,如下所示:
galax-run a.xq | xmllint --format -
您的问题是关于“边界空白”,它被剥离或保留,具有实现定义的默认行为。但是,您可以通过使用边界空间声明来覆盖默认值。为了保留边界空白,请使用
declare boundary-space preserve;
在查询序言中。有关详细信息,请参阅http://www.w3.org/TR/xquery/#id-boundary-space-decls。
请注意,这决定了构造节点的布局。它们的外观也可能受到序列化设置的影响。序列化程序可以选择重新引入边界空间,即使它在构建时被剥离。您必须查阅特定于实现的文档才能找到答案。