I ran a test with IBM DFDL (Java) with textNumberPattern '00.####' and textNumberCheckPolicy 'lax' and all the variations below parse dsuccessfully. It also parsed "99."

I then ran the test with textNumberCheckPolicy 'strict' and it also parsed successfully. There's some leniency inherent in ICU's strict mode, but this particular leniency does not correspond to the words in the latest spec internal draft...

If ‘strict’ and dfdl:textNumberRep is ‘standard’ then the data must follow the pattern with the exceptions that digits 0-9, decimal separator and exponent separator are always recognised and parsed.

IBM has an ongoing discussion with ICU in this area, I'll add this to the agenda.

Regards

Steve Hanson
Architect, IBM Data Format Description Language (DFDL)
Co-Chair,
OGF DFDL Working Group
IBM SWG, Hursley, UK

smh@uk.ibm.com
tel:+44-1962-815848




From:        Mike Beckerle <mbeckerle.dfdl@gmail.com>
To:        dfdl-wg@ogf.org,
Date:        18/05/2013 19:49
Subject:        [DFDL-WG] examples of decimal validation using pattern facet
Sent by:        dfdl-wg-bounces@ogf.org






Roger costello of Mitre provides this example of using pattern facet.

Basically, it expresses several different possible formats, all of which are some combination of digits and a optional decimal point.  In terms of cobol-style patterns it is one of these formats:

99
99.9
99.99
99.999
99.9999

I am not sure a textNumberPattern can handle the optionality of the decimal point. I know we can deal with the varying number of fraction digits, and the fixed number of integer digits, but conditional decimal point I am unsure about.







---------- Forwarded message ----------
From: Costello, Roger L. <
costello@mitre.org>
Date: Fri, May 17, 2013 at 4:00 PM
Subject: RE: examples of decimal validation using pattern facet
To: Mike Beckerle <
mbeckerle.dfdl@gmail.com>
Cc: "Cranford, Jonathan W." <
jcranford@mitre.org>

Hello Mike,

 

Ø  Can you send an example of the lat/lon validation

Ø  you mentioned on yesterday's Daffodil call?

 

Here ya go:


           
<xsd:simpleType name="foo">
                       
<xsd:restriction base="xsd:decimal">

                                    <xsd:minInclusive value="00"/>
                                   
<xsd:maxInclusive value="59.9999"/>
                                   
<xsd:pattern value="[0-9]{2}|[0-9]{2}\.[0-9]{1}|[0-9]{2}\.[0-9]{2}|[0-9]{2}\.[0-9]{3}|[0-9]{2}\.[0-9]{4}"/>
                       
</xsd:restriction>
           
</xsd:simpleType>

 

/Roger

 

From: Mike Beckerle [mailto:mbeckerle.dfdl@gmail.com]
Sent:
Thursday, May 16, 2013 8:15 AM
To:
Costello, Roger L.
Subject:
examples of decimal validation using pattern facet

 

Roger,

Can you send an example of the lat/lon validation you mentioned on yesterday's Daffodil call?

The other members of the workgroup are wondering what can't be done via totalDigits/fractionDigits, etc.

The rationale for why pattern facet is not supported on numbers in DFDL is that we already have a much more powerful mechanism for parsing and unparsing numbers called textNumberPattern. The pattern facet only allows pass/fail using a regex, and is considered redundant (and problematic) for numbers as a result.

...mike


--
Mike Beckerle | OGF DFDL Workgroup Co-Chair | Tresys Technology |
www.tresys.com




--
Mike Beckerle | OGF DFDL Workgroup Co-Chair | Tresys Technology |
www.tresys.com
--
 dfdl-wg mailing list
 dfdl-wg@ogf.org
 
https://www.ogf.org/mailman/listinfo/dfdl-wg

Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU