Java Transformer setOutputProperty()

时间:2018-05-10 14:46:43

标签: java xml apache xslt transformer

我目前正在使用以下代码来缩进XML:

transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");

这样可以很好地缩进代码,但我不确定http://xml.apache.org/xslt}indent-amount"正在做什么。 URL对于缩进至关重要。有人可以解释这个URL的作用以及它是如何工作的吗?

谢谢! :)

1 个答案:

答案 0 :(得分:1)

您正在覆盖indent-amount包中定义的默认属性org.apache.xml.serializer。这会启用缩进(因为默认值为0)。

  

XML,HTML和文本转换输出的输出属性在org.apache.xml.serializer的属性文件中定义   封装

     

您可以覆盖这些属性的默认值   样式表使用xsl:output元素的属性。您可以   覆盖Xalan特定的默认设置,如下所示:

     

在stylesheet元素中声明xalan名称空间   (XMLNS:的Xalan =" HTTP://xml.apache.org/xalan")。

     

使用您指定的命名空间前缀(例如," xalan")重新定义   样式表xsl:output元素中感兴趣的属性(for   例如,xalan:indent-amount =" 5")。以下样式表片段   声明xalan命名空间并将indent-amount设置为2:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xalan="http://xml.apache.org/xalan">

  <xsl:output method="xml" 
              encoding="UTF-8"
              indent="yes" 
              xalan:indent-amount="2"/>

您可以在Configuring serialization output properties一章的http://xml.apache.org/xalan-j/usagepatterns.html找到更多信息。

假设您的序列化程序是特定于xalan的