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"?>
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">
http://www.ibm.com/dfdl/GeneralPurposeFormat"
schemaLocation="IBMdefined/GeneralPurposeFormat.xsd" />
xsd:complexType
xsd:annotation
http://www.ogf.org/dfdl/">
xsd:complexType
xsd:annotation
http://www.ogf.org/dfdl/">
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!