Some folks are trying to create a DFDL model for IMF (internet message format ... basically email)
There is this header structure which really wants unordered sequences. Since we don't have those yet
I told them to use an array of choice like this:
<xs:element name="hdrArray" minOccurs="1" maxOccurs="25">
<xs:complexType>
<xs:choice>
<xs:element ref="TO_HDR"/>
<xs:element ref="FROM_HDR" />
</xs:choice>
...
But then there are these contraints, like there should be only one FROM address, but there can be several TO addresses.
So, one might want to write a
DFDL expression using an XPath-like query path in it. E.g.,
<xs:assert>{ dfdl:occursCount( hdrArray/FROM_HDR ) eq 1 }</xs:assert>
Here's the question: Is the DFDL expression in this assert legal?
I advised them that no, it is not, because hdrArray is an array and isn't being indexed, while FROM_HDR is not an array, but is being used as the argument to dfdl:occursCount.
I think DFDL's expression language is simply not powerful enough to express these constraints.
I'm just looking for affirmation or discussion if there is more to say here.