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.
Linux and Windows command line tool with capabilities include parsing, unaparsing, an interactive debugger, and more. Available via download in binary releases.
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.
Provides two Apache NiFi processors for parsing and unparsing NiFi FlowFiles.
An extension to XML Calabash that declares XProc pipeline steps to parse and unparse input data.
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.
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.
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.
Daffodil provides extensions to the DFDL specification to add extra enhancements and capabilities. These extensions are listed at DFDL Extensions.
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.