RE: new to schema: Unique Particle Attribution

 
> 
> I am new to xml schema and to this mailing list (if misuse it please 
> inform me).
> 
> I would like to write an element (question) which does the following:
> 
> question can have either:
> 
> title(optional), content and weight
> 
> or:
> 
> title, content(optional), weight(optional) and question

Since no repetition is involved you can tackle this by writing out all the
permitted sequences:

CW
TCW
TQ
TCQ
TWQ
TCWQ

and then factor them by combining those that start with the same
subsequence:

(CW)|(T(C(WQ?|Q)|WQ|Q))

that is,

choice (
  sequence(C, W),
  sequence (T,
    choice(
      sequence(C,
        choice (sequence (W, Q?), Q),
      sequence(W, Q),
      Q)
  )
)

Michael Kay
http://www.saxonica.com/


> 
> I tried to implement the above rules in an xml schema but I got a 
> "Unique Particle Attribution". Below I provide you with the 
> xml fragment 
> that implement the rules. Can you tell me how I can implement 
> these rules?
> 
>     <xs:group name="simpleQuestionItems">
>         <xs:sequence>
>             <xs:element ref="title" minOccurs="0" maxOccurs="1"/>
>             <xs:element ref="content"/>
>             <xs:element ref="weight"/>
>         </xs:sequence>
>     </xs:group>
> 
>     <xs:group name="complexQuestionItems">
>         <xs:sequence>
>             <xs:element ref="title"/>
>             <xs:element ref="content" minOccurs="0" maxOccurs="1"/>
>             <xs:element ref="weight" minOccurs="0" maxOccurs="1"/>
>             <xs:element ref="question" minOccurs="1" 
> maxOccurs="unbounded"/>
>         </xs:sequence>
>     </xs:group>
> 
>     <xs:element name="question">
>         <xs:complexType>
>             <xs:choice>
>                 <xs:group ref="simpleQuestionItems"/>
>                 <xs:group ref="complexQuestionItems"/>
>             </xs:choice>
>             <xs:attribute name="required" type="xs:boolean" 
> default="false"/>
>         </xs:complexType>
>     </xs:element>
> 
> 
> 
> 

Received on Wednesday, 6 April 2005 09:06:23 UTC