xsd: How to extend a type with an unordered list of elements -


यह मेरी एक्सएमएल स्कीमा का एक हिस्सा है

  & lt; xs: complexType name = " मित्र "& gt; & LT; XS: सब & gt; & Lt; xs: तत्व का नाम = "नाम" प्रकार = "x: स्ट्रिंग" / & gt; & Lt; xs: तत्व का नाम = "फोन" प्रकार = "x: स्ट्रिंग" / & gt; & Lt; xs: तत्व का नाम = "पता" प्रकार = "x: स्ट्रिंग" / & gt; & Lt; / XS: सब & gt; & Lt; / XS: complexType & gt; & Lt; x: जटिल टाइप नाम = "सहकर्मी" & gt; & LT; XS: सब & gt; & Lt; xs: तत्व का नाम = "नाम" प्रकार = "x: स्ट्रिंग" / & gt; & Lt; xs: तत्व का नाम = "फोन" प्रकार = "x: स्ट्रिंग" / & gt; & Lt; xs: तत्व का नाम = "कार्यालय" प्रकार = "x: स्ट्रिंग" / & gt; & Lt; / XS: सब & gt; & Lt; / XS: complexType & gt;  

बेहतर रखरखाव के लिए, मैं साझा गुणों को एक सार (सुपर) सुपर प्रकार या ऐसा कुछ करना चाहूंगा लेकिन अधिक महत्वपूर्ण, मैं चाहता हूं कि सभी तत्व अनारडेड और वैकल्पिक भी हो।

क्या यह संभव है, और यह करने का सबसे अच्छा तरीका क्या है?

आपको खुद को थोड़ा सीमित करना होगा, कुछ चीजें जो आप करने की कोशिश कर रहे हैं, XML स्कीमा में संभव नहीं हैं।

मान लीजिए कि आप एक अति-प्रकार का मित्र और सहकर्मी होने के लिए व्यक्ति नामक एक जटिल प्रकार। यहां आपके विकल्प दिए गए हैं:

  1. xs: all को xs: अनुक्रम के साथ बदलें, नाम और फोन उप प्रकार से, सुपर प्रकार में जोड़ें, और विरासत जोड़ें। आपके तत्वों का अब आदेश दिया जाना चाहिए, लेकिन आप उन्हें व्यक्तिगत रूप से वैकल्पिक बना सकते हैं। एक्सएमएल स्किमा में xs: all टाइप पदानुक्रमों में अवैध है, क्योंकि प्रोसेसर यह नहीं बता सकता है कि मूल सामग्री मॉडल कहां बंद हो जाता है और बच्चे की सामग्री मॉडल शुरू होता है।
  2. दोनों प्रकारों में xs: सभी को और lt; x: पसंद maxOccurs = "unbounded" & gt; बदलें और अपनी विरासत को जोड़ें फिर आपके तत्व फिर से अनारक्षित हो जाते हैं, लेकिन वे दोहरा सकते हैं।

तो अंत में: आपके प्रकार के नाम वहां ऊपर दिए गए हैं, मुझे लगता होगा कि आपकी आवश्यकताओं को पूरा नहीं किया जाएगा। मैं पहले विकल्प के लिए जाता हूं: मनमानी तत्व के आदेश पर जोर देना अक्सर ऐसा उपयोगी नहीं होता जैसा लगता है।


Comments