|
Duplicate :
|
|
|
Duplicate :
|
|
|
Duplicate :
|
|
|
Relates :
|
FULL PRODUCT VERSION :
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)
ADDITIONAL OS VERSION INFORMATION :
Windows XP, Linux Fedora core 4
A DESCRIPTION OF THE PROBLEM :
A DOM generated by code from a DocumentBuilder using DOM level 1 methods (createElement, etc) fails validation against an XML schema. This used to work in JDK 1.5. See attached test case.
See com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator, around line 1840:
fCurrentElemDecl = sGrammar.getGlobalElementDecl(element.localpart);
The localpart of the qname is used to lookup the root element; for an Element node created with Document.createElement, the local part is always null.
The same XML document read from a file and parsed with DocumentBuilder.parse does pass the validation.
Suspect this is related to bug id. 6465764. Raised it separately because this problem relates to validation of new documents.
Need a workround because we do this a lot.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run the test case with JDK 1.6, you get a validation error.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
No validation error
ACTUAL -
A validation error
ERROR MESSAGES/STACK TRACES THAT OCCUR :
cvc-elt.1: Cannot find the declaration of element 'root'.
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
import java.io.StringReader;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import org.w3c.dom.Document;
import org.xml.sax.SAXParseException;
public class validateerror {
private static final String XSD =
"<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>\n" +
" <xs:element name='root' type='xs:string'/>\n" +
"</xs:schema>";
public static void main(String ... args) throws Exception {
SchemaFactory fact = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = fact.newSchema(new StreamSource(new StringReader(XSD)));
DocumentBuilderFactory docfact = DocumentBuilderFactory.newInstance();
docfact.setNamespaceAware(true);
Document doc = docfact.newDocumentBuilder().newDocument();
doc.appendChild(doc.createElement("root"));
try {
schema.newValidator().validate(new DOMSource(doc));
} catch (SAXParseException e) {
System.out.printf("Validation failed: %s%n", e.getMessage());
}
}
}
---------- END SOURCE ----------
Release Regression From : 5.0u10
The above release value was the last known release where this
bug was not reproducible. Since then there has been a regression.
|