Hallo,
ich möchte eine XSL Transformation durchführen. Dies hat auch bis jetzt immer geklappt, nur meine HTMl Datei wo rauskam war nie schön formatiert. Dann bin ich auf den XMLOutputter getsoßen mit dem ich mittels Format.getPrettyFormat() eine schöne Formatierung erhalte. Das Problem nur, sobald mein Stylesheet DTD Informationen enthält, also:
Kommt diese Fehlermeldung:
Ich glaube das, dass von JDOMResult ausgelöst wird, gibt es den eine Lösung sodass ich auf XMLOutputter nicht verzichten muss?
ich möchte eine XSL Transformation durchführen. Dies hat auch bis jetzt immer geklappt, nur meine HTMl Datei wo rauskam war nie schön formatiert. Dann bin ich auf den XMLOutputter getsoßen mit dem ich mittels Format.getPrettyFormat() eine schöne Formatierung erhalte. Das Problem nur, sobald mein Stylesheet DTD Informationen enthält, also:
Code:
<xsl:output indent="yes" method="html" doctype-system="http://www.w3.org/TR/html4/strict.dtd" doctype-public="-//W3C//DTD HTML 4.01//EN" />
Kommt diese Fehlermeldung:
Code:
FEHLER: 'A DocType cannot be added after the root element'
Exception in thread "main" org.jdom.transform.XSLTransformException: Could not perform transformation: org.jdom.IllegalAddException: A DocType cannot be added after the root element
at org.jdom.transform.XSLTransformer.transform(XSLTransformer.java:259)
at org.jdom.transform.XSLTransformer.transform(XSLTransformer.java:239)
at XSLTransform.main(XSLTransform.java:78)
Caused by: javax.xml.transform.TransformerException: org.jdom.IllegalAddException: A DocType cannot be added after the root element
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:717)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:313)
at org.jdom.transform.XSLTransformer.transform(XSLTransformer.java:255)
... 2 more
...
...
Ich glaube das, dass von JDOMResult ausgelöst wird, gibt es den eine Lösung sodass ich auf XMLOutputter nicht verzichten muss?
Java:
try {
SAXBuilder builder = new SAXBuilder();
Document document = builder.build(xmlDoc);
Source xmlSource = new JDOMSource(document);
Source xslSource = new StreamSource(xslDoc);
JDOMResult Result = new JDOMResult();
FileOutputStream output = new FileOutputStream(savePath);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(xslSource);
transformer.transform(xmlSource, Result);
XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
xmlOutputter.output(Result.getDocument(), output);
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}