Original 2.4
[marc4j.git] / src / org / marc4j / samples / TemplatesExample.java
1 // $Id: TemplatesExample.java,v 1.2 2006/09/23 11:08:40 bpeters Exp $\r
2 package org.marc4j.samples;\r
3 \r
4 import java.io.File;\r
5 import java.io.FileInputStream;\r
6 import java.io.FilenameFilter;\r
7 import java.io.InputStream;\r
8 \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
17 \r
18 import org.marc4j.MarcReader;\r
19 import org.marc4j.MarcXmlReader;\r
20 import org.marc4j.marc.Record;\r
21 \r
22 /**\r
23  * Transformation with compiled stylesheet.\r
24  * \r
25  * @author Bas Peters\r
26  * @version $Revision: 1.2 $\r
27  */\r
28 public class TemplatesExample {\r
29 \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
33 \r
34         String inputDir = args[0];\r
35 \r
36         TransformerFactory tFactory = TransformerFactory.newInstance();\r
37 \r
38         if (tFactory.getFeature(SAXSource.FEATURE)\r
39                 && tFactory.getFeature(SAXResult.FEATURE)) {\r
40 \r
41             // cast the transformer handler to a sax transformer handler\r
42             SAXTransformerFactory saxTFactory = ((SAXTransformerFactory) tFactory);\r
43 \r
44             Source stylesheet = new StreamSource(\r
45                     "http://www.loc.gov/standards/marcxml/xslt/MODS2MARC21slim.xsl");\r
46 \r
47             // create an in-memory stylesheet representation\r
48             Templates templates = tFactory.newTemplates(stylesheet);\r
49 \r
50             File dir = new File(inputDir);\r
51 \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
56                 }\r
57             };\r
58             File[] files = dir.listFiles(filter);\r
59 \r
60             for (int i = 0; i < files.length; i++) {\r
61                 InputStream input = new FileInputStream(files[i]);\r
62 \r
63                 TransformerHandler handler = saxTFactory\r
64                         .newTransformerHandler(templates);\r
65 \r
66                 // parse the input\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
71                 }\r
72             }\r
73         }\r
74     }\r
75 \r
76 }