/*
- * Copyright 2005-2010 the original author or authors.
+ * Copyright 2005-2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* URI resolver that resolves stylesheets through the classpath.
*/
public class ClasspathUriResolver implements URIResolver, LSResourceResolver {
+
+ private String base;
+
/**
* Constructs the resolver.
*
*/
public ClasspathUriResolver() {
- // Empty.
+ base = null;
+ }
+
+ /**
+ * Location in the classpath relative to which resolution takes place.
+ * @param aBase Base.
+ */
+ public ClasspathUriResolver(String aBase) {
+ base = aBase;
}
/*
*/
public Source resolve(String aHref, String aBase)
throws TransformerException {
- InputResource xslt = new ClassPathResource(aHref);
+
+ InputResource xslt = resolveImpl(aHref);
try {
return new StreamSource(xslt.getInputStream());
}
}
+ private InputResource resolveImpl(String aHref) {
+ String systemId = aHref;
+ if ( base != null ) {
+ systemId = base + "/" + aHref;
+ }
+ InputResource xslt = new ClassPathResource(systemId);
+ return xslt;
+ }
+
@Override
public LSInput resolveResource(String aType, String aNamespaceURI,
String aPublicId, String aSystemId, String aBaseURI) {
try {
- InputStream xslt = new ClassPathResource(aSystemId)
- .getInputStream();
+ InputStream xslt = resolveImpl(aSystemId).getInputStream();
DOMImplementationLS impl = DomUtils.getDomImplementationLS();
LSInput input = impl.createLSInput();
input.setPublicId(aPublicId);