[ 
https://issues.apache.org/jira/browse/DAFFODIL-2019?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steve Lawrence resolved DAFFODIL-2019.
--------------------------------------
    Resolution: Fixed

Fixed in commit 73bc75630e2d3f8cebd0a5260fd45ca88f6b3ef2

> daf extension property to turn on/off "hexBinary with bits" lengthUnits 
> behavior
> --------------------------------------------------------------------------------
>
>                 Key: DAFFODIL-2019
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2019
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Compatibility, Front End
>    Affects Versions: 2.2.0
>            Reporter: Michael Beckerle
>            Assignee: Steve Lawrence
>            Priority: Major
>             Fix For: 2.3.0
>
>
> We need a property to turn on/off the daffodil extension where xs:hexBinary 
> elements can have length expressed in bits.
> This functionality, as implemented today (Nov 2018) is backwards incompatible 
> with the DFDL spec, so is unlikely to be accepted as part of the DFDL 
> standard; hence, a way to turn this on and off, with the default setting to 
> be off, is needed.
> Specifically, this feature of Daffodil makes the hexBinary infoset contents 
> of a hexbinary element dependent on the byteOrder and bitOrder properties. 
> Today, in the DFDL spec, xs:hexBinary is independent of these properties, 
> making it suddenly dependent on them will change behavior of existing 
> schemas. That just won't fly. 
> Probably we need to deprecate this functionality and remind users to model 
> such data as xs:nonNegativeInteger instead. 
> The xs:hexBinary type is really heavily constrained by its role in XSD. E.g., 
> it has length facets. This really makes it much more like a text string than 
> any sort of universal blob that can represent binary data. It's behavior 
> really should be like text strings. My preferred concept for hexBinary is 
> that you parse a text string as iso-8859-1 then convert each character to 2 
> hex digits one by one for the infoset. That keeps you out of trouble with 
> length facets, etc. 
> Users will still want to be able to express that some number of unaligned 
> bits, not a multiple of 4 or 8 long, and not starting, nor ending, on a byte 
> boundary, is in their data and is not numeric data, so base 10 numeric 
> presentation in the infoset is not natural.
> Such data can be best modeled as a xs:nonNegativeInteger. Changing the 
> infoset presentation of this data so that it looks like hex, not base 10, is 
> not really DFDL's primary purpose. It is always possible to convert to 
> xs:hexBinary via dfdl:inputValueCalc, and for unparsing, converted back by 
> dfdl:outputValueCalc. Alas this is always going to run into the "value 
> element problem", i.e., the data would be like:
> <myDataBits><hexvalue>F34A37</hexvalue></myDataBits>
> where the extra <hexvalue>...</hexvalue> is needed to support the 
> dfdl:inputValueCalc/dfdl:outputValueCalc pair, and a hidden group that hides 
> the base 10 nonNegativeInteger representation.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to