Getting Started

Using Daffodil

Daffodil is a library, requiring Java 8, used to convert between fixed format data and XML/JSON based on a DFDL schema. Some examples show the result of Daffodil parsing various inputs into XML. Multiple mechanisms that use the Daffodil library invoke its capabilities are described below.

Command Line Interface

Linux and Windows command line tool with capabilities include parsing, unaparsing, an interactive debugger, and more. Available via download in binary releases.

Java API or Scala API

Examples for using the Java API are available on the OpenDFDL examples repository. Individual releases describe how to include a dependency to Daffodil via Maven and SBT.

Apache NiFi Processors

Provides two Apache NiFi processors for parsing and unparsing NiFi FlowFiles.

XML Calabash Extension

An extension to XML Calabash that declares XProc pipeline steps to parse and unparse input data.

Existing DFDL Schemas

Many DFDL schemas are freely and publicly available at DFDLSchemas on GitHub. This includes image formats, financial transaction formats, healthcare formats, and more. Some DFDL Schemas for Controlled Unclassified Information (CUI) data formats are available on DI2E.net, which requires US Citizenship and DoD sponsorship.

Creating DFDL Schemas

Layout

When creating a custom DFDL schema, it is beneficial to follow the directory/file layout described in Standard DFDL Schema Project Layout. This layout provides a consistent and familiar structure for DFDL schema development that existing tooling understands, provides for easy testing and schema packaging, and ensures no name conflicts on classpaths if multiple schemas are used together.

Editors

Any text editor can be used for authoring DFDL schemas. But because DFDL schemas are a subset of XML Schema, using an XML editor (especially an XML Schema aware editor) can provide intelligent assistance in authoring DFDL Schemas, including attribute and tag completion, validation, indentation, visualizations, etc. Below are resources for configuring various tools specifically for editing or authoring DFDL schemas.

DFDL Extensions

Daffodil provides extensions to the DFDL specification to add extra enhancements and capabilities. These extensions are listed at DFDL Extensions.

Infoset

The Daffodil API and CLI support multiple ways to represent the DFDL infoset, including XML and JSON. See Daffodil and the DFDL Infoset for a description of how the parts of the DFDL infoset are represented.