- From: Pete Cordell <petexmldev@tech-know-ware.com>
- Date: Wed, 10 Oct 2007 19:22:51 +0100
- 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 UTC