javax.xml.validation.Validator#validate implementation does not support a
DOMSource argument
--------------------------------------------------------------------------------------------
Key: XERCESJ-1163
URL: http://issues.apache.org/jira/browse/XERCESJ-1163
Project: Xerces2-J
Type: Bug
Components: JAXP (javax.xml.validation)
Versions: 2.8.0
Reporter: Steven Grossman
Validator#validate implementation does not support a DOMSource argument. The
following SAXParseException is always thrown:
Exception in thread "main" org.xml.sax.SAXParseException: cvc-elt.1: Cannot
find the declaration of element 'xxx'.
The problem is not seen in the 1.5 jdk.
I've supplied a test class that succesfully validates an xml instance document
using a StreamSource and subsequently fails to perform the validation against a
DOMSource representation of the same xml.
import java.io.StringReader;
import java.io.IOException;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.dom.DOMSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.xml.sax.SAXException;
import org.xml.sax.InputSource;
import org.w3c.dom.Document;
public final class ValidatorBug {
private static final String SCHEMA =
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"
elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\">\n" +
" <xs:element name=\"root\"/>\n" +
"</xs:schema>";
private static final String XML = "<?xml version=\"1.0\"
encoding=\"UTF-8\"?><root/>";
public static void main(String[] args) throws SAXException, IOException,
ParserConfigurationException {
SchemaFactory schemaFactory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(new StreamSource(new
StringReader(SCHEMA)));
Validator validator = schema.newValidator();
System.out.println("\nvalidating stream source");
validator.validate(new StreamSource(new StringReader(XML))); // <---
WORKS
System.out.println("valid");
DocumentBuilderFactory documentBuilderFactory =
DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder =
documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new InputSource(new
StringReader(XML)));
System.out.println("\nvalidating DOM source");
validator.validate(new DOMSource(document)); // <--- PROBLEM
System.out.println("valid");
}
}
The exception:
Exception in thread "main" org.xml.sax.SAXParseException: cvc-elt.1: Cannot
find the declaration of element 'root'.
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.jaxp.validation.DOMValidatorHelper.beginNode(Unknown Source)
at
org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source)
at
org.apache.xerces.jaxp.validation.DOMValidatorHelper.validate(Unknown Source)
at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown
Source)
at javax.xml.validation.Validator.validate(Validator.java:82)
at ValidatorBug.main(ValidatorBug.java:42)
(This bug is represented by XERCESJ-1132 and XERCESJ-1161, but they were in the
wrong component)
--
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]