You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by bu...@apache.org on 2002/04/03 23:01:26 UTC

DO NOT REPLY [Bug 7735] New: - Schema validation errors with xmlns attributes

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7735>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7735

Schema validation errors with xmlns attributes

           Summary: Schema validation errors with xmlns attributes
           Product: Xerces2-J
           Version: 2.0.1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: XML Schema Structures
        AssignedTo: xerces-j-dev@xml.apache.org
        ReportedBy: dennison@mitec.net
                CC: dennison@mitec.net


I am using JDOM beta 8 and xerces underneath to build a validating parser for 
some xml and schema files.  Previously, I was using JDOM beta 7 with xerces 
1.3.1.  I have a schema with the following as the start of the definition:

<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
	targetNamespace="http://www.mitec.net/~dennison/mud/v1"
	xmlns="http://www.mitec.net/~dennison/mud/v1"
	elementFormDefault="qualified">
...

I have an XML file with the following as the root element:

<jmud xmlns="http://www.mitec.net/~dennison/mud/v1"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
xsi:schemaLocation="http://www.mitec.net/~dennison/mud/v1 
C:\projects\jmud\src\content\xsd\jmud.xsd">
...

I am using qualified namespaces and no problems with validation under xerces 
1.3.1.  Upon upgrading to 2.0.1 I encountered two errors.  The first error:

org.xml.sax.SAXParseException: Document root element "jmud", must match DOCTYPE 
root "null".
        at org.apache.xerces.parsers.AbstractSAXParser.parse
(AbstractSAXParser.java:1163)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:354)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:673)
        at net.mitec.dennison.app.jmud.parse.ParseConfigFile.buildDocument
(ParseConfigFile.java:285)
...

I resolved this problem by adding the following line of code in my source code:

        builder.setFeature("http://apache.org/xml/features/validation/schema", 
true);

Why is it necessary to add this line and why doesn't xerces recognize that a 
schema is being used for validation?

The next error I received was this:

org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of 
element 'jmud'.
        at org.apache.xerces.parsers.AbstractSAXParser.parse
(AbstractSAXParser.java:1163)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:354)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:673)
...

It turns out this problem involves the xmlns attribute:
In the schema:  <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" ...
In the xml:  <jmud xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" ...

Changing those lines in the schema and XML to:
In the schema: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" ...
In the xml:  <jmud xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...

fixes the problem.  Are we required to change all schemas and xml files to the 
2001 namespaces to use xerces 2.0.1?

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org