
Section 9 of the specification talks about empty etc representations, where the meanings of a length of zero are defined. However section 12.3.7.2 has sub-sections for certain binary reps where it is illegal to have a length of zero. Is this deliberate? The cases where 0 is allowed are also those which can have lengthKind 'delimited' so that might be the reason. Note that disallowing length of zero prevents use of a default value. 12.3.7.2.1: Binary numbers. Table 22 has minimum length in bits => 0 not allowed. 12.3.7.2.2: Floating point numbers: Says length must be exactly 4 bytes or 8 bytes => 0 not allowed. 12.3.7.2.3: Packed numbers. No minimum length stated => 0 allowed. 12.3.7.2.4: Binary booleans. Refers to 12.3.7.2.1 => 0 not allowed. 12.3.7.2.5: Binary calendars. Says length must be exactly 4 bytes or 8 bytes => 0 not allowed. 12.3.7.2.6: Packed calendars. No minimum length stated => 0 allowed. 12.3.7.2.7: Opaque binary. No minimum length stated => 0 allowed. Noticed this when modelling an example of a header with user-defined information at the end with the length given by a binary count. <xs:complexType name="Type_Header"> <xs:sequence> <xs:element dfdl:length="75" name="Filler" type="xs:hexBinary"/> <xs:element dfdl:length="2" name="HeaderLength" type="xs:nonNegativeInteger"/> <xs:element dfdl:length="30" name="Filler2" type="xs:hexBinary"/> <xs:element dfdl:length="{../HeaderLength - 108}" name="UserInfo" type="xs:hexBinary" minOccurs="0" dfdl:occursCountKind="implicit"/> </xs:sequence> </xs:complexType> This could equally be modelled using occursCountKind 'expression' but that seems unnecessary if the length is 0: <xs:complexType name="Type_Header"> <xs:sequence> <xs:element dfdl:length="75" name="Filler" type="xs:hexBinary"/> <xs:element dfdl:length="2" name="HeaderLength" type="xs:nonNegativeInteger"/> <xs:element dfdl:length="30" name="Filler2" type="xs:hexBinary"/> <xs:element dfdl:length="{../HeaderLength - 108}" name="UserInfo" type="xs:hexBinary" minOccurs="0" dfdl:occursCountKind="expression" dfdl:occursCount="if (../HeaderLength - 108 eq 0) then 0 else 1"/> </xs:sequence> </xs:complexType> Also what do the minimum lengths in Table 22 mean when lengthUnits is bytes ? Regards Steve Hanson Architect, IBM DFDL Co-Chair, OGF DFDL Working Group IBM SWG, Hursley, UK smh@uk.ibm.com tel:+44-1962-815848 Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU