001 package com.thaiopensource.validate.schematron;
002
003 import java.io.IOException;
004 import java.net.MalformedURLException;
005 import java.net.URL;
006
007 import javax.xml.transform.Source;
008 import javax.xml.transform.TransformerException;
009 import javax.xml.transform.URIResolver;
010 import javax.xml.transform.sax.SAXSource;
011
012 import org.xml.sax.EntityResolver;
013 import org.xml.sax.SAXException;
014
015 import com.thaiopensource.xml.sax.XMLReaderCreator;
016
017 class SAXURIResolver implements URIResolver {
018
019 private final XMLReaderCreator xrc;
020
021 private final EntityResolver er;
022
023 public SAXURIResolver(XMLReaderCreator xrc, EntityResolver er) {
024 this.xrc = xrc;
025 this.er = er;
026 }
027
028 public Source resolve(String href, String base) throws TransformerException {
029 try {
030 return new SAXSource(xrc.createXMLReader(), er.resolveEntity(null,
031 new URL(new URL(base), href).toString()));
032 } catch (MalformedURLException e) {
033 throw new TransformerException(e);
034 } catch (SAXException e) {
035 throw new TransformerException(e);
036 } catch (IOException e) {
037 throw new TransformerException(e);
038 }
039 }
040 }