You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xerces.apache.org by "Hunter, Francine" <Fr...@eLoyalty.com> on 2001/05/24 00:33:07 UTC

Can't get validation to work with 2000 Schema

Hi, I am trying to validate a XML document using Xerces against a 2000
schema

I am using XMLSPY 3.5 to create the documents which uses the 2000 standards.
I don't really know if this makes a difference. But I can't get the
validation to seem to recognize the Schema file at all.

Here is what the header of the files look like. Is this correct

XML file:
<?xml version="1.0" encoding="UTF-8"?>
<datamart xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="D:\Development\LOM 6.0 (Rio
Grande)\Resources\datamart.xsd">
	<dateDimension name="DATE_DIM" yearRange="10"
startDate="02/14/2000">
 ...

Schema file:
<!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com) by Greg Heidel
(eLoyalty) -->
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
elementFormDefault="qualified">
	<xsd:element name="datamart">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="table"
maxOccurs="unbounded">

		...

Are there any obvious mistakes here. 

The error message I get back is:

 message: Element type "datamart" must be declared.


Thanks. Any help  would be appreciated. 


Re: Can't get validation to work with 2000 Schema

Posted by Mary Ryan <mr...@stsci.edu>.
I just finished struggling with this same problem.  I had to change
several things to make it work.

You did not say which version of Xerces-J you are using.  I urge you to
download 1.4.0 to get the latest schema handling. I did, and my code
examples are based on using version 1.4.0.

My java file contains this code:
  DOMParser parser = new DOMParser();
  MyErrorHandler errHandler = new MyErrorHandler();
        
  try {
    
parser.setFeature("http://apache.org/xml/features/dom/defer-node-expansion",true);
     parser.setFeature("http://xml.org/sax/features/validation", true );
     parser.setFeature("http://xml.org/sax/features/namespaces", true );
    
parser.setFeature("http://apache.org/xml/features/validation/schema",true);
     parser.setErrorHandler(errHandler);
     parser.parse(xmlFile);

where "MyErrorHandler" is a Java class that I wrote which implements the
ErrorHandler interface.

I tested this using the personal-schema.xml and personal.xsd files that
come with the Xerces package.
My schema file contains this:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns='http://www.w3.org/2001/XMLSchema'>

XMLSpy creates schema which contain the string "2000/10", not "2001". 
You must edit the .xsd file to change this.

My .xml file contains this:

<?xml version="1.0" encoding="UTF-8"?>
<personnel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:noNamespaceSchemaLocation='personal.xsd'>

The parser apparently assumes that the schema is in the same directory
as the xml file.  If it is not, I had to fully qualify it like this:

          
xsi:noNamespaceSchemaLocation='file:///c:/xerces-1_4_0/data/personal.xsd'>

I had to do all these things (setFeatures, change "2000/10" to "2001",
and fully qualify the schema location) to get the validation to work. 
Good luck.

Mary Ryan
Space Telescope Science Institute
mryan@stsci.edu
-------------------------------------------------------------------------------------------

> "Hunter, Francine" wrote:
> 
> Hi, I am trying to validate a XML document using Xerces against a 2000
> schema
> 
> I am using XMLSPY 3.5 to create the documents which uses the 2000
> standards. I don't really know if this makes a difference. But I can't
> get the validation to seem to recognize the Schema file at all.
> 
> Here is what the header of the files look like. Is this correct
> 
> XML file:
> <?xml version="1.0" encoding="UTF-8"?>
> <datamart xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
> xsi:noNamespaceSchemaLocation="D:\Development\LOM 6.0 (Rio
> Grande)\Resources\datamart.xsd">
> 
>         <dateDimension name="DATE_DIM" yearRange="10"
> startDate="02/14/2000">
>  ...
> 
> Schema file:
> <!-- edited with XML Spy v3.5 NT (http://www.xmlspy.com) by Greg
> Heidel (eLoyalty) -->
> <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
> elementFormDefault="qualified">
>         <xsd:element name="datamart">
>                 <xsd:complexType>
>                         <xsd:sequence>
>                                 <xsd:element name="table"
> maxOccurs="unbounded">
> 
>                 ...
> 
> Are there any obvious mistakes here.
> 
> The error message I get back is:
> 
>  message: Element type "datamart" must be declared.
> 
> Thanks. Any help  would be appreciated.

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