2012-11-25 101 views
1

當運行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中保留格式(新行和其他空格)?

+0

這很大程度上取決於你的XQuery引擎。你在用哪個? –

+0

我正在使用galax。我也嘗試了saxonb-xquery,它有更好的輸出。 –

回答

0

你的問題是關於「Boundary Whitespace」,它是剝離或保留,與實現定義的默認行爲。但是,您可以通過使用邊界空間聲明來覆蓋默認值。爲保留邊界空白,請在查詢序言中使用

declare boundary-space preserve; 

。詳情請參閱http://www.w3.org/TR/xquery/#id-boundary-space-decls

請注意,這將控制構造節點的佈局。它們的外觀也可能受序列化設置的影響。串行器可以選擇重新引入邊界空間,即使它在施工時被剝離。你將不得不諮詢特定於實現的文檔以找出答案。

1

結果xmllint --format a.xml將打印a.xml格式完整的版本。這就是我所需要的。你也可以管道到xmllint,像這樣:

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