ilene 2003/06/17 12:08:37
Modified: java/src/org/apache/xalan/xsltc/dom LoadDocument.java
Log:
Patch for bugzilla #15828.
Arguments to URIResolver.resolve method for document function, in XSLTC are
now
href: argument passed to document function
base: URI of stylesheet
Revision Changes Path
1.19 +21 -26
xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java
Index: LoadDocument.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- LoadDocument.java 17 Jun 2003 19:05:54 -0000 1.18
+++ LoadDocument.java 17 Jun 2003 19:08:37 -0000 1.19
@@ -62,7 +62,6 @@
package org.apache.xalan.xsltc.dom;
-import java.io.File;
import java.io.FileNotFoundException;
import javax.xml.parsers.SAXParser;
@@ -77,6 +76,7 @@
import org.apache.xml.dtm.DTMAxisIterator;
import org.apache.xml.dtm.ref.DTMDefaultBase;
import org.apache.xml.dtm.ref.EmptyIterator;
+import org.apache.xml.utils.SystemIDResolver;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
@@ -137,12 +137,14 @@
throws TransletException {
try {
if (arg instanceof String) {
- if (((String)arg).length() == 0) {
- return document(xslURI, "", translet, dom);
- } else {
- return document((String)arg, getBaseFromURI(xslURI),
- translet, dom);
- }
+ String baseURI = xslURI;
+ if (!SystemIDResolver.isAbsoluteURI(xslURI))
+ baseURI =
SystemIDResolver.getAbsoluteURIFromRelative(xslURI);
+
+ String href = (String)arg;
+ if (href.length() == 0)
+ href = "";
+ return document(href, baseURI, translet, dom);
} else if (arg instanceof DTMAxisIterator) {
return document((DTMAxisIterator)arg, null, translet, dom);
} else {
@@ -150,6 +152,7 @@
throw new IllegalArgumentException(err);
}
} catch (Exception e) {
+ System.out.println("xslURI: " + xslURI);
throw new TransletException(e);
}
}
@@ -159,31 +162,21 @@
AbstractTranslet translet, DOM dom)
throws Exception
{
+ try {
final String originalUri = uri;
MultiDOM multiplexer = (MultiDOM)dom;
- // Return an empty iterator if the URI is clearly invalid
- // (to prevent some unncessary MalformedURL exceptions).
- if (uri == null || uri.equals("")) {
- return(EmptyIterator.getInstance());
- }
-
// Prepend URI base to URI (from context)
if (base != null && !base.equals("")) {
- if (!uri.startsWith(base) && // unless URI contains base
- !uri.startsWith("/") && // unless URI is abs. file
path
- !uri.startsWith("http:/") && // unless URI is abs. http URL
- !uri.startsWith("file:/")) { // unless URI is abs. file URL
- uri = base + uri;
- }
+ uri = SystemIDResolver.getAbsoluteURI(uri, base);
}
- // Check if this is a local file name
- final File file = new File(uri);
- if (file.exists()) {
- uri = file.toURL().toExternalForm();
+ // Return an empty iterator if the URI is clearly invalid
+ // (to prevent some unncessary MalformedURL exceptions).
+ if (uri == null || uri.equals("")) {
+ return(EmptyIterator.getInstance());
}
-
+
// Check if this DOM has already been added to the multiplexer
int mask = multiplexer.getDocumentMask(uri);
if (mask != -1) {
@@ -202,8 +195,7 @@
mask = multiplexer.nextMask(); // peek
if (cache != null) {
- //newdom = cache.retrieveDocument(originalUri, mask, translet);
- newdom = cache.retrieveDocument(uri, mask, translet);
+ newdom = cache.retrieveDocument(base, originalUri, translet);
if (newdom == null) {
final Exception e = new FileNotFoundException(originalUri);
throw new TransletException(e);
@@ -244,6 +236,9 @@
// Return a singleton iterator containing the root node
return new SingletonIterator(((SAXImpl)newdom).getDocument(), true);
+ } catch (Exception e) {
+ throw e;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]