Tracker 351 on Separators and Separator Suppression
(I put a note on this tracker that this one still has email discussion ongoing about the precise wording.)
I believe now we know that the suggestion below about Section 14.2 isn't correct. Pulling that discussion up to the top here, we suggested this:
Section 14.2
For property dfdl:separator. The sentence:
"Separators occur in the data either before, between or after all
occurrences of the elements or groups that are the children of the sequence."
replaced with "Separators occur in the data either before, between
or after all occurrences of represented elements (that is, elements
without the dfdl:inputValueCalc property) or model groups that are the
children of the sequence. Elements with dfdl:inputValueCalc have no representation
in the data stream, and so never have separators. Children of a sequence
that are model groups are always separated, even if they are empty (meaning
have no children of their own - which is allowed for sequence groups),
or both the model group child and its contained children occupy zero-length
in the data stream."
From tests IBM did, and experience with the DFDL schema for EDIFACT, I think we neglected the potentially-trailing group case in the above description. I've revised it, with the new phrasing in blue.
Section 14.2
For property dfdl:separator. The sentence:
"Separators occur in the data either before, between or after all
occurrences of the elements or groups that are the children of the sequence."
replaced with "Separators occur in the data either before, between
or after all occurrences of represented elements (that is, elements
without the dfdl:inputValueCalc property) or model groups that are the
children of the sequence. Elements with dfdl:inputValueCalc have no representation
in the data stream, and so never have separators. Children of a sequence
that are model groups are separated if the sequence is positional, even if they are empty (meaning
have no children of their own - which is allowed for sequence groups),
or both the model group child and its contained children occupy zero-length
in the data stream. If the sequence is not positional, then separators are suppressed for trailing groups that are zero-length according to the dfdl:separatorSuppressionPolicy."
This accommodates the common situation where a trailing sequence group contains an entirely optional array element. If none of the array elements exists we do not want a separator for the sequence group at all.
(note: Some of the above is redundant with
stipulations in the dfdl:inputValueCalc property description, but I believe
it is wise to have this little redundancy.)
Tracker 350 on Empty Representation - Clarifications
Section 9.2.2
The phrase "the occurrence's
content in the data..." replace with "the occurrence's SimpleContent
or ComplexContent region in the data..."
The sentence: "The empty
representation is special in DFDL, because when
parsing it is this condition that can trigger the creation of a default
value for an element occurrence." replace with: "The empty representation
is special in DFDL because when parsing it is used to determine when default
values are created in the Infoset. The empty representation can require
initiators or terminators be present so as to
enable data formats
to explicitly distinguish occurrences with empty string/hexBinary values
from occurrences that are missing or are absent."
(This is to clarify an error
of omission - prior language suggested that EVDP is only relevant when
the element has a default value, because only that need was mentioned.)
Tracker 233: Add to minor/typographical
Section 9.3.1.1
Delete phrase "...this of course implies
that....". Note that there is already a correction to create numbered
bullets of 3 sentences. The sentence containing this phrase will be bullet
#3 of that list.
Tracker 349: Clarifications on Element Defaults
Section 9.4
Item 2 under "For elements and element
refs:" Change to: "dfdl:element following property scoping rules,
which includes establishing representation as described in Section 9.3.2
and conversion to element type for simple types."
Section 9.4.2
Before the final phrase "There are three
main cases to consider:" Insert this sentence: "The sections
below indicate when an item is added to the infoset, and whether it has
a default or other value. If there is no processing error then regardless
of whether an item is added to the infoset or not, any side-effects due
to dfdl:discriminator statements evaluating to true, or dfdl:setVariable
statements, are retained."
Sections 9.4.2.2 and 9.4.2.3
The phrase "Optional occurrence: If
dfdl:emptyValueDelimiterPolicy is not 'none'[12],"
Change to "Optional occurrence: if dfdl:emptyValueDelimiterPolicy
is applicable and is not 'none',...." (retaining the footnote)
Section 9.4.2.3. (IGNORING THIS AS NO CONCLUSION WAS REACHED)
We agreed that the paragraphs beginning with "For
both required and optional..." need to be better tied to the material
above. Wording TBD - pending Steve Hanson doing some tests on IBM DFDL.
I discovered that erratum 5.10 already includes modified wording equivalent to one of the things discussed:
5.10 says: Add
a clause in 9.4.2.2 and 9.4.2.3 so that the statement about optional
occurrences says "If dfdl:emptyValueDelimiterPolicy is in
effect and is not 'none'...", as the words today do not
cover cases when it is ignored (no initiator or terminator).
Our discussion in this thread is slightly different wording:
Sections 9.4.2.2 and 9.4.2.3
The phrase "Optional occurrence: If
dfdl:emptyValueDelimiterPolicy is not 'none'[12],"
Change to "Optional occurrence: if dfdl:emptyValueDelimiterPolicy
is applicable and is not 'none',...." (retaining the footnote)
I prefer the terminology "is applicable" here, as "in effect" can have the connotation of just "is set".
Tracker 348: Clarifications on Establishing Representation
Section 9.3.2
The phrase "The first step is to see if the
content is trivaill of length zero." Change to: "The first step
is to see if the SimpleContent or ComplexContnet region is of length zero
as a first approximation."
The bullet "delimited => length is zero
(delimiter is immediately encountered)" Insert "in scope"
after the open parenthesis.
Tracker 347: Clarifications on Specifying Delimiters
Section 12.2
For property emptyValueDelimiterPolicy, before
the phrase "It is a schema definition error if...", insert this
sentence: "The value of dfdl:emptyValueDelimiterPolicy
should only be checked if there is a dfdl:initiator or dfdl:terminator
in scope. If so, and dfdl:emptyValueDelimiterPolicy is not set, it is a
schema definition error. If dfdl:initiator is not "" and dfdl:terminator
is "" and dfdl:emptyValueDelimiterPolicy is 'terminator' it is
a schema definition error. If dfdl:terminator is not "" and dfdl:initiator
is " and dfdl:emptyValueDelimiterPolicy is 'initiator' it is
a schema definition error."
Tracker 346: Changes for Nillable Elements
Section 13.16
For property nilValueDelimiterPolicy,
before the phrase "It is a schema definition error if...", insert
this sentence: "The value of
dfdl:nilValueDelimiterPolicy should only be checked if there is a
dfdl:initiator or dfdl:terminator in scope. If so, and dfdl:nilValueDelimiterPolicy
is not set, it is a schema definition error. If dfdl:initiator is not ""
and dfdl:terminator is "" and dfdl:nilValueDelimiterPolicy is
'terminator' it is a schema definition error. If dfdl:terminator is not
"" and dfdl:initiator is " and dfdl:nilValueDelimiterPolicy
is 'initiator' it is a schema definition error."