[DFDL-WG] Action 086: Nils and Defaults for complex elements - resending
Steve Hanson
smh at uk.ibm.com
Wed May 5 05:47:11 CDT 2010
** Resending the tables as a Word doc as they were getting corrupted.
Alan
I think empty must really mean empty - no sequence initiator or
separator(s) or terminator. If you have any of those then there is
content, the complex element is there, and you apply defaulting to the
children.
I struggled with the tables. I've changed them both to make it clear that
they apply to the complex element as a unit and to avoid overlap with the
simple elements tables.
Regards
Steve Hanson
Strategy, Common Transformation & DFDL
Co-Chair, OGF DFDL WG
IBM SWG, Hursley, UK,
smh at uk.ibm.com,
tel +44-(0)1962-815848
From:
Alan Powell/UK/IBM at IBMGB
To:
dfdl-wg at ogf.org
Date:
30/04/2010 16:26
Subject:
[DFDL-WG] Action 086: Nils and Defaults for complex elements
Sent by:
dfdl-wg-bounces at ogf.org
Part of Action 086 is to apply the clarified Nils and Defaulting rules to
complex elements and develop some examples.
The tables for parsing and unparsing are simpler because there is no need
to consider nillable.
I have assumed
- emptyValueDelimiterPolicy does apply to complex elements.
- on parsing a complex element is empty if its children's content is
empty. That is the child delimiters may be present.
- on unparsing defaulting occurs if a complex item is missing or present
present but has no children.
Defaulting for complex elements on parsing
initiator region
content region
Logical Value
matching
Not empty
parsed children
matching
empty
A default is specified
emptyValueDelimiterPolicy
must be
initiator or both
default value
of children
empty
Not empty
Initiator must not be specified
parsed children
empty
empty
A default is specified
emptyValueDelimiterPolicy
must be
none
or
Initiator must not be specified
default value
of children
Defaulting for complex elements on unparsing
Logical Value
initiator region contains
content region contains
Missing or present with no children
default of all children is empty string
emptyValueDelimiterPolicy
none
empty
empty
emptyValueDelimiterPolicy
initiator or both
initiator string
default of any child is not empty string
initiator string
representation of the child default value.
a least on child exists
initiator string
representation of children
Examples
Defaulting Complex types
ONE:one,
TWO:
TWOONE:twoone;
TWOTWO:twotwo;
TWOTHREE:twothree,
THREE:three
<end>
In the following TWO is 'empty' (when relevant dfdl properties are set)
ONE:one,THREE:three<end>
|separatorPolicy='suppressed', emptyValueDelimiterPolicy='none'
ONE:one,,THREE:three<end>
separatorPolicy='required', emptyValueDelimiterPolicy='none'
ONE:one<end>
separatorPolicy='suppressed' or 'suppressedAtEnd',
emptyValueDelimiterPolicy='none'
<end>
separatorPolicy='suppressed' or 'suppressedAtEnd',
emptyValueDelimiterPolicy='none'
ONE:one,TWO:,THREE:three<end>
separatorPolicy= don't care , emptyValueDelimiterPolicy='initiator'
ONE:one,TWO:<end>
separatorPolicy= 'suppressed' or 'suppressedAtEnd',
emptyValueDelimiterPolicy='initiator'
ONE:one,TWO:,<end>
separatorPosition='postfix'
separatorPolicy= 'suppressed' or 'suppressedAtEnd',
emptyValueDelimiterPolicy='initiator'
*** Should 'postfix' separator be there when 'supressedAtEnd' ***
ONE:one,TWO:TWOONE:,THREE:three<end>
separatorPolicy= 'suppressed' or 'suppressedAtEnd',
(TWO)emptyValueDelimiterPolicy='initiator'
(TWOONE)emptyValueDelimiterPolicy='initiator'
ONE:one,TWOONE:,THREE:three<end>
separatorPolicy= 'suppressed' or 'suppressedAtEnd',
(TWO)emptyValueDelimiterPolicy='none'
(TWOONE)emptyValueDelimiterPolicy='initiator'
*** We should discuss this example. ***
Regards
Alan Powell
Development - MQSeries, Message Broker, ESB
IBM Software Group, Application and Integration Middleware Software
-------------------------------------------------------------------------------------------------------------------------------------------
IBM
MP211, Hursley Park
Hursley, SO21 2JN
United Kingdom
Phone: +44-1962-815073
e-mail: alan_powell at uk.ibm.com
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
--
dfdl-wg mailing list
dfdl-wg at ogf.org
http://www.ogf.org/mailman/listinfo/dfdl-wg
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20100505/2ec5dbe7/attachment-0001.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Defaulting for required complex elements.doc
Type: application/octet-stream
Size: 35328 bytes
Desc: not available
Url : http://www.ogf.org/pipermail/dfdl-wg/attachments/20100505/2ec5dbe7/attachment-0001.obj
More information about the dfdl-wg
mailing list