[DFDL-WG] question relevant to evaluation timing - short form
Mike Beckerle
mbeckerle.dfdl at gmail.com
Tue Oct 30 15:01:02 EDT 2012
But, do you know where in the spec or the errata there are any constraints
on format annotations at a particular annotation point? I'm aware of the
one about discriminators (only one, and excludes asserts). But I can't find
anything saying that you can't have more than one format annotation at a
given annotation point, nor anything constraining the relative order of the
various annotations that appear at a given annotation point that would
dis-allow inter-leaving them arbitrarily. (Though I'm happy to see this
constrained.)
I also can't find anything in the IBM XML Schema for DFDL annotations that
would constrain this. This describes the properties allowed on individual
annotation elements, but I don't see how it constrains how they are
combined/interleaved.
On Tue, Oct 30, 2012 at 2:32 PM, Steve Hanson <smh at uk.ibm.com> wrote:
> This makes no sense to me. It doesn't work - you can't spread properties
> across multiple annotations and expect the timing to be different at
> runtime - what if dfdl:length was on one and dfdl:lengthKind on the other?
>
> IBM DFDL disallows this in its xsd for DFDL annotations. Spec should make
> this clear if it doesn't already.
>
> Regards
>
> Steve Hanson
> Architect, Data Format Description Language (DFDL)
> Co-Chair, *OGF DFDL Working Group* <http://www.ogf.org/dfdl/>
> IBM SWG, Hursley, UK*
> **smh at uk.ibm.com* <smh at uk.ibm.com>
> tel:+44-1962-815848
>
>
>
> From: Mike Beckerle <mbeckerle.dfdl at gmail.com>
> To: dfdl-wg at ogf.org,
> Date: 30/10/2012 17:50
> Subject: [DFDL-WG] question relevant to evaluation timing - short
> form
> Sent by: dfdl-wg-bounces at ogf.org
> ------------------------------
>
>
>
>
> Can I do this?
>
> <sequence>
> <annotation><appinfo...>
> <dfdl:setVariable ref="foo" .../>
> <dfdl:sequence initiator="{...expression involving foo...}"/>
> <dfdl:newVariableInstance ref="foo" value="{...some expression...}"/>
> <dfdl:sequence terminator="{...expression involving foo...}"/>
> </appinfo></annotation>
> </element>
>
> See how I am spreading out the evaluation of the runtime-valued properties
> with the setVariable and newVariable stuff.
>
> This works so long as we evaluate everything in schema definition order.
>
> Now let me throw one more wrench (spanner for the UK folks) in the works.
> I'm going to add a short form annotation:
>
> <sequence dfdl:separator="{... expression...}">
> <annotation><appinfo...>
> <dfdl:setVariable ref="foo" .../>
> <dfdl:sequence initiator="{...expression involving foo...}"/>
> <dfdl:newVariableInstance ref="foo" value="{...some expression...}"/>
> <dfdl:sequence terminator="{...expression involving foo...}"/>
> </appinfo></annotation>
> </element>
>
> Now, a short form annotation is equivalent to a long form conversion
> thereof, but in this case is it this one???
>
> <sequence>
> <annotation><appinfo...>
> <!-- short form annotation comes FIRST when converted. -->
> <dfdl:sequence separator="{...expression ...}"/> <!-- Expression
> cannot use variable foo. -->
>
> <dfdl:setVariable ref="foo" .../>
> <dfdl:sequence initiator="{...expression involving foo...}"/>
> <dfdl:newVariableInstance ref="foo" value="{...some expression...}"/>
> <dfdl:sequence terminator="{...expression involving foo...}"/>
>
> </appinfo></annotation>
> </element>
>
>
> Or... is it this one:
>
> <sequence>
> <annotation><appinfo...>
> <dfdl:setVariable ref="foo" .../>
> <dfdl:sequence initiator="{...expression involving foo...}"/>
> <dfdl:newVariableInstance ref="foo" value="{...some expression...}"/>
> <dfdl:sequence terminator="{...expression involving foo...}"/>
>
> <!-- short form annotation comes LAST when converted -->
> <dfdl:sequence separator="{...expression ...}"/> <!-- expression
> could use varible foo. -->
> </appinfo></annotation>
> </element>
>
> I would argue I prefer the first one, because makes the lexical order of
> appearance consistent with evaluation order.
>
> ...mikeb
>
>
>
> --
> Mike Beckerle | OGF DFDL WG Co-Chair
> Tel: 781-330-0412
> --
> dfdl-wg mailing list
> dfdl-wg at ogf.org
> https://www.ogf.org/mailman/listinfo/dfdl-wg
>
> Unless stated otherwise above:
> IBM United Kingdom Limited - Registered in England and Wales with number
> 741598.
> Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
>
--
Mike Beckerle | OGF DFDL WG Co-Chair
Tel: 781-330-0412
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ogf.org/pipermail/dfdl-wg/attachments/20121030/3f9b5540/attachment.html>
More information about the dfdl-wg
mailing list