I am working on getting an xml file to validate against an XSD schema and I'm having trouble with the validations. Every time I validate I get errors saying
"Schemas validity error: Element '{http://services.website.com/ProgramResponse}Population': '' is not a valid value of the atomic type 'xs:double'."
I believe this error happens because I have a null character in that field, displayed like this:
< HarvPop>< /HarvPop>
So, to solve this I tried using the nillable="true" attribute for the elements so they will be able to be null, but still show up as empty. This seems to be the only solution, but it is not working at all. I still get the errors.
I am currently using XMLMate for my validations and I have double checked it agains several online verifiers as well. The error still persists. Any suggestions would be great.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:element name="Reports" type="tns:ReportsType"/>
<xsd:complexType name="ReportsType">
<xsd:sequence>
<xsd:element name="Report" type="tns:ReportType" maxOccurs="unbounded" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ReportType">
<xsd:sequence>
<xsd:element name="Id" nillable="true"/>
<xsd:element name="Brand" type="xsd:string"/>
<xsd:element name="Address" type="xsd:string"/>
<xsd:element name="City" type="xsd:string"/>
<xsd:element name="State" type="xsd:string"/>
<xsd:element name="ZipCode" type="xsd:string"/>
<xsd:element name="Entry" type="tns:EntryType" maxOccurs="unbounded" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="EntryType">
<xsd:sequence>
<xsd:element name="RM" nillable="true" type="xsd:double"/>
<xsd:element name="Pop" nillable="true" type="xsd:double"/>
<xsd:element name="Wt" nillable="true" type="xsd:double"/>
<xsd:element name="EntryId" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
When to use 'nillable' in XML schemas. The absence of a datum in XML can be expressed either by omitting the element (minOccurs="0" in schema) or by setting it to xsi:nil="true" (nillable=true in schema). Using minOccurs=0 seem altogether cleaner and more consistent, and it doesn't require the XML to reference the XSD namespace.
One way that I found that also fixes the problem with minimal code was to add the default="0" attribute to the XSD. This allows you to validate as a double without having to deal with nil by making nil default to a number. Error deserialising XML document with strongly typed XSD
If you have got an *.xml file or class definition, i'd suggest to use xsd.exe tool [ ^ ], which enables you to create *.xsd file. Good suggestion about xsd.exe... The content must be between 30 and 50000 characters.
1 Answer 1. nillable is in the spec because the XML Schema WG had a number of members who saw the world in SQL terms and wanted an explicit equivalent to SQL's null values.
One way that I found that also fixes the problem with minimal code was to add the default="0" attribute to the XSD. This allows you to validate as a double without having to deal with nil by making nil default to a number.
Error deserialising XML document with strongly typed XSD
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With