2016-11-26 31 views
1

我試圖把元素這是一個簡單類型元素中可選的,所以我把它改成複雜類型。現在我已經複雜類型內部複雜類型和確認說,這是錯的,如何解決呢?的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

您可以在xs:complexType內有xs:complexType,但不是直接。根據您的XML,你要定義一個元素,glowne_role,是由aktor元素,每個的再依次也可以是複雜類型的序列的複雜類型。需要注意的是,讓文本之前或之後你komentarz您可以在父xs:complexType設置mixed="true"

總而言之,那麼,這將XSD成功驗證XML:

<?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> 
+0

謝謝您的回答! –