Daffodil has the capability to read in various parameters via an external XML file. Below are the parameters that can be defined.

External Variables

External variables can be defined using the externalVariablesBindings tag. For example, the following configuration file defines to variables, var1 and var2, in the http://example.com namespace.

<?xml version="1.0" encoding="UTF-8"?>
<dfdlConfig xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ex="http://example.com">
  <externalVariableBindings>
    <bind name="ex:var1">-9</bind>
    <bind name="ex:var2">Foo</bind>
  </externalVariableBindings>
</dfdlConfig>

These would allow the external variables to be set or overridden, if defined in a DFDL schema like so:

<dfdl:defineVariable name="var1" external="true" type="xsd:int">1</dfdl:defineVariable>
<dfdl:defineVariable name="var2" external="true" type="xsd:string">Bar</dfdl:defineVariable>

Tunable Parameters

Various tunable parameters can be modified to change various Daffodil schema compilation and data parsing properties. For example, the following sets the maxOccursBounds tunable to 1024:

<?xml version="1.0" encoding="UTF-8"?>
<dfdlConfig xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ex="http://example.com">
  <tunables>
    <maxOccursBounds>1024</maxOccursBounds>
  </tunables>
</dfdlConfig>

Below is the list of tunable parameters and their default values:

tunabledefault
maxFieldContentLengthInBytes1024
maxOccursBounds1024
maxSkipLength1024
maxBinaryDecimalVirtualPoint200
minBinaryDecimalVirtualPoint-200
generatedNamespacePrefixStemtns
readerByteBufferSize8192
maxLengthForVariableLengthDelimiterDisplay

10

inputFileMemoryMapLowThreshold33554432
requireBitOrderPropertyfalse
requireEncodingErrorPolicyPropertyfalse

Configuration Schema

The schema for the configuration file is defined in dafext.xsd.