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

Dave Thompson closed DAFFODIL-2946.
-----------------------------------

This is working as expected and closing as "Won't fix" per dev.  

> Xerces Validation not working for element in HiddenGroupRef
> -----------------------------------------------------------
>
>                 Key: DAFFODIL-2946
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2946
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End
>    Affects Versions: 3.9.0
>            Reporter: Olabusayo Kilo
>            Priority: Major
>
> When you have a schema defined with a group referenced with elements that 
> have facet restrictions, Xerces (validation = on) accurately validates the 
> elements [ex1]. However if that group is referenced as a hidden group ref, 
> Xerces no longer validates the elements in the hidden group [ex2].
> ex1
> {code:xml}
> <tdml:defineSchema name="s2" elementFormDefault="unqualified">
>     <xs:include 
> schemaLocation="/org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
>     <dfdl:format ref="ex:GeneralFormat" lengthUnits="bits" 
> encoding="X-DFDL-HEX-LSBF"
>         byteOrder="littleEndian" bitOrder="leastSignificantBitFirst" 
> alignment="1" alignmentUnits="bits"/>
>     <xs:group name="group1">
>       <xs:sequence>
>         <xs:element name="o4" type="ex:valid_0_through_9" dfdl:length="4" 
> dfdl:lengthKind="explicit"/>
>         <xs:element name="o3" type="ex:valid_0_through_9" dfdl:length="4" 
> dfdl:lengthKind="explicit"/>
>         <xs:element name="o2" type="ex:valid_0_through_9" dfdl:length="4" 
> dfdl:lengthKind="explicit"/>
>         <xs:element name="o1" type="ex:valid_0_through_9" dfdl:length="4" 
> dfdl:lengthKind="explicit"/>
>       </xs:sequence>
>     </xs:group>
>     <xs:simpleType name="string1">
>       <xs:restriction base="xs:string">
>         <xs:length value="1"/>
>       </xs:restriction>
>     </xs:simpleType>
>     <xs:simpleType name="valid_0_through_9">
>       <xs:restriction base="ex:string1">
>         <xs:enumeration value="0"/>
>         <xs:enumeration value="1"/>
>         <xs:enumeration value="2"/>
>         <xs:enumeration value="3"/>
>         <xs:enumeration value="4"/>
>         <xs:enumeration value="5"/>
>         <xs:enumeration value="6"/>
>         <xs:enumeration value="7"/>
>         <xs:enumeration value="8"/>
>         <xs:enumeration value="9"/>
>         <!-- NOTE that 10-15 is illegal, so we use the facet above to 
> represent that
>         while they are well-formed, they are invalid -->
>       </xs:restriction>
>     </xs:simpleType>
>     <xs:element name="r">
>       <xs:complexType>
>         <xs:sequence>
>           <xs:element name="e1">
>             <xs:complexType>
>               <xs:group ref="ex:group1"/>
>             </xs:complexType>
>           </xs:element>
>           <xs:element name="e2">
>             <xs:complexType>
>               <xs:group ref="ex:group1"/>
>             </xs:complexType>
>           </xs:element>
>         </xs:sequence>
>       </xs:complexType>
>     </xs:element>
>   </tdml:defineSchema>
>  <tdml:parserTestCase name="test2"  model="s2">
>     <tdml:document bitOrder="LSBFirst">
>       <!-- 
> _______________________________________________________________________ 1     
> 2     3     4    -->
>       <tdml:documentPart type="bits" bitOrder="LSBFirst" 
> byteOrder="RTL"><![CDATA[ 0001 0010 0011 0100 ]]></tdml:documentPart>
>       <!-- 
> _______________________________________________________________________ 
> invalid = anything above 9 -->
>       <tdml:documentPart type="bits" bitOrder="LSBFirst" 
> byteOrder="RTL"><![CDATA[ 1010 1001 0101 1111 ]]></tdml:documentPart>
>     </tdml:document>
>     <tdml:infoset>
>       <tdml:dfdlInfoset>
>         <ex:r>
>           <e1>
>             <o4>4</o4>
>             <o3>3</o3>
>             <o2>2</o2>
>             <o1>1</o1>
>           </e1>
>           <e2>
>             <o4>F</o4>
>             <o3>5</o3>
>             <o2>9</o2>
>             <o1>A</o1>
>           </e2>
>         </ex:r>
>       </tdml:dfdlInfoset>
>     </tdml:infoset>
>     <tdml:validationErrors>
>       <tdml:error>value 'A' of element 'o1' is not valid</tdml:error>        
>       <tdml:error>value 'F' of element 'o4' is not valid</tdml:error>     
>     </tdml:validationErrors>
>   </tdml:parserTestCase>
> {code}
> ex2
> {code:xml}
>   <tdml:defineSchema name="s3" elementFormDefault="unqualified">
>     <xs:include 
> schemaLocation="/org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd"/>
>     <dfdl:format ref="ex:GeneralFormat" lengthUnits="bits" 
> encoding="X-DFDL-HEX-LSBF"
>         byteOrder="littleEndian" bitOrder="leastSignificantBitFirst" 
> alignment="1" alignmentUnits="bits"/>
>     <xs:group name="group1">
>       <xs:sequence>
>         <xs:element name="o4" type="ex:valid_0_through_9" dfdl:length="4" 
> dfdl:lengthKind="explicit"
>             dfdl:outputValueCalc="{ fn:substring(../value, 4, 1) }"/>
>         <xs:element name="o3" type="ex:valid_0_through_9" dfdl:length="4" 
> dfdl:lengthKind="explicit"
>             dfdl:outputValueCalc="{ fn:substring(../value, 3, 1) }"/>
>         <xs:element name="o2" type="ex:valid_0_through_9" dfdl:length="4" 
> dfdl:lengthKind="explicit"
>             dfdl:outputValueCalc="{ fn:substring(../value, 2, 1) }"/>
>         <xs:element name="o1" type="ex:valid_0_through_9" dfdl:length="4" 
> dfdl:lengthKind="explicit"
>             dfdl:outputValueCalc="{ fn:substring(../value, 1, 1) }"/>
>       </xs:sequence>
>     </xs:group>
>     <xs:group name="group2">
>       <xs:sequence>
>         <xs:sequence dfdl:hiddenGroupRef="ex:group1"/>
>         <xs:element name="value" type="ex:string4" dfdl:inputValueCalc="{ 
> fn:concat(../o1, ../o2, ../o3, ../o4) }"/>
>       </xs:sequence>
>     </xs:group>
>     <xs:simpleType name="string1">
>       <xs:restriction base="xs:string">
>         <xs:length value="1"/>
>       </xs:restriction>
>     </xs:simpleType>
>     <xs:simpleType name="string4">
>       <xs:restriction base="xs:string">
>         <xs:length value="4"/>
>       </xs:restriction>
>     </xs:simpleType>
>     <xs:simpleType name="valid_0_through_9">
>       <xs:restriction base="ex:string1">
>         <xs:enumeration value="0"/>
>         <xs:enumeration value="1"/>
>         <xs:enumeration value="2"/>
>         <xs:enumeration value="3"/>
>         <xs:enumeration value="4"/>
>         <xs:enumeration value="5"/>
>         <xs:enumeration value="6"/>
>         <xs:enumeration value="7"/>
>         <xs:enumeration value="8"/>
>         <xs:enumeration value="9"/>
>         <!-- NOTE that 10-15 is illegal, so we use the facet above to 
> represent that
>         while they are well-formed, they are invalid -->
>       </xs:restriction>
>     </xs:simpleType>
>     <xs:element name="r">
>       <xs:complexType>
>         <xs:sequence>
>           <xs:element name="e1">
>             <xs:complexType>
>               <xs:group ref="ex:group2"/>
>             </xs:complexType>
>           </xs:element>
>           <xs:element name="e2">
>             <xs:complexType>
>               <xs:group ref="ex:group2"/>
>             </xs:complexType>
>           </xs:element>
>         </xs:sequence>
>       </xs:complexType>
>     </xs:element>
>   </tdml:defineSchema>
> <tdml:parserTestCase name="test3"  model="s3" >
>     <tdml:document bitOrder="LSBFirst">
>       <!-- 
> _______________________________________________________________________ 1     
> 2     3     4    -->
>       <tdml:documentPart type="bits" bitOrder="LSBFirst" 
> byteOrder="RTL"><![CDATA[ 0001 0010 0011 0100 ]]></tdml:documentPart>
>       <!-- 
> _______________________________________________________________________ 
> invalid = anything above 9 -->
>       <tdml:documentPart type="bits" bitOrder="LSBFirst" 
> byteOrder="RTL"><![CDATA[ 1010 1001 0101 1111 ]]></tdml:documentPart>
>     </tdml:document>
>     <tdml:infoset>
>       <tdml:dfdlInfoset>
>         <ex:r>
>           <e1><value>1234</value></e1>
>           <e2><value>A95F</value></e2>
>         </ex:r>
>       </tdml:dfdlInfoset>
>     </tdml:infoset>
>     <tdml:validationErrors><!--fails with no ValidationErrors found-->
>       <tdml:error>value 'A' of element 'o1' is not valid</tdml:error>
>       <tdml:error>value 'F' of element 'o4' is not valid</tdml:error>
>     </tdml:validationErrors>
>   </tdml:parserTestCase>
> {code}



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

Reply via email to