This is section by section review I've receieved about version 017 from
Steve, Geoff and Alan Powell (IBM), concentrating on the semantics
sections (11, 12, 18).
10.1. Table missing simple type definition. (Also, complex type should be
"definition" not "declaration" in schema speak).
11.4. Confusion around the description of the Root Value Approximation.
Not 100% clear what this is trying to convey. Can it be described as being
the equivalent of a DOM tree, built up as we parse our way through the
bits? Also, could the description be moved into its own 11.x section?
11.4.2. Question the use of "memory" as the name for the variables tuple
values - sounded too implementation like.
11.4.2. Why is it necessary to return memory as an output value and pass
the memory separately from the context? Put another way, can we treat
variables the same as other properties?
11.4.3.1. content length - should be end minus start
11.4.3.1. Does the last sentence just mean to refer to non-dimensioned,
non-optional elements?
11.4.3.2. "Dynamic extent" & "dynamic scope" - names not intuitive -
should "representation" be in their somewhere? Also "scope" being re-used
?
12. Format nit: Numbered lists not resetting.
12.3. Ruling out recursion for DFDL v1.0 is probably ok
12.4.1. Needs to handle the case where a sequence/choice is embedded in
another sequence/choice. Terminology assumes that FIRST, MIDDLE, LAST are
elements.
12.4.1. General point: Needs re-inforcing that the content related
operations (FIRST, MIDDLE, LAST, CONTENT) involve recursive calls to P
(specifically one of E, C, G, R).
12.4.2. To be capable of use on a complex type's sequence or on an
embedded sequence, your source to source transform actually replaces an
unordered sequence with an ordered sequence, which contains an array
element of local complex type, whose content is a choice...
12.4.2. "The dfdl:unordered is dropped" ... add "from the transformed
sequence, other DFDL properties are unchanged".
12.4.2. The key sentence in this is "Ordered and unordered are
characteristics of the representation only". This needs to be right up
front.
12.4.2. Concern that implementing our own interpretation of unordered as
described may be seen by wider community as clashing with xsd:all (which
has been relaxed in XSD 1.1), does not allow a user to preserve his
bitstream order (which although random could still have a semantic), and
does not allow us to output exactly what we parsed.
12.4.2. General point: Output matching model order. Needs discussion. If
we consider schema validation as separate from DFDL parse/unparse, then
shouldn't the DFDL unparser output what it is presented with?
12.5. First mention of ATTEMPT. Did you mean EXISTS?
12.6. Why is it necessary to pull EXISTS into the array parser? You don't
do the same for the sequence parser.
12.6. Is a NONE function also needed for sequence? If not can you say why.
12.6. Example call sequence - SEP missing between MIDDLE and EXISTS.
12.7. Is E missing from the first sentence?
12.8. Update to handle embedded sequences/choices.
12.8.1. Format nit: First line - blank space after dfdl:choice.
12.8.1. PRE and POST are handled in MRM today with choices.
12.8.2. Unrelated to main review: dfdl:lengthKind="xpath" .... is a better
enum for this "pathExpression"
12.9.1. xsd:any can take minOccurs and maxOccurs, and default to (1,1). I
think you've assumed that it is (0, unbounded). I think we need to decide
if we support repeating wildcards. If we don't then the source transform
of xsd:any for strict is direct to xsd:choice and for lax is direct to the
xsd:sequence (you don't need the dummy complex type. In both cases you
don't need the extra element, nor therefore the "id" attribute.
12.11.2.2. Would the complexType be better called bytesToBinaryInteger to
match the output repType?
18.1.2. Why is localTerminator a separate argument, isn't everything you
need in the context?
18.1.3. Contradicts itself about use of escape schemes.
18.2. Might not be understanding this. The magic 8 and 16 seem to be
supplying defaults - but we don't allow property defaults.
18.2. binaryPrefixedString, binaryFixedString: DFDL allows lengthUnits to
be 'bytes' for fixed length strings and prefixed strings.
18.2. binaryPrefixedString: LEN calculation omits some of the required
properties
18.2. Not clear what the schema fragment is illustrating, nor the
following P() function and two return statements.
18.4. Can AP and LSB never be set from variables ? They don't take them as
input.
18.4.2. We are not convinced that using the bootstrapping technique of
defining DFDL behaviour in terms of itself always helps. AP is a good
example of things appearing to get overly complicated. It might be
preferable to use some other code or pseudo-code mechanism to specify
these behaviours - like you have in 18.4.3.