我正在尝试编写一个XSD,其中应该存在任何EM或RUID,或者两者都可以存在。但是使用下面的XSD,我收到以下错误:
错误:模型组中出现名称为“RUID”且名称不同的多个元素。
<xs:element name="ADCNT">
<xs:complexType>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:sequence>
<xs:element name="EM" minOccurs="1" maxOccurs="1"></xs:element>
<xs:element name="RUID" minOccurs="0" maxOccurs="1"></xs:element>
</xs:sequence>
<xs:sequence>
<xs:element name="RUID" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="username" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
答案 0 :(得分:1)
此XSD允许ADCNT
由EM
或RUID
或两者组成:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="EM" type="xs:string"/>
<xs:element name="RUID" type="xs:string"/>
<xs:element name="ADCNT">
<xs:complexType>
<xs:choice>
<xs:element ref="RUID"/>
<xs:sequence>
<xs:element ref="EM"/>
<xs:element ref="RUID" minOccurs="0"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
更新:我已根据OP的请求更改RUID
的类型,但原则保持不变:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="RUIDType">
<xs:sequence>
<xs:element name="username" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="ADCNT">
<xs:complexType>
<xs:choice>
<xs:element name="RUID" type="RUIDType"/>
<xs:sequence>
<xs:element name="EM" type="xs:string"/>
<xs:element name="RUID" type="RUIDType" minOccurs="0"/>
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>