2

感兴趣的是以下 xml 子元素:

<optInItem type='MARKETING_EMAILS'>NO</optInItem>

我想枚举属性“类型”的可能值(假设 2 个可能值)并枚举 optInItem 的文本值的可能值(值可能是 Yes | No)。我从以下 xsd 开始,但不确定如何添加两个单独的枚举。

 <xs:element name="optInItem" maxOccurs="2" minOccurs="2">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:string">
           <xs:attribute type="xs:string" name="type" use="required"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
</xs:element>

任何建议/指针将不胜感激。

谢谢

4

1 回答 1

3

经过多次迭代,看起来像下面这样的伎俩:

<xs:element name="account">
 <xs:complexType>
  <xs:sequence>
    <xs:element type="optInItemType" name="optInItem" maxOccurs="2" minOccurs="2">
  </xs:sequence>
 </xs:complexType>
</xs:element>
<xs:complexType name="optInItemType"> 
 <xs:simpleContent> 
    <xs:extension base="elementOptInItemType">
         <xs:attribute name="type" type="attrOptInItemType"/> 
    </xs:extension> 
 </xs:simpleContent>
</xs:complexType>  
<xs:simpleType name="elementOptInItemType">
 <xs:restriction base="xs:string">
   <xs:enumeration value="YES"/>
   <xs:enumeration value="NO"/>
 </xs:restriction>
</xs:simpleType>
<xs:simpleType name="attrOptInItemType">
 <xs:restriction base="xs:string">
   <xs:enumeration value="MARKETING_EMAILS"/>
   <xs:enumeration value="UPDATE_NOTIFICATIONS"/>
 </xs:restriction>
</xs:simpleType>

这比我想象的要复杂。simpleContent 扩展库允许用户定义类型,因此是将它们组合在一起的关键。

于 2012-06-27T01:16:48.620 回答