|
Hello Experts, While using the resolver, I came across this following observation which I wanted to clarify with you. For the following Catalog file (public_cat.xml) <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system"> <system systemId="http://www.example.relative.com/existing/namespace" uri="xsdcollection/existingxsd.xsd"/> </catalog> resolver resolves uri "http://www.example.relative.com/existing/namespace" to "<URI to absolute parent dir of public_cat.xml>/xsdcollection/existingxsd.xsd" which is as expected. So, the result on Unix is "file:/home/gb133050/temp/xsdcollection/existingxsd.xsd" where public_cat.xml exists @ "file:/home/gb133050/temp/public_cat.xml". Note the hierarchical path to "existingxsd.xsd" in the result. Issue arises when I run the same thing on Windows platform. The result on windows is "file:D:/workdloads/xsdcollection/existingxsd.xsd" where public_cat.xml exists @ "file:D:/workdloads/public_cat.xml". Note the missing "/" @ the starting of the result string "file:/D:/work...". Though for human eyes this is very much valid, JAVA treats this path as relative path (an opaque URI). So, if I construct a new File object (File newFile = new File(new URI(result));) I will get the following exception: Exception in thread "main" java.lang.IllegalArgumentException: URI is not hierarchical at java.io.File.<init>(File.java:335) at javaapplication1.Main.main(Main.java:37) This exception occurs because of the missing "/" @ the front. So, I observe a difference in behavior between Windows and Unix. Is this observation intended behavior or is it a bug? Any light on this would be really helpful. Please reply to me directly. Thanks much, -Girish |
