FYI, I did some testing on Sun JDK1.5.0_07 w/Xerces 2.8.0 on the Win32 
platform. If I set 
-Djavax.xml.validation.SchemaFactory:http://www.w3.org/2001/XMLSchema=org.apache.xerces.jaxp.validation.XMLSchemaFactory,
 the erroneous SAXParseException is generated. However, if I use the the 
default JDK 1.5 SchemaFactory, 
com.sun.org.apache.xerces.internal.jaxp.validation.xs.SchemaFactoryImpl, the 
problem disappears. I hope that helps isolate the problem. Does anyone have a 
suggested workaround for running on a 1.4 JDK?

Thanks in advance.

- Ron

----- Original Message ----
From: Ron Gavlin <[EMAIL PROTECTED]>
To: [email protected]
Sent: Thursday, September 14, 2006 3:24:56 PM
Subject: Bogus schema generated after multiple invocations of 
SchemaFactory.newInstance(W3C_...).newSchema(Source[] ...)

Greetings,
 
I am using Sun JDK1.4.2_11 w/Xerces 2.8.0 on the Win32 platform. 
 
I have the following sample code which works fine:
 
...
Source[] xsdSources = ...;
Document xmlDocument = ...;
Schema schema = 
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(xsdSources);
Validator validator = schema.newValidator();
validator.validate(new DOMSource(xmlDocument.getDocumentElement()));
 
If I modify the code to look like that listed below (note the add'l newSchema 
invocation), I receive the following SAXParseException: cvc-elt.1: Cannot find 
the declaration of element 'myGlobalElement'.
 
...
Source[] xsdSources=...;
Document xmlDocument = ...;
Schema schema = 
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(xsdSources);
schema = 
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(xsdSources);
Validator validator = schema.newValidator();
validator.validate(new DOMSource(xmlDocument.getDocumentElement()));
 
In the debugger, I noticed that the schema generated by the first newSchema 
invocation contains a SchemaGrammar whose fGlobalElemDecls contains entries for 
all my global elements. However, after the second newSchema invocation, the 
SchemaGrammar in the newly constructed schema has a fGlobalElemDecls data 
structure with all null entries. This would explain the SAXParseException in 
the second example above.
 
The schemas in my production application change on the fly. When one changes, I 
need to invoke newSchema to build a new Schema to use for validation. This is 
not working. 
 
Thanks in advance for your help.
 
- Ron

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





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

Reply via email to