001 package com.thaiopensource.relaxng.parse.sax; 002 003 import com.thaiopensource.xml.sax.XMLReaderCreator; 004 import com.thaiopensource.relaxng.parse.BuildException; 005 import com.thaiopensource.relaxng.parse.IllegalSchemaException; 006 import com.thaiopensource.relaxng.parse.Parseable; 007 import com.thaiopensource.relaxng.parse.ParsedPattern; 008 import com.thaiopensource.relaxng.parse.SchemaBuilder; 009 import com.thaiopensource.relaxng.parse.Scope; 010 011 import org.xml.sax.EntityResolver; 012 import org.xml.sax.ErrorHandler; 013 import org.xml.sax.InputSource; 014 import org.xml.sax.SAXException; 015 import org.xml.sax.XMLReader; 016 017 import java.io.IOException; 018 019 public class SAXParseable extends SAXSubParser implements Parseable { 020 private final InputSource in; 021 022 public SAXParseable(XMLReaderCreator xrc, InputSource in, ErrorHandler eh, EntityResolver er) { 023 super(xrc, eh, er); 024 this.in = in; 025 } 026 027 public ParsedPattern parse(SchemaBuilder schemaBuilder, Scope scope) throws BuildException, IllegalSchemaException { 028 try { 029 XMLReader xr = xrc.createXMLReader(); 030 SchemaParser sp = new SchemaParser(xr, eh, er, schemaBuilder, null, scope); 031 xr.parse(in); 032 return sp.getParsedPattern(); 033 } 034 catch (SAXException e) { 035 throw toBuildException(e); 036 } 037 catch (IOException e) { 038 throw new BuildException(e); 039 } 040 } 041 042 }