String absolutize(String baseURI, String systemId, boolean nice)
            throws MalformedURLException, SAXException {
        // FIXME normalize system IDs -- when?
        // - Convert to UTF-8
        // - Map reserved and non-ASCII characters to %HH

        try {
            if (baseURI == null) {
                if (XmlParser.uriWarnings) {
                    warn("No base URI; hope this SYSTEM id is absolute: "
                            + systemId);
                }
                return new URL(systemId).toString();
            } else {
                return new URL(new URL(baseURI), systemId).toString();
            }
        } catch (MalformedURLException e) {
            // Let unknown URI schemes pass through unless we need
            // the JVM to map them to i/o streams for us...
            if (!nice) {
                throw e;
            }

            // sometimes sysids for notations or unparsed entities
            // aren't really URIs...
            warn("Can't absolutize SYSTEM id: " + e.getMessage());
            return systemId;
        }
    }
<b>SAX2</b>: Assigns the specified property. Like SAX1 handlers, these
may be changed at any time.
src/nu/validator/gnu/xml/aelfred2/SAXDriver.java