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?
      >


Reply via email to