Определение сложного типа нарушает уникальную атрибуцию частиц

#xml #xsd #schema #complextype

#xml #xsd #схема #complextype

Вопрос:

Данное определение типа MyType должно допускать последовательности элементов ( A ), ( B ), ( C ), ( A , B ) и ( A , C ). При проверке я получаю ошибку «нарушение уникальной атрибуции частиц». Как я могу исправить эту проблему?

 <xs:complexType name="MyType">
  <xs:choice>
    <xs:element name="A" type="AType"/>
    <xs:sequence>
      <xs:element name="A" type="AType" minOccurs="0"/>
      <xs:choice>
        <xs:element name="B" type="BType"/>
        <xs:element name="C" type="CType"/>
      </xs:choice>
    </xs:sequence>
  </xs:choice>
</xs:complexType>
  

Ответ №1:

Некоторый рефакторинг исправляет ошибку атрибуции уникальной частицы:

 <xs:complexType name="MyType">
  <xs:choice>
     <xs:sequence>
       <xs:element name="A" type="AType"/>
       <xs:choice minOccurs="0">
         <xs:element name="B" type="BType"/>
         <xs:element name="C" type="CType"/>
       </xs:choice>
     </xs:sequence>
     <xs:element name="B" type="BType"/>
     <xs:element name="C" type="CType"/>
   </xs:choice>
</xs:complexType>