[DFDL-WG] How to express semantics of unordered groups
Mike Beckerle
beckerle at us.ibm.com
Wed Nov 1 10:49:33 CST 2006
I'd like to consider this concept as a way to express the semantics in
DFDL of unordered groups. The approach is to use source language
transformation.
Here's an example of an unordered sequence of 2 elements:
<xs:element name="n1">
<xs:complexType>
<xs:sequence dfdl:unordered='true' separator=",">
<xs:element name="s1" type="string" dfdl:initiator="s1:" />
<xs:element name="s2" type="int" dfdl:initiator="s2:"/>
</xs:sequence>
</xs:complexType>
</xs:element>
We explain what this means by indicating that it behaves like this
rewrite:
<xs:element name="n1">
<xs:annotation><xs:appinfo source=....>
<dfdl:format validation="cardinality(./s1) <= 1 &
cardinality(./s2) <= 1"/>
</xs:appinfo></xs:annotation>
<xs:complexType>
<xs:sequence' separator=",">
<xs:choice>
<xs:sequence>
<xs:element name="s1Initiator" type="xs:string"
fixed="s1:"/>
<xs:element name="s1" type="xs:string" />
</xs:sequence>
<xs:sequence>
<xs:element name="s2Initiator" type="xs:string"
fixed="s2:"/>
<xs:element name="s2" type="xs:int" />
</xs:sequence>
<xs:sequence /> <!-- empty -->
</xs:choice>
<xs:choice>
<xs:sequence>
<xs:element name="s1Initiator" type="xs:string"
fixed="s1:"/>
<xs:element name="s1" type="xs:string" />
</xs:sequence>
<xs:sequence>
<xs:element name="s2Initiator" type="xs:string"
fixed="s2:"/>
<xs:element name="s2" type="xs:int" />
</xs:sequence>
<xs:sequence /> <!-- empty -->
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
The above is probably missing a DFDL annotation indicating that the
discrimination of the choice is done using the s1Initiator and s2Initiator
fields based on their parsing correctly w.r.t. their fixed value facet.
In XSD, unordered sequences (aka "all" groups) also have the semantics
that each element can occur only zero or 1 time. This is modeled by the
additional validation constraint you find at the top of the rewritten
form. This isn't the only choice for semantics of unordered groups of
course, but it is one coherent position on it.
I think it is very attractive to reduce the issue of initiator-based
unordered sequences to choice and discrimination, since we need those
constructs no matter what.
Comments?
...mikeb
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.ogf.org/pipermail/dfdl-wg/attachments/20061101/d8a26f66/attachment.htm
More information about the dfdl-wg
mailing list