W3C home > Mailing lists > Public > xmlschema-dev@w3.org > January 2007

RE: XML Schema validation doesnt throw some basic errors?

From: Michael Kay <mike@saxonica.com>
Date: Wed, 10 Jan 2007 22:38:57 -0000
To: "'Manoj Madhavan'" <manoj_madhavan@freddiemac.com>
Cc: <xmlschema-dev@w3.org>
Message-ID: <029c01c73508$1dfe15f0$6401a8c0@turtle>
As I said before, I don't think any processor is going to give you more than
one error message in respect of the content of a single element. You say
that you want to see the message "Element1 is missing" and it seems to me
that the error message you get does say that, though perhaps it also gives
you extra information which you didn't want.
 
What happens if you have two elements in your document whose content is
wrong? for example:
 
<?xml version="1.0"?> 
<test:Root xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
           xmlns:test="http://www.my.com/test" 
           xs:schemaLocation="http://www.my.com/test test.xsd"> 
        <Data> 
                <Element3>value2</Element3> 
        </Data> 
        <Data> 
                <Element4>value2</Element4> 
        </Data>         
</test:Root> 
 
I would think that in this case it is reasonable to expect two errors to be
reported.
 
Michael Kay
http://www.saxonica.com/


  _____  

From: Manoj Madhavan [mailto:manoj_madhavan@freddiemac.com] 
Sent: 10 January 2007 21:56
To: Michael Kay
Cc: xmlschema-dev@w3.org
Subject: RE: XML Schema validation doesnt throw some basic errors?



Thanks for your response Kay . 

1.  I am using xerces 2.9 and I can see that this version infact doesnt tell
me the list of all missing elements instead as I mentioned before, it gives
me only the first occurance. Agreed that the schema would be validated
eventually if I trigger validation again and again, but I would like to see
all errors at once so that fixing the instance document is less time
consuming. What I see is that implementation doesnt do that by default. So
is there a way I can specify additional contraints in my schema(this could
be something like specifying the minimum valid elements to be present for a
instance document to be valid) to force the schema validations to fire for
every element? 

For example. With the below  schema and xml, I would like to see an error
saying "Element1 is missing". 
Currently when I run the test class I get only 1 error which is "
Message=cvc-complex-type.2.4.a: Invalid content was found starting with
element 
 'Element3'. One of '{Element1}' is expected." 

Schema: 
<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
                      xmlns:test="http://www.my.com/test" 
                      targetNamespace="http://www.my.com/test" 
                      elementFormDefault="unqualified"> 
<xs:complexType name="DataType"> 
        <xs:sequence> 
                <xs:element name="Element1" type="xs:string"/>         
                <xs:element name="Element2" type="xs:string"/>         
        </xs:sequence> 
</xs:complexType> 
<xs:complexType name="RootType"> 
        <xs:sequence> 
                <xs:element name="Data" type="test:DataType"
maxOccurs="unbounded"/> 
        </xs:sequence> 
</xs:complexType> 
<xs:element name="Root" type="test:RootType"/> 
</xs:schema>             
          
xml: 
<?xml version="1.0"?> 
<test:Root xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 
           xmlns:test="http://www.my.com/test" 
           xs:schemaLocation="http://www.my.com/test test.xsd"> 
        <Data> 
                <Element3>value2</Element3> 
        </Data> 
</test:Root> 


2. Regarding the second point I mentioned, it was a mistake at my end. I
could see that an error saying <junk> is not valid element.   


Thanks 
Manoj 




   "Michael Kay" <mike@saxonica.com> 


   01/10/2007 03:38 PM 


To
"'MM'" <manoj_madhavan@freddiemac.com>, <xmlschema-dev@w3.org> 

cc

Subject
RE: XML Schema validation doesnt throw some basic errors?

	




> 1) If a complex type has 10 elements which are defined as 
> mandatory in my schema. In my xml instance if I put only the 
> 10th element, on validating this against the schema, I get 
> only 1 error saying that 'found {10th element} while 
> expecting 9th element.
> It doent say that the other 8 elements were missing. I've 
> enabled full-schema-checking. I want to collect all errors at 
> one go and dont want to get one error at a time. Is there a 
> way to achieve this?

I would think it unlikely that any implementation will give you more that
one error message for a sequence of sibling elements that doesn't match the
content model of the parent element. But error reporting depends entirely on
the implementation so you would be better off asking on a product-specific
list.



> 2) If i put a junk element which is not at all defined in the 
> schema just before closing my <root> tag, the schem 
> validation doesnt catch this. For
> eg: in the below xml
> <root>
>   <element_defined_in_schema_1>..</element_defined_in_schema_1>
>   ....
>   ....
>   <element_not_defined_in_schema>junk</element_not_defined_in_schema>
> </root>
> 
> schema validation doesnt throw an error saying that 
> "element_not_defined_in_schema" is not a valid one.
> 

My instinct is to say: prove it. Given that you haven't shown us the
evidence (full schema and instance document), my guess is that it's more
likely you have made a mistake than that Xerces has got this wrong.

Michael Kay
http://www.saxonica.com/



Thanks
Manoj
703-388-7496 | 2N / U12A 



   "Michael Kay" <mike@saxonica.com> 


   01/10/2007 03:38 PM 


To
"'MM'" <manoj_madhavan@freddiemac.com>, <xmlschema-dev@w3.org> 

cc

Subject
RE: XML Schema validation doesnt throw some basic errors?

	




> 1) If a complex type has 10 elements which are defined as 
> mandatory in my schema. In my xml instance if I put only the 
> 10th element, on validating this against the schema, I get 
> only 1 error saying that 'found {10th element} while 
> expecting 9th element.
> It doent say that the other 8 elements were missing. I've 
> enabled full-schema-checking. I want to collect all errors at 
> one go and dont want to get one error at a time. Is there a 
> way to achieve this?

I would think it unlikely that any implementation will give you more that
one error message for a sequence of sibling elements that doesn't match the
content model of the parent element. But error reporting depends entirely on
the implementation so you would be better off asking on a product-specific
list.

> 2) If i put a junk element which is not at all defined in the 
> schema just before closing my <root> tag, the schem 
> validation doesnt catch this. For
> eg: in the below xml
> <root>
>   <element_defined_in_schema_1>..</element_defined_in_schema_1>
>   ....
>   ....
>   <element_not_defined_in_schema>junk</element_not_defined_in_schema>
> </root>
> 
> schema validation doesnt throw an error saying that 
> "element_not_defined_in_schema" is not a valid one.
> 

My instinct is to say: prove it. Given that you haven't shown us the
evidence (full schema and instance document), my guess is that it's more
likely you have made a mistake than that Xerces has got this wrong.

Michael Kay
http://www.saxonica.com/
Received on Wednesday, 10 January 2007 22:39:20 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:57 GMT