ComplexType内的ComplexType

时间:2016-11-26 23:07:05

标签: xml xsd complextype

我正在尝试在simpleType元素中放置可选的元素,因此我将其更改为complexType。现在我在complexType里面有complexType,验证器说它错了,我该如何解决?

 <glowne_role>
    <aktor>William H. Macy</aktor>
    <aktor>
      Frances McDormand
      <komentarz>Prywatnie aktorka jest żoną reżysera.</komentarz>
    </aktor>
  </glowne_role>


<xs:element name="komentarz" type="xs:string" />

<xs:complexType name="glowne_role">
  <xs:complexType name="aktor" minOccurs="1" maxOccurs="3" type="xs:string">
    <xs:element ref="komentarz" minOccurs="0"/>
  </xs:complexType>
</xs:complexType>

1 个答案:

答案 0 :(得分:1)

xs:complexType内可以xs:complexType,但不能直接glowne_role。根据您的XML,您希望将元素aktor定义为由komentarz元素序列组成的复杂类型,每个元素然后依次也可以是复杂的类型。请注意,要允许文字位于mixed="true"之前或之后,您可以在父xs:complexType上设置<?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="komentarz" type="xs:string"/> <xs:element name="glowne_role"> <xs:complexType> <xs:sequence> <xs:element name="aktor" minOccurs="1" maxOccurs="3"> <xs:complexType mixed="true"> <xs:sequence> <xs:element ref="komentarz" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>

然后,这个XSD将成功验证您的XML:

{{1}}