[DFDL-WG] Numbers with multiple ranges

Steve Hanson smh at uk.ibm.com
Mon Mar 9 03:45:39 CDT 2009


It's a validation issue. I have a packed decimal number with ranges 0-100, 
200-300, 400-500. I can't parse and validate this with DFDL. WTX can 
handle this today.

Regards

Steve Hanson
Programming Model Architect
WebSphere Message Brokers
Hursley, UK
Internet: smh at uk.ibm.com
Phone (+44)/(0) 1962-815848



DFDL <mbeckerle.dfdl at gmail.com> 
07/03/2009 04:49

To
Steve Hanson/UK/IBM at IBMGB
cc
"dfdl-wg at ogf.org" <dfdl-wg at ogf.org>
Subject
Re: [DFDL-WG] Numbers with multiple ranges






What does this have to do with representation/ format ? 

Seems totally out of scope to me. 

...mikeb


On Mar 6, 2009, at 12:18 PM, Steve Hanson <smh at uk.ibm.com> wrote:


One of the existing non-XML parsers from IBM is capable of modelling an 
integer or decimal with non-contiguous ranges, eg, 0-100, 200-300, 
400-500.  It is also possible to model this using XML Schema, using a 
user-defined simple type which is a union of simple type restrictions. 

However it is not possible to model this in DFDL because unions are not 
supported. A choice could be used, but that would give different named 
elements in the resultant infoset depending on the value, which is not 
ideal. 

I believe this is use case that we should consider for DFDL 1.0.  We could 
decide to allow unions, but with a constraint that the members of the 
union had to be restrictions of the same built-in type, and that clashing 
DFDL properties on the members was an error. I believe the existing 
scoping rules for visiting types would still apply ok. No annotation 
appears on the xs:union only on the xs:simpleType as currently. The net 
effect is that our parsing rules are the same as currently, but we gain 
validation capability. 

I am not in favour of more widespread support for unions. I don't have a 
compelling use case for union of different logical types, eg, xs:dateTime 
and xs:string. 

Your thoughts are welcome. 

  !-- integer range 0 - 100 
  <xsd:simpleType name="intRange1"> 
    <xsd:restriction base="xsd:int"> 
      <xsd:maxInclusive value="100"/> 
      <xsd:minInclusive value="0"/> 
    </xsd:restriction> 
  </xsd:simpleType> 

  !-- integer range 200 - 300 
  <xsd:simpleType name="intRange2"> 
    <xsd:restriction base="xsd:int"> 
      <xsd:maxInclusive value="300"/> 
      <xsd:minInclusive value="200"/> 
    </xsd:restriction> 
  </xsd:simpleType> 

  !-- integer range 400-500 
  <xsd:simpleType name="intRange3"> 
    <xsd:restriction base="xsd:int"> 
      <xsd:maxInclusive value="500"/> 
      <xsd:minInclusive value="400"/> 
    </xsd:restriction> 
  </xsd:simpleType> 

  !-- Union of above types 
  <xsd:simpleType name="intRange"> 
    <xsd:union memberTypes="intRange1 intRange2 intRange3"/> 
  </xsd:simpleType> 

  !-- Union of anonymous types being restrictions of above types 
  <xsd:simpleType name="intRangeLocal"> 
    <xsd:union> 
      <xsd:simpleType> 
        <xsd:restriction base="intRange1"/> 
      </xsd:simpleType> 
      <xsd:simpleType> 
        <xsd:restriction base="intRange2"/> 
      </xsd:simpleType> 
      <xsd:simpleType> 
        <xsd:restriction base="intRange3"/> 
      </xsd:simpleType> 
    </xsd:union> 
  </xsd:simpleType> 

  !-- Union of anonymous types being local restrictions 
  <xsd:simpleType name="intRangeLocalRestrictions"> 
    <xsd:union> 
      <xsd:simpleType> 
        <xsd:restriction base="xsd:int"> 
          <xsd:minInclusive value="0"/> 
          <xsd:maxInclusive value="100"/> 
        </xsd:restriction> 
      </xsd:simpleType> 
      <xsd:simpleType> 
        <xsd:restriction base="xsd:int"> 
          <xsd:minInclusive value="200"/> 
          <xsd:maxInclusive value="300"/> 
        </xsd:restriction> 
      </xsd:simpleType> 
      <xsd:simpleType> 
        <xsd:restriction base="xsd:int"> 
          <xsd:minInclusive value="400"/> 
          <xsd:maxInclusive value="500"/> 
        </xsd:restriction> 
      </xsd:simpleType> 
    </xsd:union> 
  </xsd:simpleType> 

Regards

Steve Hanson
Programming Model Architect
WebSphere Message Brokers
Hursley, UK
Internet: smh at uk.ibm.com
Phone (+44)/(0) 1962-815848




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 






--
 dfdl-wg mailing list
 dfdl-wg at ogf.org
 http://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





-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20090309/7aa5615a/attachment.html 


More information about the dfdl-wg mailing list