[DFDL-WG] Action 286 - Daffodil v IBM DFDL feature comparison
Steve Hanson
smh at uk.ibm.com
Wed Aug 3 05:18:29 EDT 2016
Action 286 closed.
286
Create table that compares Daffodil features to IBM DFDL features
(Steve/Mike)
16/2: Take table from section 22 of DFDL 1.0 spec and add columns showing
implementations.
1/3: No progress
10/5: No progress. Work on this for next call.
...
7/6: No further progress
5/7: Steve has added column for IBM DFDL and emailed to WG. Mike will add
column for Daffodil.
2/8: Closed. Mike has added column and discussion for Daffodil and emailed
to WG. Steve to convert to an experience document and add to Redmine @
https://redmine.ogf.org/dmsf_files/13539?download=. Document can be
updated as required.
Regards
Steve Hanson
IBM Integration Bus, Hursley, UK
Architect, IBM DFDL
Co-Chair, OGF DFDL Working Group
smh at uk.ibm.com
tel:+44-1962-815848
mob:+44-7717-378890
From: Mike Beckerle <mbeckerle.dfdl at gmail.com>
To: Steve Hanson/UK/IBM at IBMGB
Cc: DFDL-WG <dfdl-wg at ogf.org>
Date: 19/07/2016 20:13
Subject: Re: [DFDL-WG] Action 286 - Daffodil v IBM DFDL feature
comparison
Table with Daffodil column added, and additional details below.
Feature
Detection
IBM DFDL
Daffodil v2.0
Validation
External switch
Yes
partial. Parsing only.
Named Formats
dfdl:defineFormat or dfdl:ref
Yes
Yes
Choices
xs:choice in xsd
Yes
Partial - choiceDispatchKey and choiceBranchKey not supported.
Arrays where size not known in advance
dfdl:occursCountKind 'implicit', 'parsed', 'stopValue'
Partial - not 'stopValue'
Partial – not ‘stopValue’
Expressions
Use of a DFDL expression in any property value
Yes
Yes. Limitation - query-style expressions not supported. These are
expressions which require iteration over children of an element rather
than constant-time access. For example fn:count(/a/b) where element 'a'
has multiple element 'b' children separated by other element declarations.
Hence, gathering all the b children requires iterating.
End of parent
dfdl:lengthKind "endOfParent"
No
No
Simple type restrictions
xs:simpleType in xsd
Partial - not unions
Partial – not unions
Text representation for types other than String
dfdl:representation "text" for Number, Calendar or Boolean types
Yes
Partial – type Boolean not implemented
Delimiters
dfdl:separator <> "" or dfdl:initiator <> "" or dfdl:terminator <> "" or
dfdl:lengthKind "delimited"
Yes
Yes
Nils
XSDL nillable 'true' in xsd
Yes
Partial - nilKind 'logicalValue' not supported
Defaults
XSDL default or fixed in xsd
Partial - unparsing only
Partial
Simple types - ?? (Some support in parsing and in unparsing)
Complex types – No
Bi-Directional text.
dfdl:textBiDi 'yes'
No
No
Lengths in Bits
dfdl:alignmentUnits 'bits' or dfdl:lengthUnits 'bits'
Yes
Yes
Delimited lengths and representation binary element
dfdl:representation 'binary' (or implied binary) and dfdl:lengthKind
'delimited'
Yes
Partial – delimiters must not use character class entities like %NL or
%WSP*.
Regular expressions
dfdl:lengthKind 'pattern',
dfdl:assert with dfdl:testkind 'pattern' ,
dfdl:discriminator with dfdl:testkind 'pattern'
Partial - only for dfdl:lengthKind
Yes
Zoned numbers
dfdl:textNumberRep 'zoned'
Yes
No
IBM 390 packed numbers
dfdl:binaryNumberRep 'packed'
Yes
No
IBM 390 packed calendars
dfdl:binaryCalendarRep 'packed'
No
No
IBM 390 floats
dfdl:binaryFloatRep 'ibm390Hex'
Yes
No
Unordered sequences
dfdl:sequenceKind 'unordered'
Yes
No
Floating elements
dfdl:floating 'yes'
No
No
dfdl functions in expression language
dfdl:functions in expression
No
Yes
Hidden groups
dfdl:hiddenGroupRef <> ''
No
Yes
Calculated values
dfdl:inputValueCalc <> '' or dfdl:outputValueCalc <> ''
No
Yes
Escape schemes
dfd:defineEscapeScheme in xsd
Yes
Yes
Extended encodings
Any dfdl:encoding value beyond the core list
Yes
Partial - iso-8859-1 works. Others - TBD.
Asserts
dfdl:assert in xsd
Partial - not on global elements or simple types
Yes
Discriminators
dfdl:discriminator in xsd
Partial - not on global elements or simple types
Yes
Prefixed lengths
dfdl:lengthKind 'prefixed'
Partial - not nested prefixed lengths
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.
Partial - not newVariableinstance or external variables
Partial – not newVariableInstance
BCD calendars
dfdl:binaryCalendarRep "bcd"
Yes
No
BCD numbers
dfdl:binaryNumberRep "bcd"
Yes
No
Multiple schemas
xs:include or xs:import in xsd
Yes
Yes
IBM 4690 packed numbers
dfdl:binaryNumberRep "ibm4690Packed"
Yes
No
IBM 4690 packed calendars
dfdl:binaryCalendarRep "ibm4690Packed"
Yes
No
DFDL Byte Value Entities
Use of %#r syntax in a DFDL String Literal other than the dfdl:fillByte
property
Yes
No
DFDL Standard Character Set Encodings
dfdl:encoding name begins with "X-DFDL-".
No
Partial: X-DFDL-US-ASCII-7-BIT-PACKED, but not the 6-bit variant.
Bit Order - Least Significant Bit First
dfdl:bitOrder with value 'leastSignificantBitFirst'
No
Yes
There is a list of implementation specific things not implemented for
Daffodil also. The list needs updating, but includes at least:
* xs:boolean - not supported
* dfdl:ignoreCase - not supported
* binary form for xs:date, xs:time, and xs:dateTime are not supported.
* dfdl:utf16Width='variable' not supported
* extended ICU symbols 'u' and 'I' in calendarPattern - not supported
* dfdl:textStandardBase - not supported (behaves as 10)
W.r.t, the additional you listed for IBM:
fn:count(), fn:exactlyOne(), fn:name(), fn:local-name(),
fn:namespace-uri()
Daffodil has fn:count(), fn:exactlyOne(), but not the other 3.
BOMs
Daffodil does not yet support BOMs
Correct distinction between 'empty' and 'missing' when parsing (action
140)
No known limitation here - I would be curious as to a test that
illustrates this limitation so we could try it on Daffodil
Use of namespaces in expression paths
Daffodil supports prefixed QNames in path steps. However, Daffodil's
interpretation of NCNames in path steps does NOT currently take any
default namespace into account. This makes Daffodil incompatible with IBM
DFDL, which does not allow QNames, and so depends on those names being
made meaningful by way of default namespace. Making Daffodil compatible
with IBM's behavior here is Daffodil JIRA ticket
https://opensource.ncsa.illinois.edu/jira/browse/DFDL-1446
dfdl:separatorSuppressionPolicy "trailingEmptyStrict"
Daffodil supports this property value.
Mike Beckerle | OGF DFDL Workgroup Co-Chair | Tresys Technology |
www.tresys.com
Please note: Contributions to the DFDL Workgroup's email discussions are
subject to the OGF Intellectual Property Policy
On Mon, Jul 4, 2016 at 11:49 AM, Steve Hanson <smh at uk.ibm.com> wrote:
286
Create table that compares Daffodil features to IBM DFDL features
(Steve/Mike)
16/2: Take table from section 22 of DFDL 1.0 spec and add columns showing
implementations.
1/3: No progress
10/5: No progress. Work on this for next call.
...
7/6: No further progress
5/7:
To kick this off here is the optional features table from spec section 21
with a column added for IBM DFDL
Feature
Detection
IBM DFDL
Validation
External switch
Yes
Named Formats
dfdl:defineFormat or dfdl:ref
Yes
Choices
xs:choice in xsd
Yes
Arrays where size not known in advance
dfdl:occursCountKind 'implicit', 'parsed', 'stopValue'
Partial - not 'stopValue'
Expressions
Use of a DFDL expression in any property value
Yes
End of parent
dfdl:lengthKind "endOfParent"
No
Simple type restrictions
xs:simpleType in xsd
Partial - not unions
Text representation for types other than String
dfdl:representation "text" for Number, Calendar or Boolean types
Yes
Delimiters
dfdl:separator <> "" or dfdl:initiator <> "" or dfdl:terminator <> "" or
dfdl:lengthKind "delimited"
Yes
Nils
XSDL nillable 'true' in xsd
Yes
Defaults
XSDL default or fixed in xsd
Partial - unparsing only
Bi-Directional text.
dfdl:textBiDi 'yes'
No
Lengths in Bits
dfdl:alignmentUnits 'bits' or dfdl:lengthUnits 'bits'
Yes
Delimited lengths and representation binary element
dfdl:representation 'binary' (or implied binary) and dfdl:lengthKind
'delimited'
Yes
Regular expressions
dfdl:lengthKind 'pattern',
dfdl:assert with dfdl:testkind 'pattern' ,
dfdl:discriminator with dfdl:testkind 'pattern'
Partial - only for dfdl:lengthKind
Zoned numbers
dfdl:textNumberRep 'zoned'
Yes
IBM 390 packed numbers
dfdl:binaryNumberRep 'packed'
Yes
IBM 390 packed calendars
dfdl:binaryCalendarRep 'packed'
No
IBM 390 floats
dfdl:binaryFloatRep 'ibm390Hex'
Yes
Unordered sequences
dfdl:sequenceKind 'unordered'
Yes
Floating elements
dfdl:floating 'yes'
No
dfdl functions in expression language
dfdl:functions in expression
No
Hidden groups
dfdl:hiddenGroupRef <> ''
No
Calculated values
dfdl:inputValueCalc <> '' or dfdl:outputValueCalc <> ''
No
Escape schemes
dfd:defineEscapeScheme in xsd
Yes
Extended encodings
Any dfdl:encoding value beyond the core list
Yes
Asserts
dfdl:assert in xsd
Partial - not on global elements or simple types
Discriminators
dfdl:discriminator in xsd
Partial - not on global elements or simple types
Prefixed lengths
dfdl:lengthKind 'prefixed'
Partial - not nested prefixed lengths
Variables
dfdl:defineVariable,
dfdl:newVariableInstances,
dfdl:setVariable
Variables in DFDL expression language
Note that variables as a feature is dependent on the Expressions feature.
Partial - not newVariableinstance or external variables
BCD calendars
dfdl:binaryCalendarRep "bcd"
Yes
BCD numbers
dfdl:binaryNumberRep "bcd"
Yes
Multiple schemas
xs:include or xs:import in xsd
Yes
IBM 4690 packed numbers
dfdl:binaryNumberRep "ibm4690Packed"
Yes
IBM 4690 packed calendars
dfdl:binaryCalendarRep "ibm4690Packed"
Yes
DFDL Byte Value Entities
Use of %#r syntax in a DFDL String Literal other than the dfdl:fillByte
property
Yes
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
Some IBM DFDL restrictions are not captured in the table, mainly due to
non-implementation of many of the later errata. Full details here
https://www.ibm.com/support/knowledgecenter/SSMKHH_10.0.0/com.ibm.etools.mft.doc/df00150_.htm
but the key omissions are:
fn:count(), fn:exactlyOne(), fn:name(), fn:local-name(),
fn:namespace-uri()
BOMs
Correct distinction between 'empty' and 'missing' when parsing (action
140)
Use of namespaces in expression paths
dfdl:separatorSuppressionPolicy "trailingEmptyStrict"
Regards
Steve Hanson
IBM Integration Bus, Hursley, UK
Architect, IBM DFDL
Co-Chair, OGF DFDL Working Group
smh at uk.ibm.com
tel:+44-1962-815848
mob:+44-7717-378890
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
--
dfdl-wg mailing list
dfdl-wg at ogf.org
https://www.ogf.org/mailman/listinfo/dfdl-wg
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
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ogf.org/pipermail/dfdl-wg/attachments/20160803/15f3b1f3/attachment-0001.html>
More information about the dfdl-wg
mailing list