> I think you may also always need textStandardDecimalSeparator and 
> textStandardGroupingSeparator since different locales use different 
> separators. E.g. is 1,234 the integer 1234 or decimal 1.234.

I didn't have either of those properties in my DFDL schema and Daffodil did not 
throw an error. Bug in Daffodil?

NumStudents is an integer, not a decimal, so why would 
textStandardDecimalSeparator be needed?

Once the bugs are fixed in Daffodil, is this how NumStudents will be declared? 
(I am assuming the textStandardDecimalSeparator is not needed)

<xs:element name="NumStudents" type="xs:integer"
    dfdl:textNumberPattern="#"
    dfdl:textNumberRep="standard"
    dfdl:textStandardBase="10"
    dfdl:textStandardExponentRep="e"
    dfdl:textStandardZeroRep="zero"
    dfdl:textStandardGroupingSeparator=","
/>



-----Original Message-----
From: Steve Lawrence <slawre...@apache.org> 
Sent: Monday, November 8, 2021 11:17 AM
To: users@daffodil.apache.org
Subject: [EXT] Re: Why do I need to specify the DFDL rounding properties for an 
integer data item?

I think you may also always need textStandardDecimalSeparator and 
textStandardGroupingSeparator since different locales use different 
separators. E.g. is 1,234 the integer 1234 or decimal 1.234.

I think the rounding related, infinity, and NaN properties might be the 
only ones that integers don't really need.

On 11/8/21 10:20 AM, Roger L Costello wrote:
> Thanks Mike. So, once the bugs are fixed in Daffodil, exactly what DFDL
> properties will I use to specify NumStudents?  Will it be this:
> 
> <xs:element name="NumStudents" type="xs:integer"
>       dfdl:textNumberPattern="#"
>       dfdl:textNumberRep="standard"
>       dfdl:textStandardBase="10"
>       dfdl:textStandardExponentRep="E"
>       dfdl:textStandardZeroRep="0"
> />
> 
> *From:* Mike Beckerle <mbecke...@apache.org>
> *Sent:* Monday, November 8, 2021 10:14 AM
> *To:* users@daffodil.apache.org
> *Subject:* [EXT] Re: Why do I need to specify the DFDL rounding properties for
> an integer data item?
> 
> Answer: The dependencies you see are due to bugs in Daffodil. Code sharing in
> Daffodil often results in code paths being shared between many simple types 
> like
> floats and integers, hence, often the code path needing rounding specifiers is
> taken even for ordinary non-rounding situations.
> 
> These are bugs. The DFDL spec provides a precedence of properties and that 
> says
> which properties are allowed to depend on or require the existence of others.
> These unnecessary ones are all just due to code sharing in the Daffodil
> implementation.
> 
> Because there is a minor workaround in Daffodil - just specify all of these 
> in a
> base format - we have not given much priority to fixing such bugs.
> 
> However, they're good beginner bugs for new people working on the code base, 
> so
> we should start marking them as such.
> 
> On Mon, Nov 8, 2021 at 8:36 AM Roger L Costello <coste...@mitre.org
> <mailto:coste...@mitre.org>> wrote:
> 
>      I'd like to add to my question. Suppose NumStudents is an ordinary 
> integer
>      that every 1st grader understands: base 10, no exponents, 0 means no
>      students. In that case, I don't understand why any of the properties 
> shown
>      below have to be specified. And yet they must, or an error will be
>      generated. It seems to me that DFDL should make it possible to specify
>      simple things simply, but this sure looks like an example of having to
>      specify all sorts of complex properties to specify a very simple use 
> case.
>      Am I mistaken?  /Roger
> 
>      -----Original Message-----
>      From: Roger L Costello <coste...@mitre.org <mailto:coste...@mitre.org>>
>      Sent: Monday, November 8, 2021 9:11 AM
>      To: users@daffodil.apache.org <mailto:users@daffodil.apache.org>
>      Subject: Why do I need to specify the DFDL rounding properties for an
>      integer data item?
> 
>      Hi Folks,
> 
>      My input is  a single integer representing the number of students in a
>      classroom, e.g.,
> 
>               30
> 
>      The following  shows the declaration of the element NumStudents. Notice 
> the
>      plethora of DFDL properties. They are the minimum properties - if you 
> omit
>      any of them, you will get an error. I don't understand why the rounding
>      properties are required. There's no rounding with integers, so why do I 
> need
>      to specify those properties? Even if rounding did apply to integers, 
> then it
>      is mighty odd to specify that rounding is not necessary
>      (textNumberRoundingMode="roundUnnecessary") and then be required to 
> specify
>      the rounding increment (textNumberRoundingIncrement) ... doesn't that 
> strike
>      you as a bit odd?
> 
>      Also, I don't show it, but the fillByte property is required (if I delete
>      it, an error is raised). Huh? Filling is a concept of binary data 
> formats,
>      not text data formats, so why do I need to specify it?  /Roger
> 
>      <xs:element name="NumStudents" type="xs:integer"
>           dfdl:textNumberPattern="#"
>           dfdl:textNumberRep="standard"
>           dfdl:textStandardBase="10"
>           dfdl:textStandardExponentRep="E"
>           dfdl:textStandardZeroRep="0"
>           dfdl:textNumberRounding="explicit"
>           dfdl:textNumberRoundingMode="roundUnnecessary"
>           dfdl:textNumberRoundingIncrement="1"
>           dfdl:textNumberCheckPolicy="strict"
>      />
> 

Reply via email to