[xsl] Wrong indentation with javax.xml.transform.Transformer

Subject: [xsl] Wrong indentation with javax.xml.transform.Transformer
From: Olivier Lefevre <lefevrol@xxxxxxxxx>
Date: Tue, 20 Sep 2011 13:20:59 +0200
Hi,

I am using javax.xml.transform.Transformer to pretty-print DOM
documents or fragments thereof, pulled with XPath. The relevant
code is:

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

It works fine for the root node, i.e., for a full document, but
if I try that on a node retrieved with XPath the indentation is
all messed up. For instance if I pull the location node from
this document:

<GeocodeResponse>
  <status>OK</status>
  <result>
    <geometry>
      <location>
        <lat>51.3398300</lat>
        <lng>12.3627600</lng>
      </location>
    </geometry>
  </result>
</GeocodeResponse>

using "//location" and print it I get

<location>
        <lat>51.3398300</lat>
        <lng>12.3627600</lng>
      </location>

Is this a known issue or am I doing something wrong? This is with
Java 1.6.0_27; I am unsure which exact version of the XML
libraries that implies.

Thanks,

-- O.L.

Current Thread