You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Josh Adams (Jira)" <ji...@apache.org> on 2021/03/15 14:26:00 UTC
[jira] [Assigned] (DAFFODIL-2481) newVariableInstance does not use
external values when defaultValue is not defined
[ https://issues.apache.org/jira/browse/DAFFODIL-2481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Josh Adams reassigned DAFFODIL-2481:
------------------------------------
Assignee: Josh Adams
> newVariableInstance does not use external values when defaultValue is not defined
> ---------------------------------------------------------------------------------
>
> Key: DAFFODIL-2481
> URL: https://issues.apache.org/jira/browse/DAFFODIL-2481
> Project: Daffodil
> Issue Type: Bug
> Affects Versions: 3.0.0
> Reporter: Steve Lawrence
> Assignee: Josh Adams
> Priority: Major
>
> Regarding newVariableInstance and defaultValue, the spec says:
> {quote}
> If the instance is not assigned a new default value then it inherits the default value specified by dfdl:defineVariable or externally provided by the DFDL processor.
> {quote}
> Daffodil does not support the "or externally provided" part of this. If NVI does not provide a defaultValue, then we always use the defaultValue specified by the defineVariable, regardless if it was set externally.
> For example, say we have this schema:
> {code:xml}
> <xs:annotation>
> <xs:appinfo source="http://www.ogf.org/dfdl/">
> <dfdl:format ref="ex:GeneralFormat" />
> <dfdl:defineVariable name="var1" type="xs:int" defaultValue="1" external="true" />
> </xs:appinfo>
> </xs:annotation>
> <xs:element name="root">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="beforeNVI" type="xs:int" dfdl:inputValueCalc="{ $ex:var1 }" />
> <xs:sequence>
> <xs:annotation>
> <xs:appinfo source="http://www.ogf.org/dfdl/">
> <dfdl:newVariableInstance ref="ex:var1" />
> </xs:appinfo>
> </xs:annotation>
> <xs:element name="afterNVI" type="xs:int" dfdl:inputValueCalc="{ $ex:var1 }" />
> </xs:sequence>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> {code}
> So the "var1" variable defaults to "1", and newVariableInstance does not provide a default value.
> If we run the following to parse with an externally set value of 2:
> {code}
> daffodil parse -Dvar1=2 ...
> {code}
> Then we get the resulitng infoset:
> {code:xml}
> <root>
> <beforeNVI>2</beforeNVI>
> <afterNVI>1</afterNVI>
> </root>
> {code}
> Which isn't correct. Because var1 was set externally to 2, the NVI should use that value as the default, so both beforeNVI and afterNVI should have a value of 2.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)