Many formats have payloads that are embedded base64-encoded data.
We need a DFDL language feature enabling us to specify that the underlying bytes of an element are base64 encoded. That is, the data stream is base64 encoded, and must be decoded and then parsed, or unparsed and then encoded into base64 text.
A similar preprocessing should handle compression, as formats like VMF (mil-std-6017) can have compressed payloads.
In general, we should enable these pre-processing encoder/decoders to be pluggable so the set can be extended easily.
This is a form of layering. If we consider just parsing for a moment, this enables one to define an element which is a byte-array or string, and then treat that as the input source for subsequent parsing without having to explicitly do a second pass of calling daffodil to parse the element. You can get Daffodil to do this second pass itself automatically.