DFDL is a modelling language currently under development to describe the format of non-xml data. For example –
- Delimited (CSV)
- Fixed width
- Binary etc
DFDL uses XML schema notation to describe data formats. In order to do this, it uses a subset of the xml schema constructs. When implemented, it will provide a means to describe non-xml data using well formatted, valid XML.
Take note, it describes data that is NOT xml.
Source: https://redmine.ogf.org/dmsf_files/8110?download=12653
Example:
00100Fake St Melbourne Vic
5 digit house number 10 Character street 10 character suburb 3 character state
<xs:element name="address" dfdl:lengthKind="implicit">
<xs:complexType>
<xs:sequence dfdl:sequenceKind="ordered">
<xs:element name="housenumber" type="xs:string" dfdl:lengthKinbd="explicit" dfdl:length="5"/>
<xs:element name="street" type="xs:string" dfdl:lengthKind="explicit" dfdl:length="10"/>
<xs:element name="suburb" type="xs:string" dfdl:lengthKind="explicit" dfdl:length="10"/>
<xs:element name="state" type="xs:string" dfdl:lengthKind="explicit" dfdl:length="3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Similarly for CSV data
100,Fake St,Melbourne,Vic
Where the data is comma separated
<xs:element name="address" dfdl:lengthKind="implicit">
<xs:complexType>
<xxs:sequence dfdl:sequenceKind=="ordered" dfdl:separator"," dfdl:separatorPosition="infix">
<xs:element name="houseNumber" type="xs:string" dfdl:lengthKind="explicit""/>
<xs:element name="street" type=""xs:string" dfdl:lengthKind="delimited" />
<xs:element name="suburb" type="xs:string" dfdl:lengthKind="delimited"/>
<xs:element name="state" type="xs:string"" dfdl:lengthKind="delimited"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Sources: http://www.ogf.org/dfdl/
Implementations
It is still early days. There are a couple of implementations available, mainly open source, but the idea is promising. Hopefully
Daffodil – Open Source
- Written in scala
- Still in early stages
- In active development
- https://opensource.ncsa.illinois.edu/confluence/display/DFDL
Defuddle – Open Source
- written iin java
- early stages or abandoned.
- Last updated 2/4/22013
http://sourceforge.net/projects/defuddle
IBM – IBM Integration Bus (formerly IBM Websphere Message Broker)
- Paid (But a free developers edition is available)