[DFDL-WG] recent puzzlers on fn:count and fn:exists

Mike Beckerle mbeckerle.dfdl at gmail.com
Tue Oct 8 12:05:52 EDT 2019


These questions came up recently from daffodil users. I know what Daffodil
will return here, but the spec is not clear to me as to whether that's the
right answer or is even defined.

Can an array count itself? Like this:



<xs:element name="name" type="xs:string" maxOccurs="unbounded">
    <xs:annotation>
        <xs:appinfo source="http://www.ogf.org/dfdl/">
            <dfdl:discriminator test="{ fn:count(.) le 5 }" />
        </xs:appinfo>
    </xs:annotation>
</xs:element>


The above can be reformulated by calling instead of fn:count,
dfdl:occursIndex(), and that's definitely well defined in this case. But
what does fn:count return in this case? Daffodil will return the same value

as the occursIndex, because it will have speculatively attached the array
element to the infoset at the time the fn:count function is being
evaluated. But I don't know if that is the right answer or if we should
simply say that fn:count is not defined in this case.


Similarly, does an array element exist when it is being parsed?


<xs:element name="name" type="xs:string" maxOccurs="unbounded">
    <xs:annotation>
        <xs:appinfo source="http://www.ogf.org/dfdl/">
            <dfdl:discriminator test="{ fn:exists(.) }" />
        </xs:appinfo>
    </xs:annotation>
</xs:element>



Mike Beckerle | OGF DFDL Workgroup Co-Chair | Tresys Technology |
www.tresys.com
Please note: Contributions to the DFDL Workgroup's email discussions are
subject to the OGF Intellectual Property Policy
<http://www.ogf.org/About/abt_policies.php>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ogf.org/pipermail/dfdl-wg/attachments/20191008/f7f0c42d/attachment.html>


More information about the dfdl-wg mailing list