Case 1: The -V limited option is specified.

If INP does not conform to ELMT's XSD facets, then parsing fails and
Daffodil stops. Daffodil does not backup and try another branch of the
xs:choice.


This is not correct. If INP does not conform to ELMT's XSD facets, parsing
*succeeds* anyway, and Daffodil continues to parse. It does not backtrack,
because nothing failed. It has no reason to backtrack. If you specify the
-V limited, then a validation error (really just a warning) is issued about
the facet non-compliance, but an infoset is created regardless, whether or
not you specify the -V limited (or -V on) option.

In this case, the data is deemed "well formed" but "invalid".

That behavior is generally well received. Normally, if data parses and is
converted into a numeric value, boolean, date/time, etc. successfully then
it usually can be considered well-formed and the issue is just whether the
value is in range or not.

That behavior is not as helpful if the data is a structured string. I.e., a
string that you insist looks like a number, or a date, or an SSN, but where
the type is just xs:string for whatever reason. In that case (pretty much
only that case) you want to use checkConstraints(.) in a dfdl:assert.

On Wed, Oct 5, 2022 at 11:44 AM Roger L Costello <[email protected]> wrote:

> Hi Folks,
>
> Is the following correct?
>
> The -V limited option instructs Daffodil to check the input data for
> conformance to the XSD facets.
>
> The dfdl:checkConstraints also instructs Daffodil to check the input data
> for conformance to the XSD facets.
>
> So the -V limited option and dfdl:checkConstraints do the same thing,
> right?
>
> Not quite. Here's where they differ:
>
> Consider parsing input INP against an element ELMT that is inside an
> xs:choice.
>
> Case 1: The -V limited option is specified.
>
> If INP does not conform to ELMT's XSD facets, then parsing fails and
> Daffodil stops. Daffodil does not backup and try another branch of the
> xs:choice.
>
> Case 2: dfdl:checkConstraints is specified.
>
> If INP does not conform to ELMT's XSD facets, then Daffodil backs up and
> tries another branch of the xs:choice.
>
> Lesson Learned:
>
> (1) dfdl:checkConstraints is a superset in terms of behavior. That is, it
> does everything that the -V limited option does, plus more.
>
> (2) Forget the -V limited option. Just use dfdl:checkConstraints
>
> Do you agree?
>
> /Roger
>

Reply via email to