DFDL

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

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)

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.