2016-11-26 3 views
1

J'essaie de placer un élément qui est facultatif dans un élément simpleType, donc je l'ai changé en complexType. Maintenant, j'ai complexType dans complexType et le validateur dit que c'est faux, comment puis-je le réparer?ComplexType inside 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> 

Répondre

1

Vous pouvez avoir un xs:complexType dans un xs:complexType, mais pas directement. Basé sur votre XML, vous voulez définir un élément, glowne_role, pour être de type complexe constitué d'une séquence de aktor éléments, dont puis tour à tour peut également être de type complexe. Notez que pour permettre au texte de précéder ou de suivre votre komentarz, vous pouvez définir mixed="true" sur le parent xs:complexType.

Au total, donc, ce XSD validera avec succès votre 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

Merci pour votre réponse! –