001: /*
002: * $Id: SAXTransformerFactory.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.sax;
029:
030: // Imports
031: import org.xml.sax.InputSource;
032: import org.xml.sax.XMLFilter;
033: import javax.xml.transform.Transformer;
034: import javax.xml.transform.TransformerFactory;
035: import javax.xml.transform.Result;
036: import javax.xml.transform.Source;
037: import javax.xml.transform.Templates;
038: import javax.xml.transform.TransformerConfigurationException;
039:
040: /**
041: * A TransformerFactory that supports several separate modes for
042: * working with SAX inputs and outputs. Those modes include: <ul>
043: *
044: * <li> Pipeline Stage, pushing events through {@link TransformerHandler}
045: * objects used as SAX handlers, and passing the transformed data
046: * through a {@link SAXResult} encapsulating SAX ContentHandler and
047: * LexicalHandler objects;
048: * <li> Pipeline Termination, like a normal pipeline stage but using some
049: * other kind of {@link Result} to store transformed data rather than
050: * passing it to another stage;
051: * <li> Event producer, an {@link XMLFilter} object taking data from a URI
052: * or from a SAX {@link InputSource} input object and delivering it
053: * to a SAX ContentHandler;
054: * <li> Transformer objects produced by this factory will usually be able
055: * to accept {@link SAXSource} objects as inputs, and the XMLReader
056: * object in such a source could be an XMLFilter.
057: * </ul>
058: *
059: * <p>Transformer objects produced by this factory will of course be
060: * able to perform {@link Transformer#transform Transformer.transform()}
061: * operations to map XML text into other text.
062: *
063: * <p>The factory also supports creating Templates objects.
064: *
065: * @author Andrew Selkirk, David Brownell
066: * @version 1.0
067: */
068: public abstract class SAXTransformerFactory extends TransformerFactory {
069: /**
070: * Used with <em>TransformerFactory.getFeature()</em> to determine
071: * whether the transformers it produces extend this class.
072: */
073: public static final String FEATURE = "http://javax.xml.transform.sax.SAXTransformerFactory/feature";
074:
075: /**
076: * Used with <em>TransformerFactory.getFeature()</em> to determine
077: * whether <em>newXMLFilter()</em> methods are supported.
078: */
079: public static final String FEATURE_XMLFILTER = "http://javax.xml.transform.sax.SAXTransformerFactory/feature/xmlfilter";
080:
081: //-------------------------------------------------------------
082: // Initialization ---------------------------------------------
083: //-------------------------------------------------------------
084:
085: /** Constructor, for use with subclasses */
086: protected SAXTransformerFactory() {
087: }
088:
089: //-------------------------------------------------------------
090: // Methods ----------------------------------------------------
091: //-------------------------------------------------------------
092:
093: /**
094: * Returns a SAX event consumer sending its inputs to some Result
095: * after transforming them according to a stylesheet.
096: */
097: public abstract TransformerHandler newTransformerHandler(
098: Source stylesheet) throws TransformerConfigurationException;
099:
100: /**
101: * Returns a SAX event consumer sending its inputs to some Result
102: * after transforming them according to a pre-parsed stylesheet.
103: */
104: public abstract TransformerHandler newTransformerHandler(
105: Templates stylesheet)
106: throws TransformerConfigurationException;
107:
108: /**
109: * Returns a SAX event consumer sending its inputs to some Result
110: * without transforming them (null transformation).
111: */
112: public abstract TransformerHandler newTransformerHandler()
113: throws TransformerConfigurationException;
114:
115: /**
116: * Returns a SAX parser that transforms XML data according
117: * to a stylesheet before reporting SAX events.
118: */
119: public abstract XMLFilter newXMLFilter(Source stylesheet)
120: throws TransformerConfigurationException;
121:
122: /**
123: * Returns a SAX parser that transforms XML data according
124: * to a pre-parsed stylesheet before reporting SAX events.
125: */
126: public abstract XMLFilter newXMLFilter(Templates stylesheet)
127: throws TransformerConfigurationException;
128:
129: /**
130: * Returns a SAX event consumer collecting its inputs into
131: * a pre-parsed stylesheet.
132: */
133: public abstract TemplatesHandler newTemplatesHandler()
134: throws TransformerConfigurationException;
135:
136: }
|