You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@xmlbeans.apache.org by "Samuel B. Quiring" <sb...@Cayuse.com> on 2005/10/25 22:10:15 UTC
nilable and validate()
Greetings,
I have a schema fragment that looks like this:
<xs:complexType name="HumanNameDataType">
<xs:sequence>
<xs:element name="PrefixName" type="glob:StringMin1Max10Type" minOccurs="0"/>
<xs:element name="FirstName" type="glob:StringMin1Max35Type"/>
<xs:element name="MiddleName" type="glob:StringMin1Max25Type" minOccurs="0"/>
<xs:element name="LastName" type="glob:StringMin1Max60Type"/>
<xs:element name="SuffixName" type="glob:StringMin1Max10Type" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
I'm calling validate() to verify the java object after I fill it with values. For the three fields with minOccurs="0", if I set value to null validate returns this error:
validation error: <xml-fragment xmlns:glob="http://apply.grants.gov/system/GlobalLibrary-V1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<glob:PrefixName>Dr.</glob:PrefixName>
<glob:FirstName>Emmet</glob:FirstName>
<glob:MiddleName>T</glob:MiddleName>
<glob:LastName>Brown</glob:LastName>
<glob:SuffixName xsi:nil="true"/>
</xml-fragment>,com.cayuse.db.model.rr.sf424.DPDPIContactInfo@a9ae05
object=com.cayuse.db.model.rr.sf424.DPDPIContactInfo@a9ae05
validationerror: error: cvc-elt.3.1: Element has xsi:nil attribute but is not nillable
To deal with this I tried setting the value 3 different ways:
name.setSuffixName(null); -- see above error
name.setSuffixName(""); -- min string length must be 1
do nothing -- this works.
Only if I did nothing did validate() report no errors.
What is the difference between setting a value to null and not setting a value at all? Is there a configuration parameter I can use to say "setting a value to null is the same as not setting it?"
Is this behavior documented somewhere? I searched the docs but couldn't find anything, but I probably missed it.
-Sam