Thanks for reporting the issue.
This looks to just be a bug. I've confirmed what you've described--this
bug is triggered if you use one of the following facet restrictions on
an xs:double or xs:float that parses to NaN, INF, or -INF, and with
limited or full validation enabled:
* minInclusive
* maxInclusive
* minExclusive
* maxExclusive
Unfortunately there isn't a good workaround. I've created DAFFODIL-2701
to track this issue:
https://issues.apache.org/jira/browse/DAFFODIL-2701
- Steve
On 5/27/22 7:02 PM, Thompson, Mark M [US] (DS) wrote:
All,
I am reporting the occurrence of an exception as requested. The
attached files contain 4 instances of what appears to be the same issue.
During parsing, it seems that the Daffodil validator cannot
handle the occurrence of a non-numeric value in a float element. The
problem
occurs when the float value evaluates to either Infinity or NaN.
If Validation mode is off, parsing works fine and the appropriate XML is
generated
as requested for all but one case (see below).
1. Float value = Positive Infinity. When Validation is off,
element generated: <BWS_Bandwidth_Limit>INF</BWS_Bandwidth_Limit>
2. Float value = Negative Infinity. When Validation is off,
element generated: <BWS_Bandwidth_Limit>-INF</BWS_Bandwidth_Limit>
3. Float value = Positive NaN . When Validation is off,
element generated: <BWS_Bandwidth_Limit>NaN</BWS_Bandwidth_Limit>
4. Float value = Negative NaN. When Validation is off,
element generated: <BWS_Bandwidth_Limit>NaN</BWS_Bandwidth_Limit>
Note that “NaN” is output to XML whether the original value was positive or
negative.
Overview:
* I am not at liberty to provide the actual schema files.
* I may be able to provide test messages if necessary. I’m hoping that
the
attached trace provides more than enough info.
* The Input test files to Daffodil are binary.
* The command used in each case is included in the trace files attached.
* Command line options: -t -vv parse -V limited
* Daffodil version: 3.2.1
* Offending element: BWS_Bandwidth.
Files attached:
1. Trace for Positive infinity case.
2. Trace for Negative infinity case.
3. Trace for Positive NaN case.
4. Trace for Negative NaN case.
Thank you for your time,
Mark M. Thompson
Northrop Grumman Defense Systems
Software Engineer
(818) 712-7439