我正在尝试制作一个 XML 模式——因为我认为这是一个困难的结构。假设我在一个'members'-tag 中有这些 XML 成员。
<member name="any_name" tab="any_tab" class="any_class">
<summary>Summary</summary>
</member>
和
<member name="any_name" tab="any_tab">
<type class="class_name">
<member name="Name">
<summary>Summary</summary>
</member>
</type>
</member>
在这种情况下,只需要成员的名称属性。
我希望能够验证这两种结构。为此,我尝试定义两个 complexType:
<xs:complexType name="normalmember">
<xs:sequence>
<xs:element name="summary" minOccurs="1" />
</xs:sequence>
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="tab" use="optional"/>
<xs:attribute type="xs:string" name="class" use="optional"/>
</xs:complexType>
和
<xs:complexType name="typemember">
<xs:sequence>
<xs:element ref="typememberinfo" />
</xs:sequence>
<xs:attribute type="xs:string" name="class" use="required" />
</xs:complexType>
我的问题是我无法在同一范围内定义两个具有不同类型的“成员”元素:
<xs:element name="members">
<xs:complexType>
<xs:sequence>
<xs:element name="member" type="normalmember"></xs:element>
<xs:element name="member" type="typemember"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
如何制作能够验证这两种结构的 XML 模式?