2 import java.io.FileOutputStream;
\r
3 import java.io.IOException;
\r
4 import java.io.OutputStream;
\r
6 import javax.xml.parsers.DocumentBuilder;
\r
7 import javax.xml.parsers.DocumentBuilderFactory;
\r
8 import javax.xml.parsers.ParserConfigurationException;
\r
9 import javax.xml.transform.Transformer;
\r
10 import javax.xml.transform.TransformerConfigurationException;
\r
11 import javax.xml.transform.TransformerException;
\r
12 import javax.xml.transform.TransformerFactory;
\r
13 import javax.xml.transform.dom.DOMSource;
\r
14 import javax.xml.transform.stream.StreamResult;
\r
15 import javax.xml.transform.stream.StreamSource;
\r
17 import org.apache.xpath.XPathAPI;
\r
18 import org.w3c.dom.Document;
\r
19 import org.w3c.dom.Node;
\r
20 import org.w3c.dom.NodeList;
\r
21 import org.xml.sax.SAXException;
\r
23 /** used to generate .tcl files from */
\r
24 public class Stylizer
\r
26 // Global value so it can be ref'd by the tree-adapter
\r
27 static Document document;
\r
28 public static void main(String argv[])
\r
30 if (argv.length != 3)
\r
32 System.err.println("Usage: java Stylizer stylesheet xmlfile outputdir");
\r
35 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
\r
38 System.err.println("Starting conversion...");
\r
40 File stylesheet = new File(argv[0]);
\r
41 File datafile = new File(argv[1]);
\r
42 DocumentBuilder builder = factory.newDocumentBuilder();
\r
43 document = builder.parse(datafile);
\r
45 NodeList list = XPathAPI.selectNodeList(document, "website/language/page");
\r
47 for (int i=0; i<list.getLength(); i++)
\r
49 Node node=list.item(i);
\r
51 // Use a Transformer for output
\r
52 TransformerFactory tFactory = TransformerFactory.newInstance();
\r
53 StreamSource stylesource = new StreamSource(stylesheet);
\r
54 Transformer transformer = tFactory.newTransformer(stylesource);
\r
56 Node fileName = XPathAPI.selectSingleNode(node, "outfile/text()");
\r
58 System.err.println("Converting " + fileName.getNodeValue());
\r
59 DOMSource source = new DOMSource(document);
\r
61 OutputStream output=new FileOutputStream(new File(argv[2], fileName.getNodeValue()));
\r
66 StreamResult result = new StreamResult(output);
\r
68 transformer.setParameter("pagetogenerate", fileName.getNodeValue());
\r
69 transformer.transform(source, result);
\r
76 } catch (TransformerConfigurationException tce)
\r
78 // Error generated by the parser
\r
79 System.out.println("\n** Transformer Factory error");
\r
80 System.out.println(" " + tce.getMessage());
\r
81 // Use the contained exception, if any
\r
83 if (tce.getException() != null)
\r
84 x = tce.getException();
\r
85 x.printStackTrace();
\r
86 } catch (TransformerException te)
\r
88 // Error generated by the parser
\r
89 System.out.println("\n** Transformation error");
\r
90 System.out.println(" " + te.getMessage());
\r
91 // Use the contained exception, if any
\r
93 if (te.getException() != null)
\r
94 x = te.getException();
\r
95 x.printStackTrace();
\r
96 } catch (SAXException sxe)
\r
98 // Error generated by this application
\r
99 // (or a parser-initialization error)
\r
101 if (sxe.getException() != null)
\r
102 x = sxe.getException();
\r
103 x.printStackTrace();
\r
104 } catch (ParserConfigurationException pce)
\r
106 // Parser with specified options can't be built
\r
107 pce.printStackTrace();
\r
108 } catch (IOException ioe)
\r
111 ioe.printStackTrace();
\r