Xerces2-J
  1. Xerces2-J
  2. XERCESJ-1163

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

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 2.8.0
    • Fix Version/s: None
    • Labels:
      None

      Description

      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)

        Activity

        No work has yet been logged on this issue.

          People

          • Assignee:
            Unassigned
            Reporter:
            Steven Grossman
          • Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development