Thanks for the provided schemas. This helps quite a bit.
In this case, the "record" element does not consume the final CR CR LF
because it is an infix separator, as you expect.
However, you have an CR CR LF separator on the outer sequence on line
33, so you have something like this:
<xs:sequence dfdl:separator="%CR;%CR;%LF;"
dfdl:separatorPosition="infix">
<xs:sequence>
<xs:element name="MU16Type" ... />
</xs:sequence>
<xs:element name="trailing-rec" ... />
</xs:sequence>
So this expects a CR CR LF in between your MU16Type element and a
trailing-rec element. That is what actually consumes the final CR CR LF
and then the trailing-rec element happily consumes no data and you get
the NIL element.
So the suggestion if you want the CRCRLF element to be parsed in the
tailing-rec is to remove the CR CR LF separator from the outer sequence.
Note that things get a bit tricky if you do that. In that case, the
final trailing CR CR LF is not consumed as an infix separator, as
expected. And then we do get a single trailing-rec element that consumes
the CR CR LF and we get the <CRCRLF> element. But then because
trailing-rec is unbounded, and happy to try to parse more trailing-rec
elements. But a trailing-rec element can consume no data because of the
NIL element. This would mean Daffodil could get stuck in an infinite
loop happily consuming no data. Daffodil detects this and errors with a
"No forward progress" message. Simply removing the NIL element from the
TailType-TLE fixes this issue, this way it's not possible for
TailType-TLE to consume no data.
- Steve
On 4/19/22 10:12 AM, Attila Horvath wrote:
ALCON
Same question/issue - see attached samp schema/data.
Thx - Attila
On Tue, Apr 19, 2022 at 10:03 AM <some...@apache.org <http://apache.org>> wrote:
> I can't reproduce this with simpler examples. Can you provide your
> actual schema/data?
>