2009-08-26 17 views
23

मैं एक XML स्कीमा कि एक्सएमएल के इस टुकड़े को मान्य होगा लिखने के लिए कोशिश कर रहा हूँ:दोनों एक विशेषता और XML स्कीमा में एक तत्व पर एक प्रतिबंध के बाद

<date isodate="2007-03-14">14 march 2007</date> 

विशेषता isodate यह XS करने के लिए सेट प्रकार है होना चाहिए : तिथि और सामग्री अधिकतम 50 वर्ण लंबी होनी चाहिए।

मुझे आश्चर्य है कि अगर यह इस तरह कुछ हो सकता है एक ब्लॉक में XML परिभाषा लिखने के लिए, संभव है:

<xs:element name="date" minOccurs="0" maxOccurs="1"> 
    <xs:complexType> 
    <xs:simpleContent> 
     <xs:restriction base="xs:string"> 
     <xs:minLength value="0"/> 
     <xs:maxLength value="50"/> 
     </xs:restriction> 
     <xs:attribute name="isodate" type="xs:date" use="required"/> 
    </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

कोड से काम नहीं होता है, और मैं वास्तव में क्यों समझ नहीं कर सकते हैं। ताकि स्कीमा एक सा है

<xs:simpleType name="reviewDate"> 
    <xs:restriction base="xs:string"> 
     <xs:minLength value="0"/> 
     <xs:maxLength value="50"/> 
    </xs:restriction> 
</xs:simpleType> 

<xs:element name="date" minOccurs="0" maxOccurs="1"> 
    <xs:complexType> 
     <xs:simpleContent> 
      <xs:extension base="reviewDate"> 
       <xs:attribute name="isodate" type="xs:date" use="required"/> 
      </xs:extension> 
     </xs:simpleContent> 
    </xs:complexType> 
</xs:element> 

सवाल मेरे पास है एक ब्लॉक में परिभाषा लिखने के लिए कैसे है: केवल मैं पाया है वैकल्पिक हल इस तरह एक अलग प्रकार में प्रतिबंध हिस्सा बाहर तोड़, और लिंक करने के लिए वह यह है कि अधिक पठनीय, और स्कीमा के अन्य भागों में संदर्भ प्रकार नहीं है।

+0

@Alexander: अपने एक्सएमएल अनुभागों को सही ढंग से प्रारूपित करने के लिए, एक्सएमएल को हाइलाइट करें और टूलबार पर "कोड" बटन (101 010) पर क्लिक करें। यह आपको अच्छे नतीजे देता है - बैकटिक का उपयोग केवल एक शब्द या एक लघु वाक्यांश के लिए मदद करता है - कई लाइनों को अच्छी तरह से नहीं फैलाता है। –

उत्तर

15

आप एक्सएसडी के एक ब्लॉक में एक प्रतिबंध और विस्तार दोनों को विलय नहीं कर सकते हैं। "रिव्यूडेट" सरल प्रकार के साथ आपके पास जो समाधान है, वह सबसे अच्छा समाधान है जिसे मैं जानता हूं।

मार्क

0

आप प्रतिबंध और विशेषता (-s) के साथ एक तत्व हो सकता है। कुंजी कस्टम प्रकार को इसके प्रतिबंधों के साथ परिभाषित करना है और उसके बाद इसका उपयोग विशेषताएँ जोड़ना है। यहां देखें: Content restriction and attribute validation on the same element in XSD

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