Hi Folks,
XML Schema allows elements with simple type to be nillable. For example, for the real world use case of some people not having a middle name, I declare a nillable <MiddleName> element:
<xsd:element name="MiddleName" nillable="true" type="xsd:string" />
Then I can create XML instance documents for people that do not have a middle name:
<Name>
<FirstName>John</FirstName>
<MiddleName xsi:nil="true"></MiddleName>
<LastName>Doe</LastName>
</Name>
Nice!
XML Schema also allows elements with complex type to be nillable. Thus, I could declare the <Name> element to be nillable:
<xsd:element name="Name" nillable="true">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="FirstName" type="xsd:string" />
<xsd:element name="MiddleName" nillable="true" type="xsd:string" />
<xsd:element name="LastName" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
And then I can create XML instance documents with <Name> elements having a nil value:
<Name xsi:nil="true" />
Why?
Why did the XML Schema working group allow elements with complex type to be nillable?
Did the XML Schema working group examine other real world data formats and discover that some of them allow regions with complex content to be nillable? If yes, what are those other real world data formats that allow regions with complex content to be nillable?
/Roger