
Hmmm, maybe not. I said:
The unordered sequence can be modeled with a data array
Yet when implemented in MBTK, it throws a fatal error: fatal: CTDP3148E: Infinite loop at offset 3: The DFDL parser cannot process array element 'ABCarray' because maxOccurs is unbounded and the length of the previous occurrence was zero. I think what happens is that on the last pass through the array, it doesn't find a, b, or c, so it throws a fatal error. So is this a bug in MBTK? Or can DFDL not model an unordered sequence? Or am I just doing it wrong? Here's a sample DFDL schemas that illustrates the point: <?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" xmlns:fmt="http://www.ibm.com/dfdl/GeneralPurposeFormat" xmlns:ibmSchExtn="http://www.ibm.com/schema/extensions" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:import namespace="http://www.ibm.com/dfdl/GeneralPurposeFormat" schemaLocation="IBMdefined/GeneralPurposeFormat.xsd" /> <xsd:element ibmSchExtn:docRoot="true" name="ABC"> <xsd:complexType> <xsd:sequence dfdl:separator=""> <xsd:annotation> <xsd:appinfo source="http://www.ogf.org/dfdl/"> <dfdl:sequence /> </xsd:appinfo> </xsd:annotation> <xsd:element dfdl:occursCountKind="implicit" maxOccurs="unbounded" minOccurs="1" name="ABCarray"> <xsd:complexType> <xsd:sequence dfdl:separator=""> <xsd:element dfdl:length="1" dfdl:lengthKind="explicit" dfdl:occursCountKind="implicit" fixed="a" minOccurs="0" name="a" type="xsd:string" /> <xsd:element dfdl:length="1" dfdl:lengthKind="explicit" dfdl:occursCountKind="implicit" fixed="b" minOccurs="0" name="b" type="xsd:string" /> <xsd:element dfdl:length="1" dfdl:lengthKind="explicit" dfdl:occursCountKind="implicit" fixed="c" minOccurs="0" name="c" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:annotation> <xsd:appinfo source="http://www.ogf.org/dfdl/"> <dfdl:format ref="fmt:GeneralPurposeFormat" /> </xsd:appinfo> </xsd:annotation> </xsd:schema> Test with "abc" as sample input. From: Garriss Jr., James P. Sent: Tuesday, March 05, 2013 8:43 AM To: dfdl-wg@ogf.org Subject: unordered sequence with constrained occurrences Suppose text data has 3 constructs: a, b, and c. * a must occur 1 time * b can occur 0 or 1 time * c can occur any number of times, 0 or more These 3 constructs can appear in any order. So these are valid inputs: abc a bcccca But these are not: ccbcc abbc abcabc Can data like this be modeled with DFDL? The unordered sequence can be modeled with a data array, like this: Array (0 to unbounded) Sequence a (0 to 1) b (0 to 1) c (0 to 1) /Sequence /Array But I don't know how to constrain the total number of occurrences. Appreciate any ideas!