在XQuery HTML输出中保留空格

时间:2012-11-25 22:41:16

标签: html formatting xquery

当我运行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?

2 个答案:

答案 0 :(得分:1)

原来xmllint --format a.xml将打印一个整齐格式化的a.xml版本。这就是我所需要的。你也可以管道到xmllint,如下所示:

galax-run a.xq | xmllint --format -

答案 1 :(得分:0)

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

declare boundary-space preserve;

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

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