W3C home > Mailing lists > Public > xmlschema-dev@w3.org > October 2007

Re: optional, but at least one required

From: Pete Cordell <petexmldev@tech-know-ware.com>
Date: Wed, 10 Oct 2007 19:22:51 +0100
Message-ID: <01de01c80b6a$961f1f00$5d00a8c0@Codalogic>
To: "Virginia Wiswell" <vwiswell@verizon.net>
Cc: <xmlschema-dev@w3.org>

Hi Virginia,

Your schema should indeed yield a Unique Particle Attribution violation. 
The reason is that when a parser reads element a, it is not immediately 
obvious whether it corresponds to the first definition of a or the second.

You can get around this by changing your schema to:

  <xsd:element name="parent">
   <xsd:complexType>
    <xsd:choice>
      <xsd:sequence>
        <xsd:element ref="a"/>
        <xsd:element ref="b" minOccurs="0"/>
      </xsd:sequence>
      <xsd:element ref="b"/>
    </xsd:choice>
   </xsd:complexType>
  </xsd:element>

HTH,

Pete.
=============================================
Pete Cordell
Codalogic
for XML Schema to C++ data binding visit
 http://www.codalogic.com/lmx/
=============================================

----- Original Message ----- 
From: "Virginia Wiswell" <vwiswell@verizon.net>
To: "Michael Kay" <mike@saxonica.com>; "'George Cristian Bina'" 
<george@oxygenxml.com>; <vwiswell@verizon.net>
Cc: <xmlschema-dev@w3.org>
Sent: Wednesday, October 10, 2007 7:06 PM
Subject: Re: optional, but at least one required


>
> Michael, you are exactly right. I think I figured it out, though:
>
>  <xsd:element name="parent">
>   <xsd:complexType>
>    <xsd:choice>
>      <xsd:sequence>
>        <xsd:element ref="a"/>
>        <xsd:element ref="b"/>
>      </xsd:sequence>
>        <xsd:element ref="a"/>
>        <xsd:element ref="b"/>
>    </xsd:choice>
>   </xsd:complexType>
>  </xsd:element>
>
> I kept getting a Unique Particle Attribution rule error for 'a' in Stylus 
> Studio. I found a post somewhere that said that this was a bug, and when I 
> used Sax, it validated just fine.
>
> If you have a better way of doing it, I'd love to see it. Thanks so much 
> for your help, guys.
>
>
> On Wed, 10 Oct 2007 14:17:28 +0100
>  "Michael Kay" <mike@saxonica.com> wrote:
>> George, your reading of the requirement is very literal.
>>
>> "I have a and b, at least one of them has to appear once AND ONLY ONCE." 
>> My guess at the likely meaning is to accept a|b|ab. But I might be wrong.
>>
>> Michael Kay http://www.saxonica.com/
>>
>>> -----Original Message-----
>>> From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org] 
>>> On Behalf Of George Cristian Bina
>>> Sent: 10 October 2007 08:42
>>> To: vwiswell@verizon.net
>>> Cc: xmlschema-dev@w3.org
>>> Subject: Re: optional, but at least one required
>>>
>>>
>>> Hi Virginia,
>>>
>>> I understand that what you want is
>>> ab* | a*b
>>> and you need to write that in a non ambiguous way to be able to write it 
>>> in XML Schema.
>>>
>>> So what we need to accept is
>>>
>>> a ab abb abbb ...
>>> b ab aab aaab ...
>>>
>>>
>>> You can write that as
>>>
>>> ((a, (b* | (a+, b))) | b)
>>>
>>> Best Regards,
>>> George
>>> ---------------------------------------------------------------------
>>> George Cristian Bina - http://aboutxml.blogspot.com/ <oXygen/> XML 
>>> Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com
>>>
>>>
>>> Virginia Wiswell wrote:
>>> > I have a similar situation that I'm having trouble with. I
>>> have a and
>>> > b, at least one of them has to appear once AND ONLY ONCE. a
>>> must come before b.
>>> > The examples in this thread allow more than one occurrence
>>> of a or b.
>>> >
>>> > This is my first attempt at customizing a schema and I'm stuck.
>>> >
>>> > TIA, Virginia
>>> >
>>> >> You need to specify the requirements in a little more detail:
>>> >>
>>> >> * are multiple occurrences of a, b, and c allowed?
>>> >>
>>> >> * what constraints do you want to impose on the ordering
>>> of the elements?
>>> >>
>>> >> Michael Kay
>>> >> http://www.saxonica.com/
>>> >
>>> >
>>> >
>>> >
>>>
>>
>>
>
>
> 
Received on Wednesday, 10 October 2007 18:23:18 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:15:00 GMT