OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] XML-Schema Help

[ Lists Home | Date Index | Thread Index ]

Title: RE: [xml-dev] XML-Schema Help

I believe this will not work because the schema would be non-determinstic.  That is, because the following declaration:

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

appears in two different "choice" constructs, a schema processor will not be able to discern whether an occurrence of "earliestdate" is applicable to the first "choice" construct or the second one.  Same idea for "latestdate".

Regards,
Joe Chiusano
LMI

> **************************************************************************
>   Joseph M. Chiusano
>   Logistics Management Institute
>   2000 Corporate Ridge
>   McLean, VA 22102
>   Email: jchiusano@lmi.org
>   Tel: 571.633.7722
> **************************************************************************
>


-----Original Message-----
From: Bryce K. Nielsen [mailto:bryce@sysonyx.com]
Sent: Friday, August 16, 2002 1:30 PM
To: xml-dev@lists.xml.org
Subject: Re: [xml-dev] XML-Schema Help


> 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


-----------------------------------------------------------------
The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
initiative of OASIS <http://www.oasis-open.org>

The list archives are at http://lists.xml.org/archives/xml-dev/

To subscribe or unsubscribe from this list use the subscription
manager: <http://lists.xml.org/ob/adm.pl>





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS