1320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson/* 2320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one or more 3320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * contributor license agreements. See the NOTICE file distributed with 4320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * this work for additional information regarding copyright ownership. 5320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 6320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * (the "License"); you may not use this file except in compliance with 7320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the License. You may obtain a copy of the License at 8320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 9320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 10320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 11320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Unless required by applicable law or agreed to in writing, software 12320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 13320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * See the License for the specific language governing permissions and 15320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * limitations under the License. 16320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 17320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 18320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson// $Id: DOMSource.java 446598 2006-09-15 12:55:40Z jeremias $ 19320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 20320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonpackage javax.xml.transform.dom; 21320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 22320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonimport javax.xml.transform.Source; 23320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonimport org.w3c.dom.Node; 24320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 25320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson/** 26320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>Acts as a holder for a transformation Source tree in the 27320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * form of a Document Object Model (DOM) tree.</p> 28f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 29320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>Note that XSLT requires namespace support. Attempting to transform a DOM 30320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * that was not contructed with a namespace-aware parser may result in errors. 31320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Parsers can be made namespace aware by calling 32320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * {@link javax.xml.parsers.DocumentBuilderFactory#setNamespaceAware(boolean awareness)}.</p> 33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 34320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @author <a href="Jeff.Suttor@Sun.com">Jeff Suttor</a> 35320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @version $Revision: 446598 $, $Date: 2006-09-15 05:55:40 -0700 (Fri, 15 Sep 2006) $ 36320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @see <a href="http://www.w3.org/TR/DOM-Level-2">Document Object Model (DOM) Level 2 Specification</a> 37320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 38320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilsonpublic class DOMSource implements Source { 39320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 40320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 41320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p><code>Node</code> to serve as DOM source.</p> 42320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 43320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson private Node node; 44320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 45320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 46320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>The base ID (URL or system ID) from where URLs 47320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * will be resolved.</p> 48320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 49320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson private String systemID; 50320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 51320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** If {@link javax.xml.transform.TransformerFactory#getFeature} 52320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * returns true when passed this value as an argument, 53320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * the Transformer supports Source input of this type. 54320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 55320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public static final String FEATURE = 56320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson "http://javax.xml.transform.dom.DOMSource/feature"; 57320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 58320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 59320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <p>Zero-argument default constructor. If this constructor is used, and 60320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * no DOM source is set using {@link #setNode(Node node)} , then the 61320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * <code>Transformer</code> will 62320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * create an empty source {@link org.w3c.dom.Document} using 63320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * {@link javax.xml.parsers.DocumentBuilder#newDocument()}.</p> 64320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 65320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @see javax.xml.transform.Transformer#transform(Source xmlSource, Result outputTarget) 66320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 67320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public DOMSource() { } 68320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 69320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 70320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Create a new input source with a DOM node. The operation 71320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * will be applied to the subtree rooted at this node. In XSLT, 72320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * a "/" pattern still means the root of the tree (not the subtree), 73320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * and the evaluation of global variables and parameters is done 74320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * from the root node also. 75320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 76320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param n The DOM node that will contain the Source tree. 77320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 78320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public DOMSource(Node n) { 79320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setNode(n); 80320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 81320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 82320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 83320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Create a new input source with a DOM node, and with the 84320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * system ID also passed in as the base URI. 85320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 86320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param node The DOM node that will contain the Source tree. 87320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param systemID Specifies the base URI associated with node. 88320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 89320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public DOMSource(Node node, String systemID) { 90320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setNode(node); 91320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson setSystemId(systemID); 92320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 93320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 94320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 95320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Set the node that will represents a Source DOM tree. 96320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 97320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param node The node that is to be transformed. 98320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 99320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public void setNode(Node node) { 100320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson this.node = node; 101320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 102320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 103320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 104320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Get the node that represents a Source DOM tree. 105320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 106320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @return The node that is to be transformed. 107320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 108320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public Node getNode() { 109320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson return node; 110320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 111320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 112320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 113320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Set the base ID (URL or system ID) from where URLs 114320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * will be resolved. 115320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 116320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @param systemID Base URL for this DOM tree. 117320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 118320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public void setSystemId(String systemID) { 119320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson this.systemID = systemID; 120320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 121320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson 122320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson /** 123320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * Get the base ID (URL or system ID) from where URLs 124320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * will be resolved. 125320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * 126320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson * @return Base URL for this DOM tree. 127320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson */ 128320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson public String getSystemId() { 129320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson return this.systemID; 130320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson } 131320c9890e8241fb0ad05de6fa5e6c3eb3aece159Jesse Wilson} 132