Issue Details (XML | Word | Printable)

Key: XERCESJ-1163
Type: Bug Bug
Status: Resolved Resolved
Resolution: Won't Fix
Priority: Major Major
Assignee: Unassigned
Reporter: Steven Grossman
Votes: 1
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Xerces2-J

javax.xml.validation.Validator#validate implementation does not support a DOMSource argument

Created: 15/May/06 08:57 PM   Updated: 23/May/06 11:06 PM
Return to search
Component/s: JAXP (javax.xml.validation)
Affects Version/s: 2.8.0
Fix Version/s: None

Time Tracking:
Not Specified

Resolution Date: 23/May/06 12:26 PM


 Description  « Hide
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)

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
There are no subversion log entries for this issue yet.