1 // $Id: StylesheetChainExample.java,v 1.2 2006/09/23 11:07:26 bpeters Exp $
\r
2 package org.marc4j.samples;
\r
4 import java.io.FileOutputStream;
\r
5 import java.io.InputStream;
\r
6 import java.io.OutputStream;
\r
8 import javax.xml.transform.Result;
\r
9 import javax.xml.transform.TransformerFactory;
\r
10 import javax.xml.transform.sax.SAXResult;
\r
11 import javax.xml.transform.sax.SAXSource;
\r
12 import javax.xml.transform.sax.SAXTransformerFactory;
\r
13 import javax.xml.transform.sax.TransformerHandler;
\r
14 import javax.xml.transform.stream.StreamResult;
\r
15 import javax.xml.transform.stream.StreamSource;
\r
17 import org.marc4j.MarcReader;
\r
18 import org.marc4j.MarcStreamReader;
\r
19 import org.marc4j.MarcWriter;
\r
20 import org.marc4j.MarcXmlWriter;
\r
21 import org.marc4j.marc.Record;
\r
24 * A chain of transformation stages.
\r
26 * @author Bas Peters
\r
27 * @version $Revision: 1.2 $
\r
29 public class StylesheetChainExample {
\r
31 public static void main(String args[]) throws Exception {
\r
33 TransformerFactory tFactory = TransformerFactory.newInstance();
\r
35 if (tFactory.getFeature(SAXSource.FEATURE)
\r
36 && tFactory.getFeature(SAXResult.FEATURE)) {
\r
38 // cast the transformer handler to a sax transformer handler
\r
39 SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);
\r
41 // create a TransformerHandler for each stylesheet.
\r
42 TransformerHandler tHandler1 = saxTFactory
\r
43 .newTransformerHandler(new StreamSource(
\r
44 "http://www.loc.gov/standards/mods/v3/MARC21slim2MODS3.xsl"));
\r
45 TransformerHandler tHandler2 = saxTFactory
\r
46 .newTransformerHandler(new StreamSource(
\r
47 "http://www.loc.gov/standards/marcxml/xslt/MODS2MARC21slim.xsl"));
\r
48 TransformerHandler tHandler3 = saxTFactory
\r
49 .newTransformerHandler(new StreamSource(
\r
50 "http://www.loc.gov/standards/marcxml/xslt/MARC21slim2HTML.xsl"));
\r
52 // chain the transformer handlers
\r
53 tHandler1.setResult(new SAXResult(tHandler2));
\r
54 tHandler2.setResult(new SAXResult(tHandler3));
\r
56 OutputStream out = new FileOutputStream("c:/temp/output.html");
\r
57 tHandler3.setResult(new StreamResult(out));
\r
59 // create a SAXResult with the first handler
\r
60 Result result = new SAXResult(tHandler1);
\r
62 // create the input stream
\r
63 InputStream input = ReadMarcExample.class
\r
64 .getResourceAsStream("resources/summerland.mrc");
\r
67 MarcReader reader = new MarcStreamReader(input);
\r
68 MarcWriter writer = new MarcXmlWriter(result);
\r
69 while (reader.hasNext()) {
\r
70 Record record = reader.next();
\r
71 writer.write(record);
\r