따로 jar 파일을 import 할 필요없이, Java 5.0 버전 이상 부터는 javax.xml.validation 패키지가 도입되었습니다. 그로 인해 javax.xml.validation API 에서는 SchemaFactory, Schema 및 Validator라는 세 개의 클래스를 사용하여, 문서의 유효성을 검증합니다.

밑의 소스는 유효성을 할 기본 Validator 를 xsd 로 하여 xml 을 유효성 검사하는 소스입니다.

import java.io.*;

import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
import org.xml.sax.SAXException;

/**
 * Class Name : XSDCheck Description :
 * @author 젊은광대
 * @since 2012.11.29
 * @version 1.0
 */

public class XSDCheck {

	public static void main(String[] args) {
		// 1. W3C XML Schema language 객체를 생성하기 위한 API 검증용 Entry-point 입니다.
		SchemaFactory factory = SchemaFactory
				.newInstance("http://www.w3.org/2001/XMLSchema");

		String xsd = "C:\\xsd\\movie1.xsd"; // xsd 파일위치
		String xml = "C:\\xsd\\movies.xml"; // 유효성을 검사할 xml 파일위치

		File schemaLocation;
		Schema schema;
		Validator validator;
		try {
			// 2. 정의된 xsd 파일을 불러옵니다.
			schemaLocation = new File(xsd);
			schema = factory.newSchema(schemaLocation);
			// 3. 가져온 스키마로 유효성 검사 도구를 만듭니다.
			validator = schema.newValidator();

			// 4. xml 파일을 불러옵니다.
			Source source = new StreamSource(xml);

			// 5. 해당 xml 을 유효성을 검사합니다.
			validator.validate(source);

			System.out.println(xml + " is valid."); // 유효성 검사 성공

		} catch (IOException e) {
			System.out.println(xml + " is not found "); // 파일을 찾을 수 없습니다.
			System.out.println(e.getMessage()); // 실패한 원인에 대하여 설명합니다.
		} catch (SAXException e) {
			System.out.println(xml + " is not valid because "); // 유효성 검사 실패
			System.out.println(e.getMessage()); // 실패한 원인에 대하여 설명합니다.
		}
	}
}