KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > fop > tools > xslt > TraxTransform


1 /*
2  * $Id: TraxTransform.java,v 1.3.2.3 2003/02/25 15:19:58 jeremias Exp $
3  * ============================================================================
4  * The Apache Software License, Version 1.1
5  * ============================================================================
6  *
7  * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without modifica-
10  * tion, are permitted provided that the following conditions are met:
11  *
12  * 1. Redistributions of source code must retain the above copyright notice,
13  * this list of conditions and the following disclaimer.
14  *
15  * 2. Redistributions in binary form must reproduce the above copyright notice,
16  * this list of conditions and the following disclaimer in the documentation
17  * and/or other materials provided with the distribution.
18  *
19  * 3. The end-user documentation included with the redistribution, if any, must
20  * include the following acknowledgment: "This product includes software
21  * developed by the Apache Software Foundation (http://www.apache.org/)."
22  * Alternately, this acknowledgment may appear in the software itself, if
23  * and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. The names "FOP" and "Apache Software Foundation" must not be used to
26  * endorse or promote products derived from this software without prior
27  * written permission. For written permission, please contact
28  * apache@apache.org.
29  *
30  * 5. Products derived from this software may not be called "Apache", nor may
31  * "Apache" appear in their name, without prior written permission of the
32  * Apache Software Foundation.
33  *
34  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
35  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
36  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
37  * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
38  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
39  * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
40  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
41  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
42  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
43  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44  * ============================================================================
45  *
46  * This software consists of voluntary contributions made by many individuals
47  * on behalf of the Apache Software Foundation and was originally created by
48  * James Tauber <jtauber@jtauber.com>. For more information on the Apache
49  * Software Foundation, please see <http://www.apache.org/>.
50  */

51 package org.apache.fop.tools.xslt;
52
53 import javax.xml.transform.*;
54
55 import java.io.InputStream JavaDoc;
56 import java.io.Writer JavaDoc;
57
58 import java.util.HashMap JavaDoc;
59 import org.w3c.dom.Document JavaDoc;
60
61 /**
62  * Handles xslt tranformations via Trax (xalan2)
63  */

64
65 public class TraxTransform {
66
67     /**
68      * Cache of compiled stylesheets (filename, StylesheetRoot)
69      */

70     private static HashMap JavaDoc _stylesheetCache = new HashMap JavaDoc();
71
72     public static Transformer getTransformer(String JavaDoc xsltFilename,
73                                              boolean cache) {
74         try {
75             if (cache && _stylesheetCache.containsKey(xsltFilename)) {
76                 Templates cachedStylesheet =
77                     (Templates)_stylesheetCache.get(xsltFilename);
78                 return cachedStylesheet.newTransformer();
79             }
80
81             Source xslSheet =
82                 new javax.xml.transform.stream.StreamSource JavaDoc(xsltFilename);
83
84
85             /*
86              * System.out.println("****************************");
87              * System.out.println("trax compile \nin: " + xsltFilename);
88              * System.out.println("****************************");
89              */

90             TransformerFactory factory = TransformerFactory.newInstance();
91
92             Templates compiledSheet = factory.newTemplates(xslSheet);
93             if (cache) {
94                 _stylesheetCache.put(xsltFilename, compiledSheet);
95             }
96             return compiledSheet.newTransformer();
97         } catch (TransformerConfigurationException ex) {
98             ex.printStackTrace();
99         }
100         return null;
101
102     }
103
104     public static void transform(String JavaDoc xmlSource, String JavaDoc xslURL,
105                                  String JavaDoc outputFile) {
106         transform(new javax.xml.transform.stream.StreamSource JavaDoc(xmlSource),
107                   new javax.xml.transform.stream.StreamSource JavaDoc(xslURL),
108                   new javax.xml.transform.stream.StreamResult JavaDoc(outputFile));
109     }
110
111     public static void transform(Document JavaDoc xmlSource, String JavaDoc xslURL,
112                                  String JavaDoc outputFile) {
113
114         transform(new javax.xml.transform.dom.DOMSource JavaDoc(xmlSource),
115                   new javax.xml.transform.stream.StreamSource JavaDoc(xslURL),
116                   new javax.xml.transform.stream.StreamResult JavaDoc(outputFile));
117
118     }
119
120     public static void transform(String JavaDoc xmlSource, String JavaDoc xslURL,
121                                  Writer JavaDoc output) {
122         transform(new javax.xml.transform.stream.StreamSource JavaDoc(xmlSource),
123                   new javax.xml.transform.stream.StreamSource JavaDoc(xslURL),
124                   new javax.xml.transform.stream.StreamResult JavaDoc(output));
125     }
126
127     public static void transform(Document JavaDoc xmlSource, InputStream JavaDoc xsl,
128                                  Document JavaDoc outputDoc) {
129         transform(new javax.xml.transform.dom.DOMSource JavaDoc(xmlSource),
130                   new javax.xml.transform.stream.StreamSource JavaDoc(xsl),
131                   new javax.xml.transform.dom.DOMResult JavaDoc(outputDoc));
132     }
133
134     public static void transform(Source xmlSource, Source xslSource,
135                                  Result result) {
136         try {
137             Transformer transformer;
138             if (xslSource.getSystemId() == null) {
139                 TransformerFactory factory = TransformerFactory.newInstance();
140                 transformer = factory.newTransformer(xslSource);
141             } else {
142                 transformer = getTransformer(xslSource.getSystemId(), true);
143             }
144             transformer.transform(xmlSource, result);
145         } catch (TransformerConfigurationException ex) {
146             ex.printStackTrace();
147         } catch (TransformerException ex) {
148             ex.printStackTrace();
149         }
150
151     }
152
153 }
154
Popular Tags