我需要通过一个支持XSLT2.0的转换器生成一个缩进良好的XML文件。我发现Saxon支持XSTL2.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);它实际上工作得很好,但是如果我切换到Saxon:
TransformerFactory transformerFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl", null);那么缩进就不再起作用了。我还阅读了文档,似乎必须使用saxon:indent-spaces属性,但它似乎只在Saxon的PE版本中可用。但是,它说默认值是3,所以默认情况下应该缩进。
不管怎样,您知道用Saxon (免费版本)生成缩进良好的XML的方法吗?
谢谢
发布于 2014-02-27 22:15:26
您的代码适合我;为了进行研究,我们需要查看输入和输出的完整细节,以及您正在使用的Saxon版本等。
顺便说一句,在Saxon中使用DOMSource比使用StreamSource或SAXSource慢十倍。除非出于其他令人信服的原因需要构建DOM,否则不要这么做。
https://stackoverflow.com/questions/22066228
复制相似问题