import java.io.File;import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;public class TestSchema {    /**
     * 使用xsd验证xml
     * 
     * @param xmlfilename
     *            String xml文件 包括路径
     * @param xsdfilename
     *            String xsd文件 包括路径
     * @param validatesuccess
     *            boolean 是否验证成功 成功返回true,
     * @return boolean 成功返回true 失败返回false
     */
    public boolean validatexmlbyxsd(String xmlfilename, String xsdfilename,
            boolean validatesuccess) {        File xmlfile = new File(xmlfilename);
        File xsdfile = new File(xsdfilename);
        // 检测原文件和验证文件是否存在
        if (!((xmlfile.exists()) && (xsdfile.exists())))
            return false;
        final String SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
        final String XML_SCHEMA = "http://www.w3.org/2001/XMLSchema";
        final String SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setNamespaceAware(true);
        factory.setValidating(true);        try {
            SAXParser parser = factory.newSAXParser();
            parser.setProperty(SCHEMA_LANGUAGE, XML_SCHEMA);
            parser.setProperty(SCHEMA_SOURCE, xsdfile);            XMLReader xmlReader = parser.getXMLReader();
            xmlReader.setContentHandler(new DefaultHandler());
            xmlReader.setErrorHandler(new MyErrorHandler(System.out));
            xmlReader.parse("file:/D:/test/xml/test4.xml");            validatesuccess = true;
        } catch (Exception ex) {
            ex.printStackTrace();
            validatesuccess = false;
        }
        return validatesuccess;
    }    public static void main(String[] args) {
        boolean b = new TestSchema().validatexmlbyxsd("test4.xml", "test4.xsd",
                false);
        System.out.println(b);
    }
}上面的例子可以在jdk1.5中通过