+ @Override\r
+ public Source resolve(String href, String base) throws TransformerException {\r
+ if (log.isTraceEnabled())\r
+ log.trace("Resolve URI for href=" + href + " base=" + base);\r
+\r
+ Source res = null;\r
+ if (isCache())\r
+ res = cacheUriResolver.get(href);\r
+\r
+ if (res == null)\r
+ res = getStylesheetSource(href);\r
+\r
+ if (res == null)\r
+ res = getStylesheetSource(getPrefix() + href);\r
+\r
+ if (res == null)\r
+ throw new SlcException("Can't resolve URI for href=" + href\r
+ + " base=" + base);\r
+\r
+ if (isCache() && !cacheUriResolver.containsKey(href))\r
+ cacheUriResolver.put(href, res);\r
+\r
+ return res;\r
+ }\r
+\r
+ protected Source getStylesheetSource(String url) {\r
+ if (log.isDebugEnabled()) {\r
+ log.debug("Loading XSLT stylesheet from '" + url + "'");\r
+ }\r
+ try {\r
+ final Resource stylesheetResource = getApplicationContext()\r
+ .getResource(url);\r
+ String systemId = url.substring(0, url.lastIndexOf('/') + 1);\r
+ return new StreamSource(stylesheetResource.getInputStream(),\r
+ systemId);\r
+ } catch (IOException e) {\r
+ if (log.isTraceEnabled())\r
+ log.trace("Cannot load stylesheet " + url, e);\r
+ return null;\r
+ }\r
+ }\r
+\r