XMLOutputter verwenden ohne JDOMResult

zer0

Erfahrenes Mitglied
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:

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();
		}
 
Zurück