Thanks for replying, Michael,

That's what the error looks like, for sure, but this error only occurs on one machine, the other (devt) machine validates the document correctly against the schema. I know for sure, as it throws out about 4 errors (and rightly so) in regard to element data content in the xml document. Same JAR on one machine as the other.

I have been trying various methods, even using the following:

System.setProperty ("javax.xml.parsers.DocumentBuilderFactory", "org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                           factory.setNamespaceAware(true);
                           factory.setValidating(true);
factory.setAttribute("http://java.sun.com/xml/jaxp/properties/ schemaLanguage", "http://www.w3.org/2001/XMLSchema"; ); factory.setAttribute("http://java.sun.com/xml/jaxp/properties/ schemaSource", "file:my_schema.xsd");

                           DocumentBuilder builder 
=factory.newDocumentBuilder();

                           MySAXErrorHandler handler = new 
MySAXErrorHandler(log);
                           builder.setErrorHandler(handler);
                           builder.parse(XmlDocumentUrl);

The above again works on one, but chokes on another. This gave that very irritating error message saying it was one of three errors (this might benefit from some refinement).

I have just tried the following:

                           String language = XMLConstants.W3C_XML_SCHEMA_NS_URI;
                           SchemaFactory factory = 
SchemaFactory.newInstance(language);
                           handler = new MySAXErrorHandler(log);
        
                           factory.setErrorHandler(handler);
                           StreamSource ss = new StreamSource(new 
File(xmlSchema));
                           schema = factory.newSchema(ss);
                           validator = schema.newValidator();
                           validator.setErrorHandler(handler);
                           validator.validate(new StreamSource(XmlDocumentUrl));

which runs on one but throws out an error saying that the W3C string is a bad parameter as soon as I instantiate the factory on the other. This has set me experimenting with endorsed directories, which might be why the destination system, running 1.4.2 is having issues due to V1.3 JAXP libraries in my "Fat JAR" being ignored over those in the JVM. I think this is the solution, frankly. Note my development machine is also running 1.4.2.

That said, in each case it is a very vague error to issue if there is a library shortfall ! The last code fragment has enabled me to move forward purely because an exception is thrown right at the moment I instantiate the factory and so set me on the "endorsed directory" trail and away from the goose chase of URIs.

In one way unfair to criticise the library if this problem is due to my JAR arrangement (lack of endorsed directory setting) but on the other hand, the xerces library really should throw an exception if I am trying to set a property (e.g. schema location) that is not yet supported. What happens is it is in an unpredicatble state and then throws out very misleading errors. If the exception was thrown earlier, then it would have been more helpful. Again, this may well be due to the unfortunate hybrid JAR arrangement that existed, but if not, it might be worth visiting to ensure that things are thrown when they should be.

At least if someone else has this problem on 1.4.2, I would suggest they resolve the endorsed directories before progressing.

UPDATE: Endorsed directories do seem to resolve it. I am using the last fragment (compiling the schema and using a validator) as I often need to parse multiple documents of the same schema in quick succession.

NOTE: I just want to say, this issue aside, all the libraries I have used in this area - xerces, xpath and the jaxp are a pleasure to use in terms of how they are accessed, structured and most importantly to me, named. Very professional, IMHO.

Tim


On 14 Feb 2007, at 05:33, Michael Glavassevich wrote:

Hi Tim,

Tim Carpenter <[EMAIL PROTECTED]> wrote on 02/08/2007 09:50:34 PM:

Update:

I have managed to beat the system into finding my xsd file by using
the following:

urlStr = new String("my-schema.xsd"); // file is  local to the
APPLICATION not to the source files.
File xmlFile = new File(urlStr);
FileReader xmlfr = new FileReader(xmlFile);
InputSource inputSource = new InputSource(xmlfr);
parser.parse(inputSource);

Unfortunately, my schema, that begins with:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
elementFormDefault="qualified">

throws out the following when validating...

SEVERE: cvc-elt.1: Cannot find the declaration of element
'xs:schema'. at line number 2

Now, this works fine on another machine. The erroneous machine is
being accessed via FTP over the net, so it is a net-visible unit. It
appears not to be able to accurately locate the w3 definition...most
odd.

Any ideas on this or improvements to how I am getting access to my
schema?

Given the error message, it looks like you're trying to validate your
schema document instead of the instance document. Is that what you really
intended to do?

Tim

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

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

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



                
___________________________________________________________ Inbox full of spam? Get leading spam protection and 1GB storage with All New Yahoo! Mail. http://uk.docs.yahoo.com/nowyoucan.html

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

Reply via email to