• 0.19

How to validate XML with XSD Schema

You need one class XSDDocument which implements XSD interface. It works with your default DOM implementation. For example:

import com.jcabi.xml.XSDDocument;
import java.util.Collection;
import javax.xml.transform.stream.StreamSource;
import org.apache.commons.io.IOUtils;
import org.xml.sax.SAXParseException;
public class Main {
  public void main(String[] args) {
    String xsd = "<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>",
      + "<xs:element name='payments'/>",
      + "</xs:schema>";
    Collection<SAXParseException> errors = new XSDDocument(xsd).validate(
      new StreamSource(
        IOUtils.toInputStream(
          "<orders><order id="4">Coffee to go</order></orders>",
          "UTF-8"
        )
      )
    );
    if (errors.isEmpty()) {
      System.out.println("XML is valid");
    } else {
      System.out.println("XSD validation failed: " + errors);
    }
  }
}