2009-12-14 10 views
34

मैं minOccurs="0" और nillable="true" पर तत्व स्थापित करने के साथ आगे और आगे जा रहा हूं।शून्य और minOccurs एक्सएसडी तत्व विशेषता

मैं this आलेख पढ़ रहा था और अब मेरे डब्लूएसडीएल में मुझे यकीन नहीं है कि दोनों का उपयोग करना इसके लायक है। यह लेख उन सरणीओं का प्रतिनिधित्व करने का एक अच्छा उदाहरण देता है जहां आपके पास शून्य मानों का अंतराल हो सकता है, क्योंकि यह केवल minOccurs="0" के साथ नहीं किया जा सकता है। अब, जिस सम्मेलन के साथ मैं जा रहा हूं वह यह है कि यदि कोई तत्व वैकल्पिक नहीं है तो यह शून्य नहीं है। अंतर मैं इसे समझता हूं, और जहां मेरा प्रश्न झूठ है, यह है कि एक तत्व के लिए शून्य संपत्ति को लागू करके, मैं कह रहा हूं कि आप एक पूर्ण मूल्य के एक्सएसडी समकक्ष में पास कर सकते हैं? अन्यथा, शून्य संपत्ति के बिना एक तत्व, उस पर लगाए गए प्रतिबंध के भीतर एक मूल्य होना चाहिए?

उत्तर

55

आपको यह तय करने की आवश्यकता है कि आप एक्सएमएल के रूप में एक्सएमएल के बारे में सोच रहे हैं या आप जावा से (या अन्य) ऑब्जेक्ट को यहां से प्रेषित करने के तरीके के रूप में एक्सएमएल के बारे में सोच रहे हैं या नहीं।

एक्सएमएल में, शून्यबल एक स्पष्ट अनुपस्थित मूल्य के संकेतक के रूप में निर्माण <myelement xsi:nil='true'/> परमिट करता है, जैसे कि SQL NULL। यह केवल <myelement/> से अर्थात् अलग है। और दोनों कुछ भी नहीं से अलग हैं। तो, जब एक्सएमएल को देखकर, आप चार मामलों भेद करने के लिए है:

<!-- nothing --> 
<myElement attr1='true'>some content</myElement> 
<myElement/> 
<myElement xsi:nil='true'/> 

हैं, तो दूसरी ओर, आप मुख्य रूप से जावा को लेकर चिंतित हैं - शायद क्योंकि आप साबुन का प्रयोग कर रहे हैं, तो आप के बारे में कैसे सोचने की जरूरत जावा ऑब्जेक्ट मानचित्र पीछे और आगे।

ऑब्जेक्ट, जेएक्सबी और अन्य मैपिंग तकनीकों से प्राप्त किसी भी जावा आइटम के लिए शून्य मानों से निपटने के लिए एक तरीका चाहिए। ऐसा करने का तरीका नीलबल है। यदि आप किसी वस्तु पर शून्य होने से मना करते हैं, तो टूलकिट अनुपस्थिति का प्रतिनिधित्व करने के लिए एक रास्ता खोजने के लिए एक सरणी का उपयोग करेगा।

दूसरी तरफ, यदि आपके पास कोई सरणी है, तो ध्यान रखें कि सरणी स्वयं एक वस्तु है, और शून्य हो सकती है। इसलिए, प्रत्येक टूलकिट को शून्य-तत्व सरणी को शून्य से अलग करना होता है।

दूसरी ओर, यदि आपके पास एक आदिम प्रकार है (उदा। int), तो टिकाऊ समस्याएं पैदा होंगी, क्योंकि xsi से कोई मैपिंग नहीं है: शून्य से एक आदिम।

+6

इसके अलावा, किसी भी तत्व की अनुपस्थिति भी और xsi: nil = true दोनों से semantically अलग है। – Zach

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