在XQuery中有沒有辦法去除XML輸出的縮進?如何在XQuery中抑制XML輸出的縮進
例如,說我有一個XQuery的;
<foo><bar/></foo>
產生一個XML結果文件;
<foo>
<bar/>
</foo>
如何刪除縮進以便輸出文檔看起來像這樣;
<foo>
<bar/>
</foo>
理想情況下,我想要的東西,我可以控制從XQuery本身,例如。在查詢開始的聲明中。我已經嘗試在XQuery中放置這樣的東西;
declare namespace saxon="http://saxon.sf.net/";
declare option saxon:output "indent=no";
以上的幾種其他變體取決於Google拋出的文檔,但XML輸出永遠不會改變。
我使用Saxon並通過Java XQJ擴展調用它;
import net.sf.saxon.xqj.SaxonXQDataSource;
難道我不得不在Java中做Xquery嗎?
更新
這是我用來調用撒克遜的代碼。我很抱歉,這裏有很多,但我不確定什麼是相關的;
private String runXQuery(String query, HttpServletRequest request, String payload)
throws XQException {
XQDataSource ds = new SaxonXQDataSource();
XQConnection conn = ds.getConnection();
XQPreparedExpression exp = conn.prepareExpression(query);
bindObject(exp, "HTTP_METHOD", request.getMethod());
bindObject(exp, "HTTP_URI", request.getRequestURI());
bindObject(exp, "HTTP_QUERY", request.getQueryString());
bindObject(exp, "HTTP_COOKIES", request.getHeader("Cookie"));
bindObject(exp, "HTTP_PAYLOAD", payload);
XQResultSequence result = exp.executeQuery(); // Run the XQuery.
StringBuffer buffer = new StringBuffer();
while (result.next()) {
buffer.append(result.getItemAsString(null));
buffer.append(System.getProperty("line.separator"));
}
return buffer.toString();
}
以上就是這樣調用的;
public void handle(String target, Request baseRequest, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
baseRequest.setHandled(true);
File file = null;
String out = "";
File inbound = new File(root, target); // File or folder
file = checkFile(inbound); // File.
String xquery = loadFile(file);
String payload = getPayload(request.getReader());
out = runXQuery(xquery, request, payload);
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println(out);
}
據我知道,我只是輸出任何來自executeQuery()
爲純文本回來。
該程序作爲一種XQuery服務器工作。它在特定的端口上偵聽來自HTTP客戶端的針對特定XQuery文件的請求。然後加載該文件並將其傳遞給Saxon運行,然後將Saxon的結果輸出回HTTP客戶端。
有這樣做的跛腳的方式。只需將response.getWriter()包裝在自己的作者中,即可在寫入目標作者時跳過\ t。是的,我知道這不是一個正確的方法 - 但它是quickfix – SirVaulterScoff