/*
 * Copyright (c) 2000, 2005, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package javax.xml.transform;

import java.util.Properties;




An object that implements this interface is the runtime representation of processed transformation instructions.

Templates must be threadsafe for a given instance over multiple threads running concurrently, and may be used multiple times in a given session.

Since:1.4
/** * An object that implements this interface is the runtime representation of processed * transformation instructions. * * <p>Templates must be threadsafe for a given instance * over multiple threads running concurrently, and may * be used multiple times in a given session.</p> * * @since 1.4 */
public interface Templates {
Create a new transformation context for this Templates object.
Throws:
Returns:A valid non-null instance of a Transformer.
/** * Create a new transformation context for this Templates object. * * @return A valid non-null instance of a Transformer. * * @throws TransformerConfigurationException if a Transformer can not be created. */
Transformer newTransformer() throws TransformerConfigurationException;
Get the properties corresponding to the effective xsl:output element. The object returned will be a clone of the internal values. Accordingly, it can be mutated without mutating the Templates object, and then handed in to Transformer.setOutputProperties.

The properties returned should contain properties set by the stylesheet, and these properties are "defaulted" by default properties specified by section 16 of the XSL Transformations (XSLT) W3C Recommendation. The properties that were specifically set by the stylesheet should be in the base Properties list, while the XSLT default properties that were not specifically set should be in the "default" Properties list. Thus, getOutputProperties().getProperty(String key) will obtain any property in that was set by the stylesheet, or the default properties, while getOutputProperties().get(String key) will only retrieve properties that were explicitly set in the stylesheet.

For XSLT, Attribute Value Templates attribute values will be returned unexpanded (since there is no context at this point). The namespace prefixes inside Attribute Value Templates will be unexpanded, so that they remain valid XPath values.

Returns:A Properties object, never null.
/** * Get the properties corresponding to the effective xsl:output element. * The object returned will * be a clone of the internal values. Accordingly, it can be mutated * without mutating the Templates object, and then handed in to * {@link javax.xml.transform.Transformer#setOutputProperties}. * * <p>The properties returned should contain properties set by the stylesheet, * and these properties are "defaulted" by default properties specified by * <a href="http://www.w3.org/TR/xslt#output">section 16 of the * XSL Transformations (XSLT) W3C Recommendation</a>. The properties that * were specifically set by the stylesheet should be in the base * Properties list, while the XSLT default properties that were not * specifically set should be in the "default" Properties list. Thus, * getOutputProperties().getProperty(String key) will obtain any * property in that was set by the stylesheet, <em>or</em> the default * properties, while * getOutputProperties().get(String key) will only retrieve properties * that were explicitly set in the stylesheet.</p> * * <p>For XSLT, * <a href="http://www.w3.org/TR/xslt#attribute-value-templates">Attribute * Value Templates</a> attribute values will * be returned unexpanded (since there is no context at this point). The * namespace prefixes inside Attribute Value Templates will be unexpanded, * so that they remain valid XPath values.</p> * * @return A Properties object, never null. */
Properties getOutputProperties(); }