我正在尝试制作一个XML Schema - 在我看来,这是一个困难的结构。假设我在一个'成员'标签中有这些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>
在此上下文中只需要成员的name-attribute。
我希望能够验证这两种结构。为此,我尝试定义两个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>
我的问题是我不能在同一范围内定义两个具有不同类型的'member'元素:
<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-Schema?
答案 0 :(得分:2)
这个规则不可能被称为“元素声明一致”。
元素声明模型组的一致规则 (http://www.w3.org/TR/xmlschema-1/#cos-element-consistent)排除 不一致的元素声明,如下面两个冲突 元素的定义,即不能同时是“int”和a “string”在同一组中:
(example-1) <xs:complexType name="example-1"> <xs:sequence> <xs:element name="a" type="xs:int"/> <xs:element name="whatever"/> <xs:element name="a" type="xs:string"/> </xs:sequence> </xs:complexType>