Home | History | Annotate | Download | only in dom
      1 /*
      2  * Licensed to the Apache Software Foundation (ASF) under one or more
      3  * contributor license agreements.  See the NOTICE file distributed with
      4  * this work for additional information regarding copyright ownership.
      5  * The ASF licenses this file to You under the Apache License, Version 2.0
      6  * (the "License"); you may not use this file except in compliance with
      7  * the License.  You may obtain a copy of the License at
      8  *
      9  *     http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 // $Id: DOMSource.java 446598 2006-09-15 12:55:40Z jeremias $
     19 
     20 package javax.xml.transform.dom;
     21 
     22 import javax.xml.transform.Source;
     23 import org.w3c.dom.Node;
     24 
     25 /**
     26  * <p>Acts as a holder for a transformation Source tree in the
     27  * form of a Document Object Model (DOM) tree.</p>
     28  *
     29  * <p>Note that XSLT requires namespace support. Attempting to transform a DOM
     30  * that was not contructed with a namespace-aware parser may result in errors.
     31  * Parsers can be made namespace aware by calling
     32  * {@link javax.xml.parsers.DocumentBuilderFactory#setNamespaceAware(boolean awareness)}.</p>
     33  *
     34  * @author <a href="Jeff.Suttor (at) Sun.com">Jeff Suttor</a>
     35  * @version $Revision: 446598 $, $Date: 2006-09-15 05:55:40 -0700 (Fri, 15 Sep 2006) $
     36  * @see <a href="http://www.w3.org/TR/DOM-Level-2">Document Object Model (DOM) Level 2 Specification</a>
     37  */
     38 public class DOMSource implements Source {
     39 
     40     /**
     41      * <p><code>Node</code> to serve as DOM source.</p>
     42      */
     43     private Node node;
     44 
     45     /**
     46      * <p>The base ID (URL or system ID) from where URLs
     47      * will be resolved.</p>
     48      */
     49     private String systemID;
     50 
     51     /** If {@link javax.xml.transform.TransformerFactory#getFeature}
     52      * returns true when passed this value as an argument,
     53      * the Transformer supports Source input of this type.
     54      */
     55     public static final String FEATURE =
     56         "http://javax.xml.transform.dom.DOMSource/feature";
     57 
     58     /**
     59      * <p>Zero-argument default constructor.  If this constructor is used, and
     60      * no DOM source is set using {@link #setNode(Node node)} , then the
     61      * <code>Transformer</code> will
     62      * create an empty source {@link org.w3c.dom.Document} using
     63      * {@link javax.xml.parsers.DocumentBuilder#newDocument()}.</p>
     64      *
     65      * @see javax.xml.transform.Transformer#transform(Source xmlSource, Result outputTarget)
     66      */
     67     public DOMSource() { }
     68 
     69     /**
     70      * Create a new input source with a DOM node.  The operation
     71      * will be applied to the subtree rooted at this node.  In XSLT,
     72      * a "/" pattern still means the root of the tree (not the subtree),
     73      * and the evaluation of global variables and parameters is done
     74      * from the root node also.
     75      *
     76      * @param n The DOM node that will contain the Source tree.
     77      */
     78     public DOMSource(Node n) {
     79         setNode(n);
     80     }
     81 
     82     /**
     83      * Create a new input source with a DOM node, and with the
     84      * system ID also passed in as the base URI.
     85      *
     86      * @param node The DOM node that will contain the Source tree.
     87      * @param systemID Specifies the base URI associated with node.
     88      */
     89     public DOMSource(Node node, String systemID) {
     90         setNode(node);
     91         setSystemId(systemID);
     92     }
     93 
     94     /**
     95      * Set the node that will represents a Source DOM tree.
     96      *
     97      * @param node The node that is to be transformed.
     98      */
     99     public void setNode(Node node) {
    100         this.node = node;
    101     }
    102 
    103     /**
    104      * Get the node that represents a Source DOM tree.
    105      *
    106      * @return The node that is to be transformed.
    107      */
    108     public Node getNode() {
    109         return node;
    110     }
    111 
    112     /**
    113      * Set the base ID (URL or system ID) from where URLs
    114      * will be resolved.
    115      *
    116      * @param systemID Base URL for this DOM tree.
    117      */
    118     public void setSystemId(String systemID) {
    119         this.systemID = systemID;
    120     }
    121 
    122     /**
    123      * Get the base ID (URL or system ID) from where URLs
    124      * will be resolved.
    125      *
    126      * @return Base URL for this DOM tree.
    127      */
    128     public String getSystemId() {
    129         return this.systemID;
    130     }
    131 }
    132