【发布时间】:2014-03-30 17:56:11
【问题描述】:
我需要通过支持 XSLT 2.0 的转换器生成缩进良好的 XML 文件。 我发现 Saxon 支持 XSTL 2.0,但我不知道如何生成具有良好缩进的 XML。
使用标准的 JAVA 转换器,我使用了以下代码:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("myOutput.xml"));
transformer.transform(source, result);
实际上效果很好,但如果我切换到撒克逊人:
TransformerFactory transformerFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null);
然后缩进不再起作用。 我还阅读了文档,似乎我必须使用 saxon:indent-spaces 属性,但它似乎只在 Saxon 的 PE 版本中可用。但是它说默认值是3,所以它应该默认缩进。
无论如何,您知道用 Saxon(免费版)生成缩进良好的 XML 的方法吗?
谢谢
【问题讨论】:
-
你能举一个你正在处理的输入和输出 XML 的例子吗?它是否有任何开头的缩进,或任何带有前导或尾随空格的文本节点?