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 }