You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Mike McGann (Jira)" <ji...@apache.org> on 2023/02/16 19:21:00 UTC

[jira] [Commented] (DAFFODIL-2324) Unparser choice branch selection not conformant to DFDL standard

    [ https://issues.apache.org/jira/browse/DAFFODIL-2324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17689937#comment-17689937 ] 

Mike McGann commented on DAFFODIL-2324:
---------------------------------------

I'm taking a look at this now and trying to come up with a few test cases but I'm unsure of what I should be placing in the hidden groups. Can I get an example of what would be in the true and false hidden groups? Thanks. 

> Unparser choice branch selection not conformant to DFDL standard
> ----------------------------------------------------------------
>
>                 Key: DAFFODIL-2324
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2324
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End
>    Affects Versions: 2.5.0
>            Reporter: Mike Beckerle
>            Assignee: Mike McGann
>            Priority: Major
>
> Erratum 5.60 of the DFDL spec clarifies how choice branch selection works.
> Our current schemas that use presence bits flags use a structure like this:
> {code:java}
> <choice>
>  <sequence>
>    <sequence dfdl:hiddenGroupRef="PI_true"/>
>  
>      <sequence>
>       <element name="foo" minOccurs="0" ...../>
>       <element name="bar" minOccurs="0" ..../>
>    </sequence>
>  
>    <sequence dfdl:hiddenGroupRef="PI_false"/>
>  
>  </choice>{code}
> We depend on the fact that by default this chooses the PI_false hidden group when the incoming infoset event is not for a foo nor bar element. 
> The DFDL spec says (with the Erratum/Clarification) that if we want PI_false to be chosen, then we must flip the order of these two choice branches.
> Daffodil is currently preferring the "more empty" of the two branches, and so seleting PI_false, rather than just taking the first possibly empty branch.
> Once we fix this behavior to conform to the spec., we will have to update DFDL schemas that use this behavior, and actually flip these branches.
> Based on that, we may want to put a compatibility flag into daffodil. Or perhaps a feature to generate a warning whenever there is more than one empty choice branch that *could* be selected, if the current functionality selects a default branch that is not the first possibly empty branch thena warning would be issued indicating that the branches should be reordered. 
> The only schema I know of that is sensitive to this bug is mil-std-6017/VMF (and variants thereof).
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)