[ http://issues.apache.org/jira/browse/XERCESJ-1101?page=all ]
Michael Glavassevich reassigned XERCESJ-1101:
---------------------------------------------
Assign To: Michael Glavassevich
> 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
> Assignee: Michael Glavassevich
> Priority: Critical
> Attachments: ParsingTest.java, ParsingTest.xml, ParsingTest.xsd
>
> 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]