We should be consistent with the similar property for missing separators. So I've changed the enums too - now 'require' and 'suppress', Also changed unparsing behaviour - we must honour the property - the existing behaviour of always writing the initiator means we can not successfully re-parse if writing empty content and enum is 'suppress'. When reading, assume that section 15.13 has been updated to include complex as well as simple elements.
missingValueInitiatorPolicy | Enum
Valid values ‘require', ‘suppress' Specifies whether to expect an initiator when an element is missing. Ignored unless dfdl:initiator is specified and is not "" (empty string). 'require' - Indicates that the dfdl:initiator followed by empty content is the required syntax to indicate that the element is missing. 'suppress' - Indicates that empty content is the required syntax to indicate that the element is missing. The presence of an initiator implies that real content must follow. Use of ‘suppress’ implies an ordered sequence. If used on an initiated element of an unordered group it is a schema definition error. If the element is required, defaulting occurs as defined above. This property also applies on unparsing, when the data to be written (after nil value and default value processing) is empty content. Annotation: dfdl:element |
We should similarly change the enums for nilValueInitiatorPolicy to 'require' and 'suppress'.
And we should back out work item 071 which suggests changing dfdl:separatorPolicy enumeration from 'require' to 'always'. That means 'always' is matched with 'suppress' - but always is not a verb.
Unparsing. Which branch of a choice do
we output when a complex element is required but missing from the infoset?
I think it should be the first branch of the choice that does not result
in a processing error.
Regards
Steve Hanson
Programming Model Architect, WebSphere Message Broker,
OGF DFDL WG Co-Chair,
Hursley, UK,
Internet: smh@uk.ibm.com,
Phone (+44)/(0) 1962-815848
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