2013-02-18 32 views
5

ben devralır çalışıyorum çalışmak ve bir öğe kısıtlamak ama (Tutulma doğrulamada) hatası aşağıdaki alıyorum değildir: tip parçacık geçerli XSD kısıtlama

değil

Bazın parçacığının kısıtlanması. "Açıklama" öğesi, "TypeDevice" öğesinin bir parçası olmamalıdır.
Sadece nedenini alamıyorum. Bu mümkün olmalıdır (bu tutorial'a göre):

Bana yardım eden var mı? tip TypeDevice sadece birine sahiptir oysa

Greets,

Bill

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com" xmlns="http://www.example.com" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <!-- Abstract Base Class --> 
    <xs:complexType name="AbstractDevice" abstract="true"> 
    <xs:sequence> 
     <xs:element name="Name" type="xs:string" /> 
     <xs:element name="Description" type="xs:string" /> 
    </xs:sequence> 
    <xs:attribute name="id" type="xs:string" /> 
    </xs:complexType> 

    <!-- Inheritance with restriction --> 
    <xs:complexType name="TypeDevice"> 
    <xs:complexContent> 
     <xs:restriction base="AbstractDevice">         
     <xs:sequence> 
      <xs:element name="Name" type="xs:string" /> 
     </xs:sequence> 
     <xs:attribute name="id" type="xs:string" use="required" /> 
     </xs:restriction>       
    </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="TypeRoot"> 
    <xs:sequence> 
     <xs:element name="Device" type="TypeDevice" /> 
    </xs:sequence>     
    </xs:complexType> 
    <xs:element name="Configuration" type="TypeRoot" /> 
</xs:schema> 

cevap

4

Tip AbstractDevice, iki gerekli unsurları vardır. Bu nedenle TypeDevice, taban türü AbstractDevice'un geçerli bir örneği değildir. Geçerli hale getirmek için minOccurs="0"'u Description öğesine eklemelisiniz veya türetmeyi çevirin ve uzantıyı kullanın.

+0

Cevabınız için teşekkür ederiz. Ama düşündüm ki, bu tam olarak bir elemente uygulanan bir kısıtlama ile ne yapılabilirdi. Bağlantılı öğretici tam olarak bunu yapar (türetilmiş "Broşür" türündeki "Kitap" temel öğesinin "Yazar" öğesini kısıtlama ile kısıtlar. Belki de burada bir şeyi yanlış anladım. Bu arada, uygulamamın ayarlanması mümkün değil. taban elemanında "minOccurs = 0". – Bill