Relative URI resolving - no protocol error (very confusing) 2003-02-19 - By Thomas Cox
See http://nagoya.apache.org/bugzilla/show_bug.cgi?id305 for more discussion on the topic.
This was a change from 1.4 to 2.x that wasn't backward compatible - it broke our application, among others.
The good news is that there is a workaround. While I'm not fond of the inconsistencies in the current behavior, it's not a major problem.
- Thomas Cox
> -----Original Message----- > From: Erik_Vanherck@(protected) > [mailto:Erik_Vanherck@(protected)] > Sent: Wednesday, February 19, 2003 10:19 AM > To: xerces-j-user@(protected) > Subject: Relative URI resolving - no protocol error (very confusing) > > > Hi, since the xerces mailing list archives appear to be down, > I'm submitting my question here. Forgive me if it has been > asked a thousand times before ;-) I'm very confused as to how > relative URI's are treated by Xerces. Currently I'm using > xerces 2.2.1. > > I have an xml file containing a relative entity reference > > <!DOCTYPE fopconfig [ > <!ENTITY fontsconfig SYSTEM "fonts/config.xml"> > ]> > > I tried the following variations but it goes wrong no matter what. > > 1) file:/// > > There used to be file:///fonts/config.xml for xerces 1.4 > I admit it's plain wrong if you read the URI specifications > but it worked and so when switching to xerces 2.x I had no > problem writing file:fonts/config.xml since the previous one > would indicate the root of the filesystem of the current host. > > 2) file: > It works but unfortunately, there is a catch. Xerces does not > resolve this to the location of the xml file containing the > entity but against the "current directory" of the JVM. It > appears the file: URI scheme has no provisions for relative > URI's. This would explain the behavior since normally a > relative URI needs to be resolved against the base URI of the > document that contains the entity declaration. > > So there are good reasons why the two previous approaches > shouldn't work. But I can't find a good reason why the third doesn't > > 3) the relative URI as seen above. > Xerces does resolve the relative URI in function of the base > URI of the document which is exactly what I need and solves > all my other issues but for some reason it refuses to do so > when that base URI includes spaces (think about a filename on > windows). It gives an error on the relative URI of the entity > reference saying "no protocol" which I assume has something > todo with using java.net.URL inside Xerces. > > I'm using Xerces as a SAX parser using the > org.xml.sax.InputSource class with a system identifier. What > does that identifier need to look like to make this work ? > file:/path ? path ? path in urlencoded form (%20 and such) ? ...
For once I just want to know what I need to use in BOTH the entity reference AND for the inputsource system ID (which I assume gets used as base URI) to make it standard compliant and correctly read by xerces ?
Thanks for any input anyone has ;-)
---------
Erik Vanherck - System Programmer & Designer Inventive Designers Visit http://www.inventivedesigners.com Visist http://www.inventivedesigners.com/scriptura for Scriptura information !
Phone: +32 - 3 - 8210170 Fax: +32 - 3 - 8210171 Email: Erik_Vanherck@(protected)
"Computers in the future may weigh no more than 1.5 tons." - Popular Mechanics, forecasting the relentless march of science, 1949
--------------------------------------------------------------------- To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) For additional commands, e-mail: xerces-j-user-help@(protected)
--------------------------------------------------------------------- To unsubscribe, e-mail: xerces-j-user-unsubscribe@(protected) For additional commands, e-mail: xerces-j-user-help@(protected)
|
|