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:00:47 UTC