1 // $Id: TemplatesExample.java,v 1.2 2006/09/23 11:08:40 bpeters Exp $
\r
2 package org.marc4j.samples;
\r
5 import java.io.FileInputStream;
\r
6 import java.io.FilenameFilter;
\r
7 import java.io.InputStream;
\r
9 import javax.xml.transform.Source;
\r
10 import javax.xml.transform.Templates;
\r
11 import javax.xml.transform.TransformerFactory;
\r
12 import javax.xml.transform.sax.SAXResult;
\r
13 import javax.xml.transform.sax.SAXSource;
\r
14 import javax.xml.transform.sax.SAXTransformerFactory;
\r
15 import javax.xml.transform.sax.TransformerHandler;
\r
16 import javax.xml.transform.stream.StreamSource;
\r
18 import org.marc4j.MarcReader;
\r
19 import org.marc4j.MarcXmlReader;
\r
20 import org.marc4j.marc.Record;
\r
23 * Transformation with compiled stylesheet.
\r
25 * @author Bas Peters
\r
26 * @version $Revision: 1.2 $
\r
28 public class TemplatesExample {
\r
30 public static void main(String args[]) throws Exception {
\r
31 if (args.length != 1)
\r
32 throw new Exception("Usage: TemplatesExample: <input-dir>");
\r
34 String inputDir = args[0];
\r
36 TransformerFactory tFactory = TransformerFactory.newInstance();
\r
38 if (tFactory.getFeature(SAXSource.FEATURE)
\r
39 && tFactory.getFeature(SAXResult.FEATURE)) {
\r
41 // cast the transformer handler to a sax transformer handler
\r
42 SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);
\r
44 Source stylesheet = new StreamSource(
\r
45 "http://www.loc.gov/standards/marcxml/xslt/MODS2MARC21slim.xsl");
\r
47 // create an in-memory stylesheet representation
\r
48 Templates templates = tFactory.newTemplates(stylesheet);
\r
50 File dir = new File(inputDir);
\r
52 // create a filter to include only .xml files
\r
53 FilenameFilter filter = new FilenameFilter() {
\r
54 public boolean accept(File dir, String name) {
\r
55 return name.endsWith(".xml");
\r
58 File[] files = dir.listFiles(filter);
\r
60 for (int i = 0; i < files.length; i++) {
\r
61 InputStream input = new FileInputStream(files[i]);
\r
63 TransformerHandler handler = saxTFactory
\r
64 .newTransformerHandler(templates);
\r
67 MarcReader reader = new MarcXmlReader(input, handler);
\r
68 while (reader.hasNext()) {
\r
69 Record record = reader.next();
\r
70 System.out.println(record.toString());
\r