Hello Huw, In Xerces 2.6.2 (probably dating back to 2.6.0) there was a bug [1] affecting the schema location properties which caused their values to be ignored on subsequent parses if the parser configuration isn't changed. The problem has been fixed in CVS.
[1] http://issues.apache.org/jira/browse/XERCESJ-994 "Huw Roberts" <[EMAIL PROTECTED]> wrote on 12/22/2004 08:10:33 PM: > Hi All, > I'm having some trouble re-using an XMLReader that I am asking to > validate some XML against a schema. > An example of the sort of code I'm using is as follows: > //... > XMLReader xmlReader = XMLReaderFactory.createXMLReader("org. > apache.xerces.parsers.SAXParser"); > xmlReader.setFeature("http://apache.org/xml/features/validation/schema > ", true); > xmlReader.setFeature("http://xml.org/sax/features/validation", true); > xmlReader.setProperty("http://apache. > org/xml/properties/schema/external-noNamespaceSchemaLocation", > "/com/iris/csl/service/services.xsd"); > EntityResolver resolver = new XmlElementUtil. > JavaResourceEntityResolver(xmlReader.getClass().getClassLoader()); > xmlReader.setEntityResolver(resolver); > ErrorHandler errorHandler = new XmlChecker.BasicErrorHandler(); > xmlReader.setErrorHandler(errorHandler); > InputSource inputSource; > System.out.println("parse one"); > inputSource = new InputSource(new StringReader("<CSLSystem/>")); > xmlReader.parse(inputSource); > System.out.println("parse two"); > inputSource = new InputSource(new StringReader("<CSLSystem/>")); > xmlReader.parse(inputSource); > //... > > Interesting features of this code are: > 1. The XmlChecker.BasicErrorHandler simply prints > errors/warnings/fatal to stdout > 2. I get different error messages from the two calls to xmlReader.parse: > parse one > org.xml.sax.SAXParseException: cvc-complex-type.2.4.b: The > content of element 'CSLSystem' is not complete. One of '{"":type, > "":configuration}' is expected. > parse two > org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the > declaration of element 'CSLSystem'. > 3. I have a custom entity resolver which is only called during the > first call to parse. > 4. Is it conceivable that the problem might be in org.apache. > xerces.impl.xs.XMLSchemaValidator.findSchemaGrammar? > It appears to call XMLSchemaLoader.resolveDocument only the > first time, yet it appears not to be able to find the schema > declaration on subsequent calls...? > > Thanks all, > Huw > 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]