[Home] [By Thread] [By Date] [Recent Entries]


> My question is this, in a Schema is it possible to have an element be
> required only if its parent element exists.
>
> For example in the code below if timeframetype exists then either
> earliestdate or latestdate would be required, 1 or the other but both are
> not required.
>
> <xs:complexType name="timeframeType">
> <xs:sequence>
> <xs:element ref="description"/>
> <xs:element ref="earliestdate" minOccurs="0"/>
> <xs:element ref="latestdate" minOccurs="0"/>
> </xs:sequence>
> </xs:complexType>
>

There are a lot of different ways you could do this, but here's a go:

<xs:complexType name="timeframeType">
  <xs:sequence>
    <xs:element ref="description"/>
    <xs:choice>
      <xs:element ref="earliestdate" minOccurs="0"/>
      <xs:element ref="latestdate" minOccurs="0"/>
    </xs:choice>

    <xs:choice>
      <xs:element ref="earliestdate" minOccurs="0"/>
    </xs:choice>

    <xs:choice>
      <xs:element ref="latestdate" minOccurs="0"/>
    </xs:choice>
  </xs:sequence>
</xs:complexType>

you could refactor this into groups for easier reading...

-BKN


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member