Re: Ambiguous content models -- allowed or disallowed by XSDL?

Hi Ian,

> Perhaps I can better serve the discussion by providing the explicit
> example in question (see below). I would say that this is an illegal
> ACM as you cannot identify from the single token "startDate" whether
> you are in theh first sequence (startDate, endDate) or the second
> sequence (startDate, duration).
>
> Do others believe this type definition is legal or illegal?

Illegal, per the Unique Particle Attribution constraint, since given a
startDate element you can't tell whether you're in the first or second
sequence within the choice.

> Can anyone suggest a reasonable way to achieve the desired
> constraint?

It looks as though the minOccurs="0" can be moved onto the xs:choice
rather than being on each of the particles (allowing elements of the
periodType to be empty). Then you can do:

<xs:complexType name="periodType">
  <xs:choice minOccurs="0">
    <xs:sequence>
      <xs:element ref="startDate" />
      <xs:choice>
        <xs:element ref="endDate" />
        <xs:element ref="duration" />
      </xs:choice>
    </xs:sequence>
    <xs:sequence>
      <xs:element ref="duration" />
      <xs:element ref="endDate" />
    </xs:sequence>
    <xs:element ref="instant" />
    <xs:element ref="forever" />
  </xs:choice>
</xs:complexType>

In other words, if you find a startDate, you know that it can only be
followed by either an endDate or a duration.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/

Received on Wednesday, 12 June 2002 12:47:50 UTC