//customers.dtd <!ELEMENT customers (customer+)> <!ELEMENT customer (name, email, phone)> <!ELEMENT name (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT phone (#PCDATA)> //external_dtd.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE customers SYSTEM "customers.dtd"> <customers> <customer> <name>Satyam Nayak</name> <email>Satyam@nayak.com</email> <phone>122-112-1234</phone> </customer> <customer> <name>Sonu N</name> <email>Sonu@N.com</email> <phone>112-554-9969</phone> </customer> </customers> //ValidateExternalDTD.java import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.xml.sax.SAXException; import java.io.File; import java.io.IOException; public class ValidateExternalDTD { public static void main(String[] args) { try { File xmlFile = new File("external_dtd_example.xml"); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); dbFactory.setValidating(true); // Enable validation DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); dBuilder.setErrorHandler(new SimpleErrorHandler()); Document doc = dBuilder.parse(xmlFile); doc.getDocumentElement().normalize(); System.out.println("XML is valid with External DTD."); } catch (ParserConfigurationException | SAXException | IOException e) { System.out.println("XML is invalid: " + e.getMessage()); } } }