...
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.
|
Arrays where size not known in advance | dfdl:occursCountKind 'implicit', 'parsed', 'stopValue' | Not initially. Will be added with restrictions.
|
Expressions | Use of a DFDL expression in any property value | Not initially. Will be added with restrictions.
|
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.
|
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. LengthsEventually Yes.
|
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.
|
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.
|
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 |
...