OK - that changes the picture - you need an unordered sequence - not yet
supported by DFDL, but coming soon. Until then, I think a choice wrapped
in a repeating element is needed, with element branches for Subject, To,
From and Unwanted (last) to hoover up anything else.
Regards
Steve Hanson
Architect, Data Format Description Language (DFDL)
Co-Chair, OGF DFDL Working Group
IBM SWG, Hursley, UK
smh@uk.ibm.com
tel:+44-1962-815848
From: "Garriss Jr., James P."
If you don't know the initiators, but know what is coming next
I get your solution, and it looks useful, but…email headers can arrive in
any order (excepting a couple headers, like Received, which are supposed
to be first).
So I could get: To, From, Keywords, Subject
Or I could get: Keywords, To, Subject, From
Or I could get any other combination.
If the order is not known a priori, can I still use this approach?
How about something like this (pseudo code)?
HeaderArray (0 to unbounded)
Sequence
To
From
Subject
UnwantedHeader (ref to the Group)
/Sequence
/HeaderArray
Group (see the group Steve defined below)
The problem, of course, is that I don’t know what the Header keys will be.
Can I have a whole bunch of discriminators, one for every *allowed*
header? IOW, the discriminator is “any header that’s not one of the
headers that I want.”
From: Steve Hanson [mailto:smh@uk.ibm.com]
Sent: Friday, March 01, 2013 9:03 AM
To: Garriss Jr., James P.
Cc: dfdl-wg@ogf.org; dfdl-wg-bounces@ogf.org
Subject: Re: [DFDL-WG] Can I ignore data I don't want in DFDL?
The general solution in DFDL is to use the combination of an optional
repeating element inside a hidden group.
You need to be careful that this optional hidden element does not consume
the next piece of wanted data by mistake. If all the unwanted elements
have known initiators then you are ok. If you don't know the initiators,
but know what is coming next, then one approach is as follows:
xs:complexType
xs:sequence