You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by dl...@locus.apache.org on 2000/09/28 14:48:43 UTC
cvs commit: xml-xalan/java/samples/Pipe Pipe.java
dleslie 00/09/28 05:48:42
Modified: java/samples/Pipe Pipe.java
Log:
Rewrote Pipe to show series of transformations with each
Transformer functioning as ContentHandler for previous
Transformer in the series. Moved what was Pipe to
Use XMLFilters
Revision Changes Path
1.2 +31 -32 xml-xalan/java/samples/Pipe/Pipe.java
Index: Pipe.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/samples/Pipe/Pipe.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Pipe.java 2000/07/27 21:28:12 1.1
+++ Pipe.java 2000/09/28 12:48:41 1.2
@@ -55,14 +55,15 @@
* <http://www.apache.org/>.
*/
-// Imported trax classes
-import trax.*;
+// Imported TraX classes
+import trax.Processor;
+import trax.Templates;
+import trax.Transformer;
+import trax.Result;
+import trax.ProcessorException;
+import trax.ProcessorFactoryException;
+import trax.TransformException;
-// Imported java classes
-import java.io.InputStream;
-import java.io.Reader;
-import java.io.IOException;
-
// Imported SAX classes
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
@@ -71,6 +72,7 @@
import org.xml.sax.helpers.XMLReaderFactory;
import org.xml.sax.XMLReader;
import org.xml.sax.ContentHandler;
+import org.xml.sax.ext.LexicalHandler;
// Imported DOM classes
import org.w3c.dom.Node;
@@ -80,10 +82,17 @@
import org.apache.xml.serialize.Serializer;
import org.apache.xml.serialize.SerializerFactory;
+// Imported JAVA API for XML Parsing 1.0 classes
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
+// Imported java.io classes
+import java.io.InputStream;
+import java.io.Reader;
+import java.io.IOException;
+
+import org.apache.xalan.transformer.TransformerImpl;
/**
* This example shows how to chain a series of transformations by
@@ -108,36 +117,26 @@
Templates stylesheet3 = processor.process(new InputSource("foo3.xsl"));
Transformer transformer3= stylesheet3.newTransformer();
- // Create an XMLReader (implemented by the Xerces SAXParser).
+ // Create an XMLReader.
XMLReader reader = XMLReaderFactory.createXMLReader();
-
- // transformer1 uses the reader (SAXParser) as its reader.
- transformer1.setParent(reader);
-
- // transformer2 uses transformer1 as its reader.
- transformer2.setParent(transformer1);
-
- // transform3 uses transform2 as its reader.
- transformer3.setParent(transformer2);
-
+
+ ContentHandler chandler = transformer1.getInputContentHandler();
+ reader.setContentHandler(chandler);
+ if(chandler instanceof LexicalHandler)
+ reader.setProperty("http://xml.org/sax/properties/lexical-handler", chandler);
+ else
+ reader.setProperty("http://xml.org/sax/properties/lexical-handler", null);
+
+ transformer1.setContentHandler(transformer2.getInputContentHandler());
+ transformer2.setContentHandler(transformer3.getInputContentHandler());
+
// transformer3 outputs SAX events to the serializer.
SerializerFactory sf = SerializerFactory.getSerializerFactory("xml");
Serializer serializer = sf.makeSerializer(System.out, new OutputFormat());
transformer3.setContentHandler(serializer.asContentHandler());
- // Perform the series of transformations as follows:
- // transformer3 gets its parent (transformer2) as the XMLReader/XMLFilter
- // and calls transformer2.parse(new InputSource("foo.xml")).
- // transformer2 gets its parent (transformer1) as the XMLReader/XMLFilter
- // and calls transformer1.parse(new InputSource("foo.xml")).
- // transformer1 gets its parent (reader, a SAXParser) as the XMLReader
- // and calls reader.parse(new InputSource("foo.xml")).
- // reader parses the XML document and sends the SAX parse events to transformer1,
- // which performs transformation 1 and sends the output to transformer2.
- // transformer2 parses the transformation 1 output, performs transformation 2, and
- // sends the output to transformer3.
- // transformer3 parses the transformation 2 output, performs transformation 3,
- // and sends the output to the serializer.
- transformer3.parse(new InputSource("foo.xml"));
+ // Parse the XML input document. The input ContentHandler and output ContentHandler
+ // work in separate threads to optimize performance.
+ reader.parse("foo.xml");
}
}