
Open Grid Forum: Data Format Description Language Working Group Weekly Working Group Conference Call 16:00 GMT, 2 Apr 2008 Attendees Mike Beckerle (Oco) Steve Hanson (IBM) Ian Parkinson (IBM) Alan Powell (IBM) 1. Calculated Values Mike has distributed a revised calculated values section. Alan has replied with some comments which will be incorporated. 2. Nil, Defaults and Optional Elements The working group reviewed Alan's revised treatment of nil, defaults and optional elements, based on some discussions which took place within IBM. The following points were touched upon: The "nullKind" property has a possible value "xpath", this has changed to be "nullIndicator" When "nullIndicator" used, the associated descriptions of "nullIndicatorPath" and "nullIndicatorIndex" are not clear, and may not describe the intended use of these properties. They currently allow the null indicator to be any data type, and the null indicator value is compared against the "nullValues" list. The group opted to change this so that the null indicator must be xs:boolean, logical value "true" meaning that the field is null (no comparison against "nullValues"). Also it was decided to limit the "nullIndicatorPath" to a path XPath, and not a full expression, to allow inversion of the XPath on output. When "nullIndicator" used and unparsing, it is not obvious what bytes to write into a nil field - in principle, the minimum length of the field is filled with either fillByte or padChar. However, if an optional variable length field may be zero bytes long, we may not be able to distinguish between fields which are present but nil, and fields which are not present. Just as we disallow strings with a default value to have minLength="0", we could disallow potentially zero-length nillable elements. The specification should follow the convention established by XML Schema, and refer to 'nil' rather than 'null'. The "useNullValueForDefault" property presently only has meaning during unparse, and Steve felt this was asymmetric with parsing, where to get a missing element to have the value NULL in the infoset, you use an empty string as a null value. Mike observed an important symmetry in the ordinary case where the element is present but nil in either the source document during parse, or the source InfoSet during unparse, in that the nullValues list is used in both cases. After discussion, the group agreed that the property should be renamed to "useNilForDefault" and honoured for both parse and unparse. The format of the "nullValues" list is awkward, but it does allow all possible values to be represented. Alan will consider adding an 'empty string' entity to the set of defined DFDL entities. 3. Scoping Rules Steve suggested that DFDL could simplify its scoping rules, by treating all properties on elements, simpleTypes and sequences as if they were set with scope "hereOnly"; and giving scope applicability to properties on complexType definitions. This may, in particular, simplify DFDL tooling. This might require users to introduce an element and complexType definition into the middle of a structure purely for scoping purposes, however Mike suggested we allow scope-applicable properties to also be set on (named) model group definitions. This enables a model group definition and associated group reference to be used in the middle of a structure, instead of an element and complexType, which does not affect the infoset. Steve and Mike to think further on this subject, it sounds a promising simplification. 4. Other business Simplification: Steve asked Mike to consider whether we could remove the occursSeparator property. If an array has a separator, this can be achieved by wrapping the array in a sequence, which we already have to do if the array (as a whole) has an initiator or terminator. This provides a consistent rule - array has markup, array needs sequence wrapper. Mike agreed this was a desired simplification. Steve to write up proposal. Simplification: Steve asked Mike whether it would be possible to remove the occursStopValue property as it could be considered a terminator of an enclosing group. Mike pointed out that if the stop value is literal value that's fine, but not when it's logical value. Agreed that we could remove occursStopKind and always treat occursStopValue as logical value. Steve to write up proposal. Steve has distributed a new revision of the Decimal supplement, and is looking for feedback. Next weeks meeting should include a discussion of the Decimal supplement, and of Mike's work on calculated values. Meeting closed, 17:15 GMT Ian Parkinson WebSphere ESB Development Mail Point 211, Hursley Park, Hursley, Winchester, SO21 2JN, UK Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU