public Source resolve ( String href , String base ) throws TransformerException { String uri = href ; int hashPos = href . indexOf ( "#" ) ; if ( hashPos >= 0 ) { uri = href . substring ( 0 , hashPos ) ; } String result = null ; if ( href != null && uriMap . containsKey ( href ) ) { result = ( String ) uriMap . get ( href ) ; } if ( result == null ) { try { URL url = null ; if ( base == null ) { url = new URL ( uri ) ; result = url . toString ( ) ; } else { URL baseURL = new URL ( base ) ; url = ( href . length ( ) == 0 ? baseURL : new URL ( baseURL , uri ) ) ; result = url . toString ( ) ; } } catch ( java . net . MalformedURLException mue ) { // try to make an absolute URI from the current base String absBase = makeAbsolute ( base ) ; if ( ! absBase . equals ( base ) ) { // don't bother if the absBase isn't different! return resolve ( href , absBase ) ; } else { throw new TransformerException ( "Malformed URL " + href + "(base " + base + ")" , mue ) ; } } } SAXSource source = new SAXSource ( ) ; source . setInputSource ( new InputSource ( result ) ) ; return source ; }
Transformer resolve API .