001    /* DOMResult.java -- 
002       Copyright (C) 2004, 2005  Free Software Foundation, Inc.
003    
004    This file is part of GNU Classpath.
005    
006    GNU Classpath is free software; you can redistribute it and/or modify
007    it under the terms of the GNU General Public License as published by
008    the Free Software Foundation; either version 2, or (at your option)
009    any later version.
010    
011    GNU Classpath is distributed in the hope that it will be useful, but
012    WITHOUT ANY WARRANTY; without even the implied warranty of
013    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
014    General Public License for more details.
015    
016    You should have received a copy of the GNU General Public License
017    along with GNU Classpath; see the file COPYING.  If not, write to the
018    Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
019    02110-1301 USA.
020    
021    Linking this library statically or dynamically with other modules is
022    making a combined work based on this library.  Thus, the terms and
023    conditions of the GNU General Public License cover the whole
024    combination.
025    
026    As a special exception, the copyright holders of this library give you
027    permission to link this library with independent modules to produce an
028    executable, regardless of the license terms of these independent
029    modules, and to copy and distribute the resulting executable under
030    terms of your choice, provided that you also meet, for each linked
031    independent module, the terms and conditions of the license of that
032    module.  An independent module is a module which is not derived from
033    or based on this library.  If you modify this library, you may extend
034    this exception to your version of the library, but you are not
035    obligated to do so.  If you do not wish to do so, delete this
036    exception statement from your version. */
037    
038    package javax.xml.transform.dom;
039    
040    import javax.xml.transform.Result;
041    import org.w3c.dom.Node;
042    
043    /**
044     * Output result specified as a W3C DOM object graph.
045     * The result tree may be appended to an existing tree.
046     * If no target node is specified, the result tree will be made available by
047     * the {@link #getNode} method after the transformation.
048     *
049     * @author (a href='mailto:dog@gnu.org'>Chris Burdess</a)
050     */
051    public class DOMResult
052      implements Result
053    {
054    
055      /**
056       * Factory feature indicating that DOM results are supported.
057       */
058      public static final String FEATURE =
059        "http://javax.xml.transform.dom.DOMResult/feature";
060    
061      private Node node;
062      private Node nextSibling;
063      private String systemId;
064    
065      /**
066       * Default constructor.
067       */
068      public DOMResult()
069      {
070        this(null, null, null);
071      }
072    
073      /**
074       * Constructor with the node to append to.
075       */
076      public DOMResult(Node node)
077      {
078        this(node, null, null);
079      }
080    
081      /**
082       * Constructor with the node to append to and the child node before which
083       * the result should be appended.
084       * @since 1.3
085       */
086      public DOMResult(Node node, Node nextSibling)
087      {
088        this(node, nextSibling, null);
089      }
090      
091      /**
092       * Constructor with the node to append to and the system ID.
093       */
094      public DOMResult(Node node, String systemID)
095      {
096        this(node, null, systemID);
097      }
098      
099      /**
100       * Constructor with the node to append to, the child node before which
101       * the result should be appended, and the system ID.
102       * @since 1.3
103       */
104      public DOMResult(Node node, Node nextSibling, String systemID)
105      {
106        this.node = node;
107        this.nextSibling = nextSibling;
108        this.systemId = systemID;
109      }
110    
111      /**
112       * Sets the node to which the result tree will be appended.
113       * @param node the node
114       */
115      public void setNode(Node node)
116      {
117        this.node = node;
118      }
119    
120      /**
121       * Returns the node to which the result tree is to be appended,
122       * or the result tree after transformation if no node was previously set.
123       */
124      public Node getNode()
125      {
126        return node;
127      }
128    
129      /**
130       * Sets the child node before which the result nodes will be inserted.
131       * @since 1.3
132       */
133      public void setNextSibling(Node nextSibling)
134      {
135        this.nextSibling = nextSibling;
136      }
137    
138      /**
139       * Returns the child node before which the result nodes will be inserted.
140       * @since 1.3
141       */
142      public Node getNextSibling()
143      {
144        return nextSibling;
145      }
146    
147      /**
148       * Sets the system ID used to resolve external entities.
149       */
150      public void setSystemId(String systemId)
151      {
152        this.systemId = systemId;
153      }
154    
155      /**
156       * Returns the system ID used to resolve external entities.
157       */
158      public String getSystemId()
159      {
160        return systemId;
161      }
162    
163    }