Validating DocumentBuilder instance fails to parse more than one XML document.
------------------------------------------------------------------------------
Key: XERCESJ-1101
URL: http://issues.apache.org/jira/browse/XERCESJ-1101
Project: Xerces2-J
Type: Bug
Components: JAXP (javax.xml.parsers)
Versions: 2.7.0, 2.7.1
Reporter: Vojtech Habarta
Priority: Critical
When DocumentBuilder instance with W3C XML Schema validation is created using
JAXP 1.2 and is used for parsing it fails on second XML document.
Here is sample code snippet:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
Object[] schemaSource = new Object[] {
// it is important to pass schemas as InputStreams to prevent schemas
reparsing
ParsingTest.class.getResourceAsStream("ParsingTest.xsd"),
};
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",
schemaSource);
DocumentBuilder documentBuilder = factory.newDocumentBuilder();
documentBuilder.setErrorHandler(...);
documentBuilder.parse(new FileInputStream("C:\\ParsingTest.xml"));
System.out.println("OK");
documentBuilder.parse(new FileInputStream("C:\\ParsingTest.xml"));
System.out.println("OK");
When this code is run it throws this exception:
Exception in thread "main" org.xml.sax.SAXParseException: cvc-elt.1: Cannot
find the declaration of element 'A'.
at
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at
org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown
Source)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:76)
at test.ParsingTest.main(ParsingTest.java:34)
This code fail on Xerces 2.7.0 and 2.7.1. It works on Xerces 2.2.1, 2.3.0,
2.4.0, 2.5.0, 2.6.0, 2.6.1 and 2.6.2. It also works on jaxp 1.2.2, jaxp 1.3.1
and JDK 1.5.
This issue is very important for us because new validation API doesn't meet our
performance requirements and requires JAXP 1.3 compatible parser (is less
portable).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]