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

Steve Lawrence updated DAFFODIL-2875:
-------------------------------------
    Priority: Minor  (was: Major)

> Incorrect warning about ignored properties
> ------------------------------------------
>
>                 Key: DAFFODIL-2875
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2875
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Front End
>            Reporter: Steve Lawrence
>            Assignee: Olabusayo Kilo
>            Priority: Minor
>
> Say we have this schema:
> {code:xml}
> <xs:schema
>   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/";
>   xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>    
>   <xs:include 
> schemaLocation="/org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd" />
>    
>   <xs:annotation>
>     <xs:appinfo source="http://www.ogf.org/dfdl/";>
>       <dfdl:format ref="GeneralFormat" lengthKind="delimited" />
>     </xs:appinfo>
>   </xs:annotation>
>    
>   <xs:element name="DinnerTime">
>     <xs:complexType>
>       <xs:choice>
>         <xs:element ref="MonthDayTime" />
>         <xs:element ref="DayTime" />
>       </xs:choice>
>     </xs:complexType>
>   </xs:element>
>   
>   <xs:element name="MonthDayTime">
>     <xs:complexType>
>       <xs:sequence>
>         <xs:element ref="Month"/>
>         <xs:element ref="Day"/>
>       </xs:sequence>
>     </xs:complexType>
>   </xs:element>
>   
>   <xs:element name="DayTime">
>     <xs:complexType>
>       <xs:sequence>
>         <xs:element ref="Day"/>
>       </xs:sequence>
>     </xs:complexType>
>   </xs:element>
>   
>   <xs:element name="Month"
>     type="xs:unsignedInt"
>     dfdl:lengthKind="explicit"
>     dfdl:length="2"
>     dfdl:textNumberRep="standard"
>     dfdl:textNumberCheckPolicy="strict"
>     dfdl:textNumberPattern="00"
>     dfdl:textStandardGroupingSeparator=","
>     dfdl:textStandardDecimalSeparator="."
>     dfdl:textStandardBase="10"
>     dfdl:textNumberRounding="pattern">
>   </xs:element>
>   
>   <xs:element name="Day"
>     type="xs:unsignedInt"
>     dfdl:lengthKind="explicit"
>     dfdl:length="2"
>     dfdl:textNumberRep="standard"
>     dfdl:textNumberCheckPolicy="strict"
>     dfdl:textNumberPattern="00"
>     dfdl:textStandardGroupingSeparator=","
>     dfdl:textStandardDecimalSeparator="."
>     dfdl:textStandardBase="10"
>     dfdl:textNumberRounding="pattern">
>   </xs:element>
>   
> </xs:schema>
> {code}
> When compiling this schema we get the warnings:
> {quote}
> [warn] Schema Definition Warning: DFDL property was ignored: 
> textStandardBase="10" (id: ignoreDFDLProperty)
> Schema context: Day Location line 52 column 4 in 
> .../home/slawrence/downloads/foo.dfdl.xsd
> [warn] Schema Definition Warning: DFDL property was ignored: 
> textNumberPattern="00" (id: ignoreDFDLProperty)
> Schema context: Day Location line 52 column 4 in 
> .../home/slawrence/downloads/foo.dfdl.xsd
> [warn] Schema Definition Warning: DFDL property was ignored: 
> textNumberRounding="pattern" (id: ignoreDFDLProperty)
> Schema context: Day Location line 52 column 4 in 
> .../home/slawrence/downloads/foo.dfdl.xsd
> [warn] Schema Definition Warning: DFDL property was ignored: 
> textNumberRep="standard" (id: ignoreDFDLProperty)
> Schema context: Day Location line 52 column 4 in 
> .../home/slawrence/downloads/foo.dfdl.xsd
> [warn] Schema Definition Warning: DFDL property was ignored: 
> textNumberCheckPolicy="strict" (id: ignoreDFDLProperty)
> Schema context: Day Location line 52 column 4 in 
> .../home/slawrence/downloads/foo.dfdl.xsd
> {quote}
> Testing shows this warnings are clearly wrong and are not actually ignored.
> One workaround is to use a separate simpleType for your elements and use that 
> as the type of your referenced element. For example, change your Day element 
> to this:
> {code:xml}
>   <xs:element name="Day" type="DayType" />
>   <xs:simpleType name="DayType"
>     ... DFDL properties here ... >
>     <xs:restriction base="xs:unsignedInt />
>   </xs:simpleType>
> {code}
> You can reference Day just like you did before, e.g.
> {code:xml}
>   <xs:element ref="Day" />
> {code}
> For reference, here's what I think is going on:
> The schema has multiple references to the same elements (e.g. two references 
> to the Day element). This allows Daffodil to share internal parsers. So even 
> though there are two references to the "Day" element, we only generate one 
> "Day" sub-parser, and reuse the exact same sub-parser in two different places 
> in the final parser we generate. This can pretty drastically reduce schema 
> compilation time because we can completely skip building a second sub-parser 
> that is identical.
> The problem is that we store which properties an element uses on the local 
> element that does the referencing, not the element that is actually 
> referenced. So we have two different lists of "used properties".
> The first local element generates a sub-parser for the referenced element, 
> and that uses all of the properties, and marks the properties as used by the 
> first local element.
> The second local element figures out that it can share the sub-parser, so any 
> properties that are used when that sub-parser is generated do not get marked 
> as used on the second local element.
> And then when we do our check for unused properties, from the perspective of 
> the second local element, some properties were never used because it doesn't 
> know the first local element used them and the second element skipped all 
> that work.
> And I think the workaround works because the referenced element has no 
> properties defined directly on it so it looks like there are no properties 
> that might be unused. This might actually be a related bug, in that we should 
> be considering if the properties defined on the simple type of the referenced 
> element are used or not. With the mentioned workaround, I've confirmed that 
> if the simple type has properties that are not used then there is no warning 
> like there should be.



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

Reply via email to