2013-02-18 22 views
5

मैं इनहेरिट कोशिश कर रहा हूँ काम नहीं करता है और एक तत्व प्रतिबंधित लेकिन मैं (ग्रहण सत्यापन में) त्रुटि निम्न हो रही है:XSD प्रतिबंध

प्रकार के कण एक मान्य नहीं है आधार के कण का प्रतिबंध।

"विवरण" तत्व "TypeDevice" तत्व का हिस्सा नहीं होना चाहिए। मैं इसे क्यों नहीं प्राप्त कर सकता हूं। यह संभव होना चाहिए (इस tutorial के अनुसार):

क्या कोई मेरी मदद कर सकता है? जबकि प्रकार TypeDevice केवल एक ही है

स्वागत करती है,

विधेयक

<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> 

उत्तर

4

प्रकार AbstractDevice, दो आवश्यक तत्व है। इस प्रकार TypeDevice अपने मूल प्रकार AbstractDevice का मान्य उदाहरण नहीं है। इसे वैध बनाने के लिए, आपको minOccurs="0"Description तत्व में जोड़ना चाहिए या व्युत्पन्न को चारों ओर घुमाएं और एक्सटेंशन का उपयोग करें।

+0

आपके उत्तर के लिए धन्यवाद। लेकिन मैंने सोचा, यह बिल्कुल एक तत्व के लिए लागू प्रतिबंध के साथ किया जा सकता है। लिंक्ड ट्यूटोरियल वास्तव में यह करता है (प्रतिबंध द्वारा व्युत्पन्न elment "पुस्तिका" में मूल प्रकार "पुस्तक" के तत्व "लेखक" को प्रतिबंधित करें। शायद मैं यहां कुछ गलत समझता हूं। वैसे, विवरण निर्धारित करने के लिए मेरे कार्यान्वयन में यह संभव नहीं है मूल तत्व में "minOccurs = 0" तक। – Bill

संबंधित मुद्दे