[DFDL-WG] Floating elements and unordered groups

Stephanie Fetzer sfetzer at us.ibm.com
Mon Jan 11 17:37:26 CST 2010


All:

I remember a bit of a conversation on this topic from a while back - one 
of the things we were addressing was multi-level  unorderedness. An 
unordered group (or an ordered group with floating components) within an 
unordered group (or an ordered group with floating components).  This is 
allowed in WTX and we wanted to make sure that it was specifically allowed 
in DFDL.  We do no restrict unordered groups at all in this respect. 

In V34 the DFDL spec contained the concept of "unordered" versus 
"unorderedInitiated" but that was removed ( with v35) and the 'children 
must be xs:element' phrase was added).

The other goal of the wording in the spec was to make sure that an 
unordered group was parsed/serialized  the exact same way as an ordered 
group with ALL unordered components. 
If we have a group with n-1 floating components then that is really the 
functional equivalent of having n floating components.  The one 'static' 
component will not anchor anything and all will still be unordered. If we 
had n-2 floating components then we would in fact have two components that 
would need to be in the same order relative to each other.

So from that perspective - the wording in 16.5 looks correct to me:
An ordered sequence of n element children with either n or n-1 of those 
children with dfdl:floating="true" is equivalent to an unordered sequence 
with the same n element children with dfdl:floating="false". 
Is the question then - why the wording is Section 16?... "The children of 
an unordered sequence must be xs:element." 
If so, I did not read that as any type of limitation on the contents of 
the element..I can have an element which contains a group of sequences 
containing groups. (or have I misunderstood what this is trying to 
convey?).  Perhaps that phrase isn't really saying anything useful at this 
point and should be removed.  I don't believe that we want to go back to 
the unorderedInitiated concept (where we had a different set of rules for 
unordered groups if the content was all initiated).

-My take is that we should consider removing or further explain the "The 
children of an unordered sequence must be xs:element." . 
-The other note with the "An ordered sequence of n element children with 
either n or n-1 of those children with dfdl:floating="true" is equivalent 
to an unordered sequence with the same n element children with 
dfdl:floating="false". - looks fine as is to me as far as I can see.
-I'd prefer we not reopen the unorderedInitiated concept again.

Cheers,


Stephanie Fetzer
WebSphere Common Transformation
Industry Packs - Software Engineer




From:
Tim Kimber <KIMBERT at uk.ibm.com>
To:
dfdl-wg at ogf.org
Date:
01/11/2010 12:52 PM
Subject:
[DFDL-WG] Floating elements and unordered groups
Sent by:
dfdl-wg-bounces at ogf.org




Hi all, 

I know this area of the specification was only recently resolved, and I 
think there may be an inconsistency in the v0.37 wording. 

Section 16, re: sequenceKind says: "The children of an unordered sequence 
must be xs:element." 
Section 16.5 Floating Elements says: "An ordered sequence of n element 
children with either n or n-1 of those children with dfdl:floating="true" 
is equivalent to an unordered sequence with the same n element children 
with dfdl:floating="false". A complex element with dfdl:floating="true" 
can have as its content model a sequence with elements that also have 
dfdl:floating="true". " 

Now suppose that, instead of N element children, there are N-1 floating 
element children + one non-floating group. This group will be equivalent 
to an unordered group with a non-element member. 
If the specification was intending to make life easy for implementers, 
then it should probably disallow groups in any non-ordered context, 
including when sequenceKind='ordered' and there is at least one floating 
component. But I think that would be too restrictive. I would be happy for 
the restriction to be lifted entirely. Given that unordered groups can 
have dfdl:initiated="false", it will sometimes be necessary to find the 
correct member by trial and error ( speculative parsing ) anyway. I don't 
think it's any more difficult to speculatively parse a group than to 
speculatively parse a complex element. 

If I've missed something, and it turns out that the restriction is useful, 
then we should 
a) tighten up the wording to say that if a group with N members has N or 
N-1 floating members, then it must be validated as if it was an unordered 
group. 
b) consider lifting the restriction in cases where dfdl:initiated="true" ( 
because it makes things so much easier for the DFDL processor ) 

regards,

Tim Kimber, Common Transformation Team,
Hursley, UK
Internet:  kimbert at uk.ibm.com
Tel. 01962-816742 
Internal tel. 246742





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 





--
  dfdl-wg mailing list
  dfdl-wg at ogf.org
  http://www.ogf.org/mailman/listinfo/dfdl-wg

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20100111/aa8fbfe7/attachment.html 


More information about the dfdl-wg mailing list