[DFDL-WG] DFDL & length prefixes - proposal

Mike Beckerle beckerle at us.ibm.com
Wed Nov 21 16:40:25 CST 2007


For the broader DFDL workgroup (Martin, Simon, and any other onlookers), 
this proposal was circulated among the IBM DFDLers and we liked it, so we 
wanted others to take a look.

------------------------------------------------------------------------

Prefix lengths are common, but unfortunately there are many prefix length 
formats. 

For flexibility we want to be able to use a hidden field and calc 
properties, but this is clumsy enough to be very unattractive except for 
extreme cases. However, without it we have the keyword proliferation 
issue.

Here's a way to get the best of both worlds.

<element name="myString" type="string" 
                    dfdl:lengthKind="prefixed" 
dfdl:lengthPrefixType="packed4"/>

here's the trick. Named types for length prefixes are just a real schema 
type definition of an integer type with dfdl annotations. .

    <simpleType name="packed4">
       <restriction base="integer" dfdl:representation="decimal" 
dfdl:decimalType="packed" 
 dfdl:numberFormat="9999"  dfdl:decimalSigned="false" 
 dfdl:prefixIncludesPrefixLength="false"/>
    </simpleType>

The behavior is simple. Imagine that a hidden length prefix element is 
defined immediately before your element, and it's type is the one given 
here.
You don't have to model that hidden element. DFDL knows how to do that for 
you. Just tell us it's type, including DFDL properties for the 
representation 
of that type.

We could build in a few of these to some predefined profiles. E.g., 
dfdl:prefix2, and dfdl:prefix4 might be the typical 2 and 4 byte length 
prefix definitions you see
in PL1 for example. 

I suggest the above because of the slippery slope where we have to 
gradually bifurcate all the integer properties to have lengthPrefix 
flavors of them
e.g.,

lengthPrefixRepresentation = text or binary or decimal
lengthPrefixLengthUnits = bits, bytes, or characters
lengthPrefixLength = an integer
lengthPrefixLengthIncludesPrefix (boolean)
lengthPrefixTextNumberJustification
lengthPrefixTextNumberFormat

Anywhere you stop here there will be many cases that aren't covered.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20071121/df674b80/attachment.html 


More information about the dfdl-wg mailing list