JDK-6626853 : Namespace problem when using DOMSource for schema validation
  • Type: Bug
  • Component: xml
  • Sub-Component: javax.xml.validation
  • Affected Version: 5.0
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2007-11-07
  • Updated: 2012-04-24
  • Resolved: 2007-11-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
1.3.0 1.3Fixed
Description
JAXP Issue 46: 

When a valid DOMSource is passed for schema validation, it doesn't find some
namespaces. Attaching a testcase for this. It works for the StreamSource but not
for DOMSource.

------- Additional comments from jitu Sat Oct 20 00:53:32 +0000 2007 -------

Created an attachment (id=14)
test case

------- Additional comments from spericas Mon Oct 22 19:02:16 +0000 2007 -------

I've created a unit test from the your test case, but it ran without any exceptions. I also printed out the 
DOM and noticed that it was identical to 'instance.xml'. What's the exception that you're getting? Can you 
try to install the latest JAXP on your JDK to see if you can reproduce the problem?

------- Additional comments from jitu Mon Oct 22 20:35:19 +0000 2007 -------

$ java -version
java version "1.5.0_12"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_12-b04)
Java HotSpot(TM) Server VM (build 1.5.0_12-b04, mixed mode)

$ java ValidatorTest
ERROR:  'UndeclaredPrefix: Cannot resolve 'ns2:toyota' as a QName: the prefix
'ns2' is not declared.'
Exception in thread "main" org.xml.sax.SAXParseException: UndeclaredPrefix:
Cannot resolve 'ns2:toyota' as a QName: the prefix 'ns2' is not declared.
        at
com.sun.org.apache.xerces.internal.jaxp.validation.Util.toSAXParseException(Util.java:109)
        at
com.sun.org.apache.xerces.internal.jaxp.validation.ErrorHandlerAdaptor.error(ErrorHandlerAdaptor.java:104)
        at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:382)
        at
com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
        at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:429)
        at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3185)
        at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.getAndCheckXsiType(XMLSchemaValidator.java:2485)
        at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1979)
        at
com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
        at
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.startElement(ValidatorHandlerImpl.java:335)
        at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:205)
        at
com.sun.org.apache.xml.internal.serializer.ToSAXHandler.flushPending(ToSAXHandler.java:291)
        at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.startElement(ToXMLSAXHandler.java:646)
        at
com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.startElement(ToXMLSAXHandler.java:501)
        at
com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:138)
        at
com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:215)
        at
com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:215)
        at
com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:121)
        at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:85)
        at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:615)
        at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:661)
        at
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:300)
        at
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.process(ValidatorImpl.java:220)
        at
com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:141)
        at javax.xml.validation.Validator.validate(Validator.java:82)
        at ValidatorTest.validate(ValidatorTest.java:46)
        at ValidatorTest.main(ValidatorTest.java:51)
[/home/jk144508/bugs/validation/case4]

I am using latest JDK. I will try using latest JAXP.

------- Additional comments from jitu Mon Oct 22 20:53:59 +0000 2007 -------

It works with JDK 1.6.0_03 but not with JDK 1.5.0_12
Many JAX-WS users use JDK 1.5.0

Comments
EVALUATION Fixed in jaxp1.3 jdk5 branch. Will be considered for future jdk5 releases.
08-11-2007