001 package com.thaiopensource.validate.rng;
002
003 import com.thaiopensource.util.PropertyMap;
004 import com.thaiopensource.validate.auto.SchemaReceiver;
005 import com.thaiopensource.validate.auto.SchemaReceiverFactory;
006 import com.thaiopensource.relaxng.impl.SchemaReceiverImpl;
007 import com.thaiopensource.relaxng.parse.sax.SAXParseReceiver;
008 import com.thaiopensource.validate.ValidateProperty;
009 import com.thaiopensource.validate.Option;
010 import com.thaiopensource.xml.sax.XMLReaderCreator;
011 import com.thaiopensource.xml.util.WellKnownNamespaces;
012
013 import org.xml.sax.EntityResolver;
014 import org.xml.sax.ErrorHandler;
015
016 public class SAXSchemaReceiverFactory implements SchemaReceiverFactory {
017 public SchemaReceiver createSchemaReceiver(String namespaceUri,
018 PropertyMap properties) {
019 // XXX allow namespaces with incorrect version
020 if (!WellKnownNamespaces.RELAX_NG.equals(namespaceUri))
021 return null;
022 XMLReaderCreator xrc = ValidateProperty.XML_READER_CREATOR.get(properties);
023 ErrorHandler eh = ValidateProperty.ERROR_HANDLER.get(properties);
024 EntityResolver er = ValidateProperty.ENTITY_RESOLVER.get(properties);
025 return new SchemaReceiverImpl(new SAXParseReceiver(xrc, eh, er), properties);
026 }
027
028 public Option getOption(String uri) {
029 return RngProperty.getOption(uri);
030 }
031 }