1

当我运行 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 中的格式(新行和其他空格)?

4

2 回答 2

1

结果 xmllint --format a.xml 将打印一个格式整齐的 a.xml 版本。这就是我所需要的。您还可以通过管道传输到 xmllint,如下所示:

galax-run a.xq | xmllint --format -
于 2012-11-26T13:50:25.243 回答
0

您的问题是关于“边界空白”,它被剥离或保留,具有实现定义的默认行为。但是,您可以通过使用边界空间声明来覆盖默认值。为了保留边界空白,请使用

declare boundary-space preserve;

在查询序言中。有关详细信息,请参阅http://www.w3.org/TR/xquery/#id-boundary-space-decls

请注意,这决定了构造节点的布局。它们的外观也可能受到序列化设置的影响。序列化程序可以选择重新引入边界空间,即使它在构建时被剥离。您必须查阅特定于实现的文档才能找到答案。

于 2012-11-26T08:41:09.930 回答