I can reproduce this. The answer to your question about why this is... is "due to bug(s)" in 3.0.0
The fix to https://issues.apache.org/jira/browse/DAFFODIL-2487 probably also fixed this issue for 3.1.0. On Daffodil 3.1.0 (a development branch), both tests work and produce the same infoset <file><value>a</value></file> On Daffodil 3.0.0, the anyEmpty variant fails. I am not sure why yet, turning on daffodil 3.0.0 trace was decidedly unhelpful. The change to minOccurs="1" allows 3.0.0 to produce an infoset, which looks correct. It is the same thing you get from Daffodil 3.1.0 (a development branch) for this case (with minOccurs="1") <ex:file2 xmlns:ex="http://example.com"> <value></value> <value>a</value> </ex:file2> So clearly there is a bug in 3.0.0 fixed in 3.1.0 (dev branch). I have incorporated your test case into a test for Daffodil, to insure no future regression on this: https://issues.apache.org/jira/browse/DAFFODIL-2498 <https://github.com/apache/daffodil/pull/533> ________________________________ From: Roger L Costello <coste...@mitre.org> Sent: Monday, April 19, 2021 3:34 PM To: users@daffodil.apache.org <users@daffodil.apache.org> Subject: A question about separatorSuppressionPolicy Hi Folks, My instance document consists of a sequence of up to 5 strings, separated by forward slash, e.g., /a// If I specify separatorSuppressionPolicy="trailingEmpty" then I can specify minOccurs="0" maxOccurs="5" If I specify separatorSuppressionPolicy="anyEmpty" then I get this error: Left over data. Consumed 0 bit(s) with at least 56 bit(s) remaining. Why is that? That is, why does this work: <xs:element name="file"> <xs:complexType> <xs:sequence dfdl:separator="/" dfdl:separatorPosition="infix" dfdl:separatorSuppressionPolicy="trailingEmpty"> <xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="5" /> </xs:sequence> </xs:complexType> </xs:element> Whereas this doesn't: <xs:element name="file"> <xs:complexType> <xs:sequence dfdl:separator="/" dfdl:separatorPosition="infix" dfdl:separatorSuppressionPolicy="anyEmpty"> <xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="5" /> </xs:sequence> </xs:complexType> </xs:element> The latter works if I specify minOccurs="1" maxOccurs="5" /Roger
SepTests.tdml
Description: SepTests.tdml