ISSUE-7: xsi:nil and minOccurs=0

ISSUE-7: xsi:nil and minOccurs=0

http://www.w3.org/2005/06/tracker/databinding/issues/7

Raised by: Paul Downey
On product: Basic

"""
Many type serializers do not use xsi:nil and minOccurs=0 as schema designers
intend.  Given this schema type:

<xs:complexType name="UpdateMsg">
      <xs:sequence>
            <xs:element name="Name" />
            <xs:element name="Fax" minOccurs="0" nillable="true" />
      </xs:sequence>
</xs:complexType>

Callers can send message instances that either (a) include the "Fax" element
with content*, (b) exclude the "Fax" element altogether, or (c) include the
"Fax" element without content but with an xsi:nil="true" attribute.  Type
serializers, however, do not usually support scenario "b" because programming
languages can't distinguish whether a type member is intentionally NULL or just
unassigned.

Message receivers usually interpret the lack of an element as "left unsaid" and
the presence of an element with empty content and an xsi:nil="true" attribute as
"set to NULL".  Type serializers summarily convert type members with NULL values
to xsi:nil declarations, which can cause unintended data changes on the server. 

Data binding tools need to have a way to distinguish unassigned type members
(which should be ommitted from the serialization) from members assigned to NULL
(which should be serialized with xsi:nil="true").

It seems like this problem is similar to database programming.  Columns excluded
from an UPDATE statement are not summarily set to NULL - they are left
unchanged.  Maybe solutions to database binding could be reviewed for schema?

I know the whole xsi:nil / minOccurs=0 issue has been well-trodden, but I wanted
to submit this facet of the problem because there is some real pain.  Thanks!

Erik Johnson
Epicor Software Corp.

 * Assume there is a simpleType restriction in place like minLength="1"

"""

http://lists.w3.org/Archives/Public/public-xsd-databinding/2006Jan/0013.html

Received on Thursday, 12 January 2006 09:31:05 UTC