001: /*
002: * $Id: Transformer.java,v 1.5 2001/11/02 22:07:45 db Exp $
003: * Copyright (C) 2001 Andrew Selkirk
004: * Copyright (C) 2001 David Brownell
005: *
006: * This file is part of GNU JAXP, a library.
007: *
008: * GNU JAXP is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License as published by
010: * the Free Software Foundation; either version 2 of the License, or
011: * (at your option) any later version.
012: *
013: * GNU JAXP is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with this program; if not, write to the Free Software
020: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
021: *
022: * As a special exception, if you link this library with other files to
023: * produce an executable, this library does not by itself cause the
024: * resulting executable to be covered by the GNU General Public License.
025: * This exception does not however invalidate any other reasons why the
026: * executable file might be covered by the GNU General Public License.
027: */
028: package javax.xml.transform;
029:
030: // Imports
031: import java.util.Properties;
032:
033: /**
034: * Apply a transformation from a source, populating a result.
035: * Transformers may be reused, but not concurrently.
036: *
037: * @author Andrew Selkirk, David Brownell
038: * @version 1.0
039: */
040: public abstract class Transformer {
041:
042: //-------------------------------------------------------------
043: // Initialization ---------------------------------------------
044: //-------------------------------------------------------------
045:
046: /** Default constructor, for use only by subclasses. */
047: protected Transformer() {
048: } // Transformer()
049:
050: //-------------------------------------------------------------
051: // Methods ----------------------------------------------------
052: //-------------------------------------------------------------
053:
054: /**
055: * Clears all parameter settings.
056: * @see #setParameter
057: */
058: public abstract void clearParameters();
059:
060: /** Returns the error handler used as documents are transformed. */
061: public abstract ErrorListener getErrorListener();
062:
063: /**
064: * Returns a copy of the transformer's non-default output properties.
065: * That is, properties set in the stylesheet or through
066: * methods on this class are not set.
067: * @see OutputKeys
068: * @see #setOutputProperties
069: */
070: public abstract Properties getOutputProperties();
071:
072: /**
073: * Returns the value of a property applying to this transform.
074: * Values returned by this method are only those that have
075: * been set explicitly.
076: * @see OutputKeys
077: * @see #setOutputProperty
078: */
079: public abstract String getOutputProperty(String name)
080: throws IllegalArgumentException;
081:
082: /**
083: * Returns the value of a parameter passed to this transform.
084: * These are primarily for use access within transformations
085: * and extensions.
086: * @see #setParameter
087: */
088: public abstract Object getParameter(String name);
089:
090: /** Returns the resolver applied to documents being transformed. */
091: public abstract URIResolver getURIResolver();
092:
093: /** Assigns the error handler used as documents are transformed. */
094: public abstract void setErrorListener(ErrorListener listener)
095: throws IllegalArgumentException;
096:
097: /**
098: * Assigns a set of output properties, as if made by multiple
099: * calls to {@link #setOutputProperty}.
100: * @see OutputKeys
101: * @param outputformat set of properties, or null to reset all
102: * properties to their default values
103: */
104: public abstract void setOutputProperties(Properties outputformat)
105: throws IllegalArgumentException;
106:
107: /**
108: * Assigns the value of a transformation property, affecting
109: * generation of output (mostly text syntax). Parameters include
110: * those defined by the xslt:output element. Default settings may
111: * be explicitly overridden.
112: * @see OutputKeys
113: * @see #getOutputProperty
114: * @see #setOutputProperties
115: * @param name an XML name, or a namespace-scoped XML name
116: * encoded as <em>{uri}localName</em>.
117: * @param value associated with the name
118: */
119: public abstract void setOutputProperty(String name, String value)
120: throws IllegalArgumentException;
121:
122: /**
123: * Assigns the value of a parameter passed to this transform.
124: * These are primarily for use access within transformations
125: * and extensions.
126: * @see #getParameter
127: * @see #clearParameters
128: * @param name an XML name, or a namespace-scoped XML name
129: * encoded as <em>{uri}localName</em>.
130: * @param value associated with the name
131: */
132: public abstract void setParameter(String name, Object value);
133:
134: /** Assigns the resolver applied to documents being transformed. */
135: public abstract void setURIResolver(URIResolver resolver);
136:
137: /** Apply the appropriate transformation */
138: public abstract void transform(Source source, Result result)
139: throws TransformerException;
140:
141: } // Transformer
|