Still not fixed in Daffodil version 3.2.1 Bummer.
/Roger From: Roger L Costello <coste...@mitre.org> Sent: Thursday, December 2, 2021 8:00 AM To: users@daffodil.apache.org Subject: Re: Huh? Nillable complex type elements can only have '%ES;' as their dfdl:nilValue property Hi Mike, 1. Would you get the DFDL committee to remove this restriction, please? 2. I have 350 data formats, each having dozens of fields with nillable complexTypes. So there is a strong use case for removing the restriction. 3. The choice idea that you presented, although clever and interesting, is not suitable. In the example I presented, the output XML should be one of these: <MyField>-</MyField> <MyField> <DateTimeIso>…</DateTimeIso> </MyField> <MyField> <MonthName>…</MonthName> </MyField> With the technique you showed, the output would be one of these: <noValue>-</noValue> <MyField> <DateTimeIso>…</DateTimeIso> </MyField> <MyField> <MonthName>…</MonthName> </MyField> That first one -- <noValue> -- is not unacceptable to my community. /Roger From: Mike Beckerle <mbecke...@apache.org<mailto:mbecke...@apache.org>> Sent: Wednesday, December 1, 2021 4:06 PM To: users@daffodil.apache.org<mailto:users@daffodil.apache.org> Subject: [EXT] Re: Huh? Nillable complex type elements can only have '%ES;' as their dfdl:nilValue property This is definitely a DFDL language restriction, not a Daffodil-specific thing. I have made inquiries as to what the rationale is for this restriction, and I'll report back. In the mean time, maybe this sort of technique. <choice> <element name="noValue" type="xs:string" dfdl:lengthKind="explicit" dfdl:length="0" dfdl:initiator="-"/> <element name="myComplexType"> .... non nillable complex type definition .... </element> </choice> I have to admit that this workaround sort of suggests that there isn't a coherent rationale for the restriction, as this is pretty obviously equivalent to the complex type being nillable with nilValue="-". On Wed, Dec 1, 2021 at 12:43 PM Roger L Costello <coste...@mitre.org<mailto:coste...@mitre.org>> wrote: Hi Folks, I am creating a DFDL schema for a data format that has a field whose value is a hyphen when no data is available and when data is available, then the field contains either an ISO datetime or a 3-letter month name. Here's how I specified the field: <xs:element name="MyField" nillable="true" dfdl:nilValue="-"> <xs:complexType> <xs:choice dfdl:choiceLengthKind="implicit"> <xs:element name="DateTimeIso"> <xs:complexType> <xs:sequence> ... </xs:sequence> </xs:complexType> </xs:element> <xs:element name="MonthName" type="xs:string" dfdl:length="3" dfdl:lengthKind="explicit" /> </xs:choice> </xs:complexType> </xs:element> When I run it, Daffodil gives this error message: [error] Schema Definition Error: Nillable complex type elements can only have '%ES;' as their dfdl:nilValue property. Is that an error in Daffodil? Or, is it an actual DFDL restriction? If the latter, why is there such a restriction? How do I work around this error? /Roger