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

Reply via email to