You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@daffodil.apache.org by Roger L Costello <co...@mitre.org> on 2022/01/25 16:53:48 UTC

RE: Huh? Nillable complex type elements can only have '%ES;' as their dfdl:nilValue property

Still not fixed in Daffodil version 3.2.1

Bummer.

/Roger

From: Roger L Costello <co...@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 <mb...@apache.org>>
Sent: Wednesday, December 1, 2021 4:06 PM
To: users@daffodil.apache.org<ma...@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 <co...@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

Re: Huh? Nillable complex type elements can only have '%ES;' as their dfdl:nilValue property

Posted by Mike Beckerle <mb...@apache.org>.
I have posed the question to the DFDL-WG.

Unless there is some reason why we shouldn't do this, I propose that we add
a property to Daffodil to enable this alternate behavior (lifting the
restriction), and assuming the prototype implementation proves acceptable,
propose this change for DFDL v2.0.


On Tue, Jan 25, 2022 at 11:55 AM Roger L Costello <co...@mitre.org>
wrote:

> Still not fixed in Daffodil version 3.2.1
>
>
>
> Bummer.
>
>
>
> /Roger
>
>
>
> *From:* Roger L Costello <co...@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 <mb...@apache.org>
> *Sent:* Wednesday, December 1, 2021 4:06 PM
> *To:* 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 <co...@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
>
>

Re: Huh? Nillable complex type elements can only have '%ES;' as their dfdl:nilValue property

Posted by Mike Beckerle <mb...@apache.org>.
Created https://issues.apache.org/jira/browse/DAFFODIL-2636.

Now if someone would just volunteer to implement this.....:-)



On Tue, Jan 25, 2022 at 11:55 AM Roger L Costello <co...@mitre.org>
wrote:

> Still not fixed in Daffodil version 3.2.1
>
>
>
> Bummer.
>
>
>
> /Roger
>
>
>
> *From:* Roger L Costello <co...@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 <mb...@apache.org>
> *Sent:* Wednesday, December 1, 2021 4:06 PM
> *To:* 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 <co...@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
>
>