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

Steve Lawrence resolved DAFFODIL-2021.
--------------------------------------
       Resolution: Fixed
    Fix Version/s: 2.3.0

Fixed in commit a2f56a3f44d307a138fb7a4614f873120e186d63

> Daffodil expressions for properties should not auto-coerce to property type. 
> Test BC000.
> ----------------------------------------------------------------------------------------
>
>                 Key: DAFFODIL-2021
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2021
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Middle "End"
>    Affects Versions: 2.2.0
>            Reporter: Michael Beckerle
>            Assignee: Steve Lawrence
>            Priority: Major
>             Fix For: 2.3.0
>
>
> Recently discovered that IBM DFDL properly detects an error in test BC000.
> This test uses an element with this property:
> {{{
> dfdl:textBooleanTrueRep="{ 1*10 }"
> }}}
> DFDL spec section 23.3 says:
> * Every property that accepts an expression states exactly what the 
> expression is expected to return. To ensure the returned value is of the 
> correct type, an expression must use XPath constructors or the correct 
> literal values.
> * No extra auto-casting is performed over and above that provided by XPath 
> 2.0. XPath 2.0 has rules for when it promotes types and when it allows types 
> to be substituted. These are in Appendix B.1 of the XPath 2.0 spec.
> Note the use of 'must' in the first bullet. 
> Daffodil 2.2.0 actually knows this property wants a string, so compiles in an 
> automatic conversion of this number to a string. This is incorrect. It should 
> be insisting that the property expression return the proper type. 
> For portability the test has been modified to have:
> {{{
> dfdl:textBooleanTrueRep="{ xsd:string(1*10) }"
> }}}
> This of course passes both IBM DFDL and Daffodil. 
> However, the bug remains in Daffodil that the auto-conversion was inserted 
> rather than detecting what was, most likely, a user error. Writing a numeric 
> expression for textBooleanTrueRep, or most other string-valued properties is 
> almost certainly an error by the schema author, not something where they're 
> expecting a numeric value to be used for the string. So this is just going to 
> potentially match silly mistakes by schema authors. 



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

Reply via email to