OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

ubl-ndrsc message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Subject: Re: [ubl-ndrsc] Absence of Data

(What is PESC?)

Thanks for sending this!  I assume I can consider you the champion for this 
one...  I doubt we'll have time to discuss this in tomorrow's call, but 
maybe we can get some reaction on the list for next time.  I have some 
comments below:

At 02:48 PM 11/20/01 -0600, Mike Rawlins wrote:
>One thing that we'll have to deal with, particularly for those coming
>from an EDI background, is that absence of data (or absent elements) are
>not handled the same way.  For example:
>In XML:
><Name>     </Name>
>All satisfy the condition that the "Name" element be present, even
>though there may be no real data in it.
>In X12 or EDIFACT:
>N1*ST*Rawlins *91*1234567 - Element is present because data is present
>N1*ST**91*1234567 - Element is not present because data is not present.
>The PESC paper has a section which deals with this.  This may be a bit
>long for our purposes, but I think it's something that needs to be
>Extract from PESC paper:
>2.3.9 Nulls, Zeroes, Spaces, and Absence of Data
>The following rules SHALL apply in designing schemas and interpreting
>instance documents:
>1. Absence of data - If an element is defined as OPTIONAL (minOccurs
>attribute value of zero) and the element does not occur in an instance
>document, semantics SHALL NOT be interpreted from the element other than
>that the originator of the instance document and did not include it.  No

Try as I might, I can't make sense of the last bit about the 
originator.  Is there a word missing or extra?  Also, the notion of 
"semantics being interpreted" sounds a bit fuzzy to me.  Would it be 
clearer to say something like "The absence of an optional element in an 
instance SHALL NOT be interpreted as a signal that the element, if present, 
would have had a null value" or something like that?  A concrete example of 
how an absent element could be misinterpreted would be helpful.

Also, we should separate out the schema-design advice from the generic 
advice to those who have to interpret an instance that uses a schema 
designed according to our guidelines.  In fact, the interpretation advice 
should perhaps offer brief documentation boilerplate that should be 
attached to all elements that are in this situation; after all, it's not 
advice about how to properly structure an instance (like our advice about 
processing instructions etc. will be), but rather how to properly 
understand it.

I get the feeling that I'm not being clear, but I'll rely on you to tell 
me. :-)

>default values are to be assumed.   Likewise, if an attribute is
>declared as OPTIONAL ("use" attribute value of OPTIONAL) and the
>attribute does not occur in an instance document, semantics SHALL NOT be
>interpreted from the attribute other than that the originator and did
>not include it; no default values are to be assumed.

Same problem with the originator wording here.

>NOTE:  All string items defined with a minOccurs of one SHALL have a
>minimum length requirement of one character.
>2. Zeroes - Zeroes, when appearing in a numeric element in an instance
>document, SHALL be interpreted as a zero value.

Should we qualify numeric by saying listing the built-in datatypes this 
applies to and saying it also applies to any datatypes derived from them?

>3. Spaces - Spaces sent as values for elements or attributes (of type
>string) in instance documents SHALL be interpreted as spaces.  It is
>RECOMMENDED that leading and trailing spaces be removed, but when they
>appear they SHALL have semantic significance.  Sending an element with
>just spaces is not the same as sending a nulled element (see #4 below).
>4. Nullability - In certain cases, it MAY be desirable to convey that an

I don't believe that this is a legitimate use of the uppercase MAY (it's 
not being used in a normative sense).  I usually use "might" in these 
circumstances, or it could say "Where a schema is designed to be nillable, ..."

>element has no value (a null value) rather than indicating that it has a
>value of spaces or that it is not present in a document.  In these
>cases, the originator of the instance document SHOULD convey explicitly
>that an element is null.  An example is an address update for a
>previously transmitted address.  The previous address had two address
>lines, whereas the current address has just one line.  The originator of
>the document indicates that the second address line is removed by
>indicating that the element is nulled as follows:
><addressLineTwo xsi:nill="true"></addressLineTwo>
>To support this the addressLine element in the schema is defined as
>nullable via:
><xsd:element name="addressLine" type="xsd:string" nillable="true"/>
>When this type of nullable semantics are desired, the "nill" and
>"nillable" attributes SHALL be used (as opposed to spaces for strings or
>zeroes for numerics).   The "nillable" attribute SHALL NOT be used in
>element declarations with a minOccurs of greater than zero.  When there
>is a requirement that an element be OPTIONAL and not appear in an
>instance document, the minOccurs attribute with a value of zero SHALL be
>used in the element declaration.  By default, any element defined in
>analysis as having a minimum occurrence of zero SHALL be represented in
>the schemas as nullable.

To be honest, the whole nillable thing is new to me, and I recall that the 
XSD working group was sharply divided on it (with only the relational DB 
people on the "for" side).  Does it really buy us anything over 
application-specific token values like "none" or "no" or whatever?

Eve Maler                                    +1 781 442 3190
Sun Microsystems XML Technology Center   eve.maler @ sun.com

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]

Powered by eList eXpress LLC