Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Added restriction on dfdl:outputValueCalc to be only on fixed length elements.

...

The goals of Runtime 1 were to get a correct, complete implementation of DFDL as quickly as possible. Making it as efficient as possible was important, but secondary to completeness and correctness. Other goals including streaming behavior (when the DFDL schema allows it), so that data larger than memory can be parsed/unparsed.

Today there are many parties interested in Daffodil but who have different requirements:

...

Feature

Detection

Implemented In Runtime 2 ?

Validation

External switch

No

Named Formats

dfdl:defineFormat or dfdl:ref

Yes

Choices

xs:choice in xsd

Not initially. Will be added with restrictions.

  • choiceDispatchKey only,  no backtracking choices
  • Depends on Expressions

Arrays where size not known in advance

dfdl:occursCountKind 'implicit', 'parsed', 'stopValue'

Not initially. Will be added with restrictions.

  • occursCountKind='expression' only. No backtracking.
  • Depends on Expressions

Expressions

Use of a DFDL expression in any property value

Not initially. Will be added with restrictions.
  • No runtime-valued properties except for dfdl:length and dfdl:occursCount

  • Note that if length and occursCount work, then implementing other runtime-valued properties may not be hard.

End of parent

dfdl:lengthKind "endOfParent"

No

Simple type restrictions

xs:simpleType in xsd

Yes/Tolerated  (Requires no work for a runtime backend, but the additional facets such types can provide are not checked as there is no validation. Runtime 2 effectively only implements the underlying primitive simple type of such derivations.)

Text representation for types other than String

dfdl:representation "text" for Number, Calendar or Boolean types

No.

Delimiters

dfdl:separator <> "" or dfdl:initiator <> "" or dfdl:terminator <> "" or dfdl:lengthKind "delimited"

No.

  • TBD: might have to soften this and allow terminators on simple type string only. Restricting the delimiter to 1 character only may be ok. This allows implementing e.g., null-terminated strings.

Nils

XSDL nillable 'true' in xsd

No.

Defaults

XSDL default or fixed in xsd

No.

Bi-Directional text.

dfdl:textBiDi 'yes'

No. (Note: This is being dropped from DFDL v1.0 because there are no implementations as yet. )

Lengths in Bits

dfdl:alignmentUnits 'bits' or dfdl:lengthUnits 'bits'

Initially No.

Lengths

Eventually Yes.

  • Initially, lengths may be expressed in bits, but must be multiples of 8. So really it is bytes.

Delimited lengths and representation binary element

dfdl:representation 'binary' (or implied binary) and dfdl:lengthKind 'delimited'

No

Regular expressions

dfdl:lengthKind 'pattern',

dfdl:assert with dfdl:testkind 'pattern' ,

dfdl:discriminator with dfdl:testkind 'pattern'

No

Zoned numbers

dfdl:textNumberRep 'zoned'

No

IBM 390 packed numbers

dfdl:binaryNumberRep 'packed' 

No

IBM 390 packed calendars

dfdl:binaryCalendarRep 'packed'

No

IBM 390 floats

dfdl:binaryFloatRep 'ibm390Hex'

No

Unordered sequences

dfdl:sequenceKind 'unordered'

No

Floating elements

dfdl:floating 'yes'

No

dfdl functions in expression language

dfdl:functions in expression

Not initially.

  • Will be added with expression language.
  • The set of available functions may be limited, increasing over time.
  • The dfdl:contentLength() and dfdl:valueLength() functions are most important.

Hidden groups

dfdl:hiddenGroupRef <> ''

Not initially. Eventually should be added. (Is used with Calculated Values feature.)

Calculated values

dfdl:inputValueCalc <> '' or dfdl:outputValueCalc <> ''

Not initially. Eventually should be added.

  • Without dfdl:outputValueCalc and the dfdl:contentLength()/dfdl:valueLength() functions you really can't do unparsing very effectively. Applications end up having to know all about the representation.
  • dfdl:outputValueCalc will be allowed only on fixed-length elements. This combined with the unparser infoset being all-present (not streaming) as described later eliminates many complexities such as the interior alignment problem.

Escape schemes

dfd:defineEscapeScheme in xsd

No

Extended encodings

Any dfdl:encoding value beyond the core list

No

Asserts

dfdl:assert in xsd

No

Discriminators

dfdl:discriminator in xsd

No

Prefixed lengths

dfdl:lengthKind 'prefixed'

No

Variables


dfdl:defineVariable,

dfdl:newVariableInstances,

dfdl:setVariable

Variables in DFDL expression language

Note that variables as a feature is dependent on the Expressions feature.

No

BCD calendars

dfdl:binaryCalendarRep "bcd"  

No

BCD numbers

dfdl:binaryNumberRep "bcd"

No

Multiple schemas

xs:include or xs:import in xsd

Yes. (Requires no work in a runtime backend.)

IBM 4690 packed numbers

dfdl:binaryNumberRep "ibm4690Packed"

No

IBM 4690 packed calendars

dfdl:binaryCalendarRep "ibm4690Packed"

No

DFDL Byte Value Entities

Use of %#r syntax in a DFDL String Literal other than the dfdl:fillByte property

No

DFDL Standard Character Set Encodings

dfdl:encoding name begins with "X-DFDL-".

No

Bit Order - Least Significant Bit First

dfdl:bitOrder with value 'leastSignificantBitFirst'

No

...