Hi,

When exactly does the XSD loader use the parser's entity resolver and when 
does it not?

My XML editor downloads and caches schemas to minimize network activity. The 
problem I am having is with schemas that include other schemas using 
<xs:include>, for example:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified" version="1.0">
  <xs:include schemaLocation="dbnotn.xsd"/>
  <xs:include schemaLocation="dbcent.xsd"/>
  <xs:include schemaLocation="dbpool.xsd"/>
  <xs:include schemaLocation="dbhier.xsd"/>
</xs:schema>

The first time a file referencing an http: schema is opened, my custom entity 
resolver  downloads and saves the schema to a local file named, say 
/home/slava/.jedit/dtds/cache39516.xml. Then each of of the <xs:include>'ed 
files is passed to the entity resolver, and correspondingly downloaded and 
cached. So far, so good.

The second time a file referencing this schema is opened, the top-level file 
is resolved correctly from the cache. Unfortunately, Xerces then attempts to 
look for files named "dbnotn.xsd", "dbcent.xsd", "dbpool.xsd" and 
"dbhier.xsd" in the current directory, instead of passing these path names to 
the entity resolver. This is wrong. Why does it behave differently in this 
case, just because the top-level file is a local file? Why doesn't it 
_always_ pass all path names to the entity resolver?
-- 
Slava Pestov

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to