annotate software/mpdl-services/mpiwg-mpdl-xml/src/de/mpg/mpiwg/berlin/mpdl/xml/transform/BasicTransformer.java @ 23:e845310098ba

diverse Korrekturen
author Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
date Tue, 27 Nov 2012 12:35:19 +0100
parents dc5e9fcb3fdc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
1 package de.mpg.mpiwg.berlin.mpdl.xml.transform;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
2
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
3 import java.io.BufferedWriter;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
4 import java.io.FileOutputStream;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
5 import java.io.IOException;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
6 import java.io.OutputStreamWriter;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
7 import java.io.StringReader;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
8 import java.io.StringWriter;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
9 import java.io.Writer;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
10
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
11 import javax.xml.transform.OutputKeys;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
12 import javax.xml.transform.Transformer;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
13 import javax.xml.transform.TransformerConfigurationException;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
14 import javax.xml.transform.TransformerException;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
15 import javax.xml.transform.TransformerFactory;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
16 import javax.xml.transform.stream.StreamResult;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
17 import javax.xml.transform.stream.StreamSource;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
18
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
19 import de.mpg.mpiwg.berlin.mpdl.exception.ApplicationException;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
20
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
21 import net.sf.saxon.s9api.Processor;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
22 import net.sf.saxon.s9api.QName;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
23 import net.sf.saxon.s9api.SaxonApiException;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
24 import net.sf.saxon.s9api.Serializer;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
25 import net.sf.saxon.s9api.XdmAtomicValue;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
26 import net.sf.saxon.s9api.XdmValue;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
27 import net.sf.saxon.s9api.XsltCompiler;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
28 import net.sf.saxon.s9api.XsltExecutable;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
29 import net.sf.saxon.s9api.XsltTransformer;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
30
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
31 public class BasicTransformer {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
32 private Processor processor;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
33 private XsltCompiler xsltCompiler;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
34 private XsltTransformer xsltTransformer;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
35
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
36 public static void main(String[] args) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
37 try {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
38 BasicTransformer t = new BasicTransformer();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
39 String xmlDocFileName = "file:/Users/jwillenborg/texts/mpdl/documents/echo/la/Aristoteles_1585_XSY685ZD.xml";
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
40 String xslDocFileName = "/Users/jwillenborg/java/mpiwg-mpdl-xml/examples/generateId.xsl";
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
41 String destFileName = "/Users/jwillenborg/java/mpiwg-mpdl-xml/examples/Aristoteles_1585_XSY685ZD-Ids.xml";
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
42 // t.transform(xmlDocFileName, xslDocFileName, null, "encoding=utf-8 indent=yes", destFileName);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
43 t.transform(xmlDocFileName, xslDocFileName, null, null);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
44 // String result = t.transform(xmlDocFileName, xslDocFileName, null, null);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
45 // ByteArrayInputStream is = new ByteArrayInputStream(result.getBytes("utf-8"));
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
46 // FileUtil.getInstance().saveInputStreamToLocalFile(is, destFileName);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
47 } catch (Exception e) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
48 e.printStackTrace();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
49 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
50 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
51
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
52 public BasicTransformer() {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
53 processor = new Processor(false);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
54 xsltCompiler = processor.newXsltCompiler();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
55 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
56
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
57 public void transform(String srcUrl, String xslUrl, String parametersStr, String outputPropertiesStr, String destFileName) throws ApplicationException {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
58 try {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
59 StreamSource xslStreamSource = new StreamSource(xslUrl);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
60 XsltExecutable xsltExecutable = xsltCompiler.compile(xslStreamSource);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
61 xsltTransformer = xsltExecutable.load();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
62 StreamSource xmlDoc = new StreamSource(srcUrl);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
63 Serializer serializer = new Serializer();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
64 String encoding = "utf-8"; // default
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
65 if (outputPropertiesStr != null) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
66 String enc = getEncoding(outputPropertiesStr);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
67 if (enc != null && ! enc.isEmpty())
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
68 encoding = enc;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
69 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
70 Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destFileName), encoding));
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
71 serializer.setOutputWriter(writer);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
72 setOutputProperties(serializer, outputPropertiesStr);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
73 xsltTransformer.setSource(xmlDoc); // needs some time for bigger documents
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
74 xsltTransformer.setDestination(serializer);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
75 setParameters(xsltTransformer, parametersStr);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
76 xsltTransformer.transform(); // needs some time for bigger documents
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
77 } catch (SaxonApiException e) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
78 throw new ApplicationException(e);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
79 } catch (IOException e) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
80 throw new ApplicationException(e);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
81 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
82 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
83
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
84 public String transform(String srcUrl, String xslUrl, String parametersStr, String outputPropertiesStr) throws ApplicationException {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
85 String retStr = null;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
86 try {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
87 StreamSource xslStreamSource = new StreamSource(xslUrl);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
88 XsltExecutable xsltExecutable = xsltCompiler.compile(xslStreamSource);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
89 xsltTransformer = xsltExecutable.load();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
90 StreamSource xmlDoc = new StreamSource(srcUrl);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
91 Serializer serializer = new Serializer();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
92 StringWriter stringWriter = new StringWriter();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
93 serializer.setOutputWriter(stringWriter);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
94 setOutputProperties(serializer, outputPropertiesStr);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
95 xsltTransformer.setSource(xmlDoc); // needs some time for bigger documents
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
96 xsltTransformer.setDestination(serializer);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
97 setParameters(xsltTransformer, parametersStr);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
98 xsltTransformer.transform(); // needs some time for bigger documents
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
99 StringWriter out = (StringWriter) serializer.getOutputDestination();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
100 retStr = out.toString();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
101 } catch (SaxonApiException e) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
102 throw new ApplicationException(e);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
103 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
104 return retStr;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
105 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
106
23
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
107 public String transform(StringReader inputStrReader, String xslUrl, String parametersStr, String outputPropertiesStr) throws ApplicationException {
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
108 String retStr = null;
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
109 try {
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
110 StreamSource xslStreamSource = new StreamSource(xslUrl);
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
111 XsltExecutable xsltExecutable = xsltCompiler.compile(xslStreamSource);
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
112 xsltTransformer = xsltExecutable.load();
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
113 StreamSource xmlDoc = new StreamSource(inputStrReader);
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
114 Serializer serializer = new Serializer();
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
115 StringWriter stringWriter = new StringWriter();
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
116 serializer.setOutputWriter(stringWriter);
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
117 setOutputProperties(serializer, outputPropertiesStr);
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
118 xsltTransformer.setSource(xmlDoc); // needs some time for bigger documents
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
119 xsltTransformer.setDestination(serializer);
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
120 setParameters(xsltTransformer, parametersStr);
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
121 xsltTransformer.transform(); // needs some time for bigger documents
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
122 StringWriter out = (StringWriter) serializer.getOutputDestination();
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
123 retStr = out.toString();
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
124 } catch (SaxonApiException e) {
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
125 throw new ApplicationException(e);
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
126 }
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
127 return retStr;
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
128 }
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
129
18
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
130 private String getEncoding(String outputPropertiesStr) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
131 String str = outputPropertiesStr.toLowerCase();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
132 String encoding = null;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
133 if (str.matches("encoding=([^ ]+)$")) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
134 encoding = outputPropertiesStr.toLowerCase().replaceAll("encoding=([^ ]+)$", "$1");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
135 } else if (str.matches("encoding=(.+) .*")) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
136 encoding = outputPropertiesStr.toLowerCase().replaceAll("encoding=(.+) .*", "$1");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
137 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
138 return encoding;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
139 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
140
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
141 private void setParameters(XsltTransformer xsltTransformer, String parametersStr) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
142 if (parametersStr != null && ! parametersStr.equals("")) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
143 String[] parameters = parametersStr.split(" ");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
144 for (int i=0; i<parameters.length; i++) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
145 String param = parameters[i];
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
146 int index = param.indexOf("=");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
147 String key = param.substring(0, index);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
148 String value = param.substring(index + 1);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
149 if (key != null && value != null && ! key.isEmpty() && !value.isEmpty()) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
150 QName keyQName = new QName(key);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
151 XdmValue valueXdmValue = new XdmAtomicValue(value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
152 xsltTransformer.setParameter(keyQName, valueXdmValue);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
153 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
154 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
155 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
156 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
157
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
158 private void setOutputProperties(Serializer serializer, String outputPropertiesStr) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
159 if (outputPropertiesStr != null && ! outputPropertiesStr.equals("")) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
160 String[] outputProps = outputPropertiesStr.split(" ");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
161 for (int i=0; i<outputProps.length; i++) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
162 String prop = outputProps[i];
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
163 int index = prop.indexOf("=");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
164 String key = prop.substring(0, index).toLowerCase();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
165 String value = prop.substring(index + 1);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
166 if (key != null && value != null && ! key.isEmpty() && !value.isEmpty()) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
167 if (key.equals("method"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
168 serializer.setOutputProperty(Serializer.Property.METHOD, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
169 else if (key.equals("indent"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
170 serializer.setOutputProperty(Serializer.Property.INDENT, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
171 else if (key.equals("media-type"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
172 serializer.setOutputProperty(Serializer.Property.MEDIA_TYPE, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
173 else if (key.equals("omit-xml-declaration"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
174 serializer.setOutputProperty(Serializer.Property.OMIT_XML_DECLARATION, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
175 else if (key.equals("encoding"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
176 serializer.setOutputProperty(Serializer.Property.ENCODING, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
177 else if (key.equals("cdata-section-elements"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
178 serializer.setOutputProperty(Serializer.Property.CDATA_SECTION_ELEMENTS, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
179 else if (key.equals("version"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
180 serializer.setOutputProperty(Serializer.Property.VERSION, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
181 else if (key.equals("doctype-system"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
182 serializer.setOutputProperty(Serializer.Property.DOCTYPE_SYSTEM, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
183 else if (key.equals("doctype-public"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
184 serializer.setOutputProperty(Serializer.Property.DOCTYPE_PUBLIC, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
185 else if (key.equals("standalone"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
186 serializer.setOutputProperty(Serializer.Property.STANDALONE, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
187 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
188 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
189 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
190 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
191
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
192 private void setOutputProperties(Transformer transformer, String outputPropertiesStr) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
193 if (outputPropertiesStr != null && ! outputPropertiesStr.equals("")) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
194 String[] outputProps = outputPropertiesStr.split(" ");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
195 for (int i=0; i<outputProps.length; i++) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
196 String prop = outputProps[i];
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
197 int index = prop.indexOf("=");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
198 String key = prop.substring(0, index).toLowerCase();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
199 String value = prop.substring(index + 1);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
200 if (key != null && value != null && ! key.isEmpty() && !value.isEmpty()) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
201 if (key.equals("method"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
202 transformer.setOutputProperty(OutputKeys.METHOD, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
203 if (key.equals("indent"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
204 transformer.setOutputProperty(OutputKeys.INDENT, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
205 if (key.equals("media-type"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
206 transformer.setOutputProperty(OutputKeys.MEDIA_TYPE, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
207 if (key.equals("omit-xml-declaration"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
208 transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
209 if (key.equals("encoding"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
210 transformer.setOutputProperty(OutputKeys.ENCODING, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
211 else if (key.equals("cdata-section-elements"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
212 transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
213 else if (key.equals("version"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
214 transformer.setOutputProperty(OutputKeys.VERSION, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
215 else if (key.equals("doctype-system"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
216 transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
217 else if (key.equals("doctype-public"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
218 transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
219 else if (key.equals("standalone"))
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
220 transformer.setOutputProperty(OutputKeys.STANDALONE, value);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
221 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
222 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
223 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
224 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
225
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
226 private void getFragment(String xmlFileName, String ms1Name, int ms1Pos, String ms2Name, int ms2Pos) throws ApplicationException {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
227 try {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
228 StreamSource xmlDoc = new StreamSource(new StringReader("<?xml version=\"1.0\"?><bla/>"));
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
229 xmlDoc = new StreamSource(xmlFileName);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
230 Serializer serializer = new Serializer();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
231 serializer.setOutputWriter(new StringWriter());
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
232 serializer.setOutputProperty(Serializer.Property.INDENT, "yes");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
233 xsltTransformer.setSource(xmlDoc); // needs some time for bigger documents
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
234 xsltTransformer.setDestination(serializer);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
235 QName xmlFileNameQName = new QName("xmlFileName");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
236 XdmValue xmlFileNameXdmValue = new XdmAtomicValue(xmlFileName);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
237 QName ms1NameQName = new QName("ms1Name");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
238 XdmValue ms1NameXdmValue = new XdmAtomicValue(ms1Name);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
239 QName ms1PositionQName = new QName("ms1Position");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
240 XdmValue ms1PositionXdmValue = new XdmAtomicValue(ms1Pos);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
241 QName ms2NameQName = new QName("ms2Name");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
242 XdmValue ms2NameXdmValue = new XdmAtomicValue(ms2Name);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
243 QName ms2PositionQName = new QName("ms2Position");
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
244 XdmValue ms2PositionXdmValue = new XdmAtomicValue(ms2Pos);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
245 xsltTransformer.setParameter(xmlFileNameQName, xmlFileNameXdmValue);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
246 xsltTransformer.setParameter(ms1NameQName, ms1NameXdmValue);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
247 xsltTransformer.setParameter(ms1PositionQName, ms1PositionXdmValue);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
248 xsltTransformer.setParameter(ms2NameQName, ms2NameXdmValue);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
249 xsltTransformer.setParameter(ms2PositionQName, ms2PositionXdmValue);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
250 xsltTransformer.transform(); // needs some time for bigger documents
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
251 // String pageFragment = serializer.getOutputDestination().toString();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
252 // System.out.println(pageFragment);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
253 } catch (SaxonApiException e) {
23
e845310098ba diverse Korrekturen
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents: 18
diff changeset
254 throw new ApplicationException(e);
18
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
255 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
256 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
257
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
258 private String transformByTransformerFactory(String xmlString, String xslFileName, String parametersStr, String outputPropertiesStr) throws ApplicationException {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
259 String resultString = null;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
260 try {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
261 StreamSource xslSource = new StreamSource(xslFileName);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
262 Transformer transformer = TransformerFactory.newInstance(net.sf.saxon.TransformerFactoryImpl.class.getName(), null).newTransformer(xslSource);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
263 setOutputProperties(transformer, outputPropertiesStr);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
264 StreamResult result = new StreamResult(new StringWriter());
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
265 StreamSource source = new StreamSource(xmlString);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
266 transformer.transform(source, result);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
267 resultString = result.getWriter().toString();
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
268 } catch (TransformerConfigurationException e) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
269 throw new ApplicationException(e);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
270 } catch (TransformerException e) {
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
271 throw new ApplicationException(e);
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
272 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
273 return resultString;
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
274 }
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
275
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
276
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
277
dc5e9fcb3fdc Erstellung
Josef Willenborg <jwillenborg@mpiwg-berlin.mpg.de>
parents:
diff changeset
278 }