6 package de.uni_hamburg.corpora.utilities;
8 import java.io.StringWriter;
9 import java.util.HashMap;
11 import javax.xml.transform.Transformer;
12 import javax.xml.transform.TransformerConfigurationException;
13 import javax.xml.transform.TransformerException;
14 import javax.xml.transform.TransformerFactory;
15 import javax.xml.transform.stream.StreamResult;
16 import javax.xml.transform.stream.StreamSource;
17 import net.sf.saxon.Configuration;
18 import net.sf.saxon.serialize.MessageEmitter;
19 import net.sf.saxon.trans.XPathException;
30 private TransformerFactory tranformerFactory;
31 private Transformer transformer;
32 private String transformerFactoryImpl =
"net.sf.saxon.TransformerFactoryImpl";
33 private Map<String, Object> parameters =
new HashMap<>();
34 private Map<String, String> outputProperties =
new HashMap<>();
40 tranformerFactory = TransformerFactory.newInstance(transformerFactoryImpl, null);
47 public XSLTransformer(String impl)
throws TransformerConfigurationException {
48 transformerFactoryImpl = impl;
49 tranformerFactory = TransformerFactory.newInstance(transformerFactoryImpl, null);
61 public String
transform(String xml, String xsl)
throws TransformerException {
76 public String
transform(StreamSource xmlSource, StreamSource xslSource)
throws TransformerException {
77 final StringWriter messageOut =
new StringWriter();
80 if(xslSource != null){
81 transformer = tranformerFactory.newTransformer(xslSource);
84 ((net.sf.saxon.jaxp.TransformerImpl) transformer).getUnderlyingController().setRecoveryPolicy(Configuration.DO_NOT_RECOVER);
85 ((net.sf.saxon.jaxp.TransformerImpl) transformer).getUnderlyingController().setMessageEmitter(
new MessageEmitter() {
87 public void open()
throws XPathException {
88 setWriter(messageOut);
93 transformer = tranformerFactory.newTransformer();
97 for (Map.Entry<String, String> param : outputProperties.entrySet()) {
98 transformer.setOutputProperty(param.getKey(), param.getValue());
101 for (Map.Entry<String, Object> param : parameters.entrySet()) {
102 transformer.setParameter(param.getKey(), param.getValue());
106 StringWriter resultWriter =
new StringWriter();
107 transformer.transform(xmlSource,
new StreamResult(resultWriter));
108 result = resultWriter.toString();
110 }
catch (TransformerException e) {
112 String message = messageOut.toString();
113 System.out.println(
"MESSAGE: " + message);
114 throw new TransformerException(message, e);
129 public String
transform(StreamSource xmlSource)
throws TransformerException {
142 public String
transform(String xml)
throws TransformerException {
155 public void setParameter(String parameterName, Object parameterValue) {
156 parameters.put(parameterName, parameterValue);
176 return parameters.get(parameterName);
198 outputProperties.put(propertyName, propertyValue);
208 outputProperties = outputProps;
218 return outputProperties.get(propertyName);
229 return outputProperties;
240 transformerFactoryImpl = impl;
241 tranformerFactory = TransformerFactory.newInstance(transformerFactoryImpl, null);
252 return transformerFactoryImpl;
static StreamSource String2StreamSource(String s)