當運行GALAX運行a.xq,其中a.xq是XQuery中HTML輸出保留空白
<html>
<body>
<ul>
{
for $x in doc("books.xml")/bookstore/book
return <li>{data($x/title)}</li>
}
</ul>
</body>
</html>
輸出是所有在一行上。如何在a.xq中保留格式(新行和其他空格)?
當運行GALAX運行a.xq,其中a.xq是XQuery中HTML輸出保留空白
<html>
<body>
<ul>
{
for $x in doc("books.xml")/bookstore/book
return <li>{data($x/title)}</li>
}
</ul>
</body>
</html>
輸出是所有在一行上。如何在a.xq中保留格式(新行和其他空格)?
你的問題是關於「Boundary Whitespace」,它是剝離或保留,與實現定義的默認行爲。但是,您可以通過使用邊界空間聲明來覆蓋默認值。爲保留邊界空白,請在查詢序言中使用
declare boundary-space preserve;
。詳情請參閱http://www.w3.org/TR/xquery/#id-boundary-space-decls。
請注意,這將控制構造節點的佈局。它們的外觀也可能受序列化設置的影響。串行器可以選擇重新引入邊界空間,即使它在施工時被剝離。你將不得不諮詢特定於實現的文檔以找出答案。
結果xmllint --format a.xml將打印a.xml格式完整的版本。這就是我所需要的。你也可以管道到xmllint,像這樣:
galax-run a.xq | xmllint --format -
這很大程度上取決於你的XQuery引擎。你在用哪個? –
我正在使用galax。我也嘗試了saxonb-xquery,它有更好的輸出。 –