001 package com.thaiopensource.relaxng.jarv; 002 003 import com.thaiopensource.validate.IncorrectSchemaException; 004 import com.thaiopensource.xml.sax.XMLReaderCreator; 005 import com.thaiopensource.relaxng.impl.SchemaBuilderImpl; 006 import com.thaiopensource.relaxng.impl.SchemaPatternBuilder; 007 import com.thaiopensource.relaxng.parse.Parseable; 008 import com.thaiopensource.relaxng.parse.sax.SAXParseable; 009 import com.thaiopensource.xml.sax.DraconianErrorHandler; 010 import com.thaiopensource.xml.sax.Jaxp11XMLReaderCreator; 011 import org.iso_relax.verifier.Schema; 012 import org.iso_relax.verifier.VerifierFactory; 013 import org.relaxng.datatype.DatatypeLibraryFactory; 014 import org.relaxng.datatype.helpers.DatatypeLibraryLoader; 015 import org.xml.sax.EntityResolver; 016 import org.xml.sax.ErrorHandler; 017 import org.xml.sax.InputSource; 018 import org.xml.sax.SAXException; 019 import org.xml.sax.helpers.DefaultHandler; 020 021 import java.io.IOException; 022 023 public class VerifierFactoryImpl extends VerifierFactory { 024 private final XMLReaderCreator xrc = new Jaxp11XMLReaderCreator(); 025 private final DatatypeLibraryFactory dlf = new DatatypeLibraryLoader(); 026 private final ErrorHandler eh = new DraconianErrorHandler(); 027 private final EntityResolver er = new DefaultHandler(); 028 029 public VerifierFactoryImpl() { } 030 031 public Schema compileSchema(InputSource is) throws SAXException, IOException { 032 SchemaPatternBuilder spb = new SchemaPatternBuilder(); 033 Parseable parseable = new SAXParseable(xrc, is, eh, er); 034 try { 035 return new SchemaImpl(SchemaBuilderImpl.parse(parseable, eh, dlf, spb, false), spb); 036 } 037 catch (IncorrectSchemaException e) { 038 throw new SAXException("unreported schema error"); 039 } 040 } 041 }