Helper to turn on indentation for a XML Transformer that works correctly for both Saxon and Xalan. - Java XML

Java examples for XML:XML Transform

Description

Helper to turn on indentation for a XML Transformer that works correctly for both Saxon and Xalan.

Demo Code

/* Copyright (c) 2012-2013, University of Edinburgh.
 * All rights reserved./*from ww w . j a va2  s. c o m*/
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * * Redistributions of source code must retain the above copyright notice, this
 *   list of conditions and the following disclaimer.
 *
 * * Redistributions in binary form must reproduce the above copyright notice, this
 *   list of conditions and the following disclaimer in the documentation and/or
 *   other materials provided with the distribution.
 *
 * * Neither the name of the University of Edinburgh nor the names of its
 *   contributors may be used to endorse or promote products derived from this
 *   software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * This software is derived from (and contains code from) QTItools and MathAssessEngine.
 * QTItools is (c) 2008, University of Southampton.
 * MathAssessEngine is (c) 2010, University of Edinburgh.
 */
//package com.java2s;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;

public class Main {
    /**
     * Helper to turn on indentation for a {@link Transformer} that works correctly for
     * both Saxon and Xalan.
     *
     * @param transformer {@link Transformer} to configure
     * @param indent required indentation, where 0 or more provides indentation and negative
     *   numbers turns indentation off.
     */
    public static void setIndentation(final Transformer transformer,
            final int indent) {
        if (indent >= 0) {
            final String indentString = String.valueOf(indent);
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");

            /* Set custom properties for both Saxon and Xalan at once.
             * This appears safe to do without having to check the underlying processor.
             */
            transformer.setOutputProperty(
                    "{http://xml.apache.org/xslt}indent-amount",
                    indentString);
            transformer.setOutputProperty(
                    "{http://saxon.sf.net/}indent-spaces", indentString);
        } else {
            transformer.setOutputProperty(OutputKeys.INDENT, "no");
        }
    }
}

Related Tutorials