// Validate xml via known dtd ... Eclipse XML Example Invoice ... http://www.roseindia.net/xml/dom/DOMValidateDTD.shtml import java.io.*; import org.w3c.dom.*; import org.xml.sax.*; import javax.xml.parsers.*; import javax.xml.validation.*; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import javax.xml.transform.stream.StreamResult; public class XMLPlusDTDValidate { public static void main(String args[]) { try { DocumentBuilderFactory fctry = DocumentBuilderFactory.newInstance(); fctry.setValidating(true); DocumentBuilder docbld = fctry.newDocumentBuilder(); docbld.setErrorHandler(new org.xml.sax.ErrorHandler() { // Ignore any fatal errors public void fatalError(SAXParseException exception)throws SAXException { } // Report on any validation errors public void error(SAXParseException ex)throws SAXParseException { System.out.println("Validation problem at " +ex.getLineNumber() + " line."); System.out.println(ex.getMessage()); System.exit(0); } //Show any warnings public void warning(SAXParseException xerr) throws SAXParseException { System.out.println(xerr.getMessage()); System.exit(0); } }); Document xmlDoc = docbld.parse(new FileInputStream("Invoice.xml")); DOMSource domsource = new DOMSource(xmlDoc); StreamResult domresult = new StreamResult(System.out); TransformerFactory tfmrfctry = TransformerFactory.newInstance(); Transformer tfmrfctrymr = tfmrfctry.newTransformer(); tfmrfctrymr.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "Invoice.dtd"); tfmrfctrymr.transform(domsource, domresult); } catch (Exception exx) { System.out.println(exx.getMessage()); } } }