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"?>
<externalVariableBindings xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ex="http://example.com">
    <bind name="ex:var1">-9</bind>
    <bind name="ex:var2">Foo</bind>
</externalVariableBindings>

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>

Configuration Schema

Below is the schema that defines this XML file:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:sub="http://www.w3.org/2001/XMLSchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ibm.com/xmlns/dfdl/testData"
    xmlns:tns="http://www.ibm.com/xmlns/dfdl/testData">
    <element name="externalVariableBindings" type="tns:externalVarType" minOccurs="1" maxOccurs="1"/>
    <complexType name="externalVarType">
        <sequence>
            <element ref="tns:bind" minOccurs="0" maxOccurs="unbounded" />
        </sequence>
    </complexType>
    <element name="bind" type="tns:bindType" />
    <simpleType name="bindNameType">
        <restriction base="xs:string" />
    </simpleType>
    <complexType name="bindType">
        <simpleContent>
            <extension base="tns:bindNameType">
                <attribute name="name" use="required">
                    <simpleType>
                        <restriction base="xs:string" />
                    </simpleType>
                </attribute>
            </extension>
        </simpleContent>
    </complexType>
</xsd:schema>