Les analyseurs XML XMLReader et SAXParser acceptent l'activation d'un processus de validation lors du chargment d'un ressource XML par rapport à une DTD, si la caractéristique http://xml.org/sax/features/validation est fixée à true par l'intermédairee de la méthode setFeature().

//Utilisation de XMLReader
import java.io.IOException;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;

public class Validation2 {
  public static void main(String[] args) {
    try {
      XMLReader analyseur = XMLReaderFactory.createXMLReader();
      analyseur.setFeature("http://xml.org/sax/features/validation", true);
      analyseur.setErrorHandler(new GestionnaireErreurs());
      analyseur.parse("ex.xml");
    }
    catch (SAXException e) {
      e.printStackTrace();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
  }
}

//Utilisation de SAXParser
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;

public class Validation2 {
  public static void main(String[] args) {
    try {
      SAXParserFactory fabrique = SAXParserFactory.newInstance();
      fabrique.setFeature("http://xml.org/sax/features/validation", true);
      SAXParser analyseur = fabrique.newSAXParser();
      DefaultHandler gestionnaire = new DefaultHandler() {
        public void error(SAXParseException exception) {
          System.out.println("ERREUR");
          exception.printStackTrace();
        }
        public void fatalError(SAXParseException exception) {
          System.out.println("ERREUR FATALE");
          exception.printStackTrace();
        }
        public void warning(SAXParseException exception) {
          System.out.println("AVERTISSEMENT");
          exception.printStackTrace();
        }
      };
      analyseur.parse("employes.xml", gestionnaire);
    }
    catch (SAXException e) {
      e.printStackTrace();
    }
    catch (IOException e) {
      e.printStackTrace();
    }
    catch (ParserConfigurationException e) {
      e.printStackTrace();
    }
  }
}

Si le document XML cible ne contient aucune DTD ou déclaration de DTD, deux exceptions sont lancées, indiquant que le document n'est pas valide puisqu'aucunes règles structurelles n'a pu être trouvées et que le nom de l'élément racine ne correspond pas à la valeur null symbolisant la carence de déclaration de type de document.

org.xml.sax.SAXParseException: 
    Document is invalid: no grammar found.
org.xml.sax.SAXParseException: 
    Document root element "element_racine", 
    must match DOCTYPE root "null".

Le gestionnaire d'erreurs assigné aux analyseurs capture les erreurs produites lors de la validation. Les exception précitées n'étant pas fatales pour le déroulement du programme, peuvent êre simplement ignorées en ne fournissant pas d'implémentation à la méthode error().