我正在尝试在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>
答案 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}}