I wrote a simple sax parser about a year ago that just runs through XML
files for no other purpose then validation of adherance to our schema. 
This worked great, but recently I have noticed that it only works if the
schema files are in CWD.  This was not always the case.  I noticed today
that if I run it from a CWD where the schema is not located I get a
warning about one of the files "included" from the schema.  

How can I coax the newer versions of Xerces to look for all of the
schema files in the the path specified by EXTERNAL_SCHEMA_PATH rather
then just pulling in the top level schema file from there and looking
for all of the included files in CWD?

Environment:
Sun Java SDK 1.4.1 on Linux
Xerces-j 2.3.0

The warning I get (/home/richard/dev/java/sax/ was CWD):
[Warning] :0:0: File
"file:///home/richard/dev/java/sax/sp_complex_types.xsd" not found

The entire schema is located in /home/richard/dev/import_spec.  The
sp.xsd file includes the sp_complex_types.xsd like so:
<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
 <xsd:include schemaLocation="sp_complex_types.xsd"/>


Here is how I set up the parser:

private static final String
    EXTERNAL_SCHEMA_PROPERTY =
"http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";;

public static void main (String args[])
    throws Exception
{
        String schema_path = "/home/richard/dev/import_spec/sp.xsd";
        XMLReader xr = new SAXParser();
        MySAXApp handler = new MySAXApp();

        xr.setContentHandler(handler);
        xr.setErrorHandler(handler);
        xr.setProperty(EXTERNAL_SCHEMA_PROPERTY, schema_path);
        xr.setFeature("http://xml.org/sax/features/validation",true);       
        xr.setFeature("http://apache.org/xml/features/validation/schema",true);
        
xr.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true
 );

...

-- 
Richard Rowell <[EMAIL PROTECTED]>


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

Reply via email to