स्कीमों का पता लगाने की युक्ति के अनुसार
नामस्थान नाम के माध्यम से एक स्कीमा पुनर्प्राप्त करने योग्य हो सकता है या नहीं भी हो सकता है ... उपयोगकर्ता समुदाय और / या उपभोक्ता / प्रदाता समझौते उन परिस्थितियों को स्थापित कर सकते हैं जिनमें [नामस्थान यूआरएल से xsd प्राप्त करने का प्रयास करना] एक समझदार डिफ़ॉल्ट रणनीति है
(स्पष्ट होने के लिए धन्यवाद, कल्पना!)
तथा
यदि कोई दस्तावेज़ लेखक (मानव या नहीं) ने किसी विशेष स्कीमा को ध्यान में रखते हुए एक दस्तावेज़ बनाया है, और वारंट है कि दस्तावेज़ के कुछ या सभी उस स्कीमा के अनुरूप हैं, तो स्कीमाक्लाटेशन और noNamespaceSchemaLocation [विशेषताएँ] प्रदान की जाती हैं।
तो मूल रूप से सिर्फ एक नाम स्थान निर्दिष्ट करने के साथ, आपके XML "उस स्थान पर एक xsd के खिलाफ मान्य होने का प्रयास किया जा सकता है (भले ही उसमें एक schemaLocation
विशेषता की कमी हो ), आपके" समुदाय पर निर्भर करता है। " यदि आप एक विशिष्ट निर्दिष्ट करते हैं schemaLocation
, तो यह मूल रूप से यह कह रहा है कि xml दस्तावेज़ "उक्त xsd के अनुरूप होना चाहिए, इसलिए" कृपया इसे मान्य करें "(जैसा कि मैंने इसे पढ़ा)। मेरा अनुमान है कि यदि आप एक schemaLocation
या ऐसा नहीं करते हैं तो noNamespaceSchemaLocation
यह "मान्य नहीं है" अधिकांश समय (अन्य उत्तरों के आधार पर, प्रतीत होता है कि जावा इस तरह से होता है)।
यहाँ एक और शिकन यह है कि आम तौर पर जावा पुस्तकालयों में xsd सत्यापन के साथ [पूर्व: स्प्रिंग कॉन्फिग xml फाइलें], यदि आपकी XML फाइलें schemaLocation
किसी XML फ़ाइल में किसी विशेष xsd url को निर्दिष्ट करती हैं , जैसे xsi:schemaLocation="http://somewhere http://somewhere/something.xsd"
आम तौर पर आपके किसी एक निर्भरता क्षेत्र में एक कॉपी होगी । वह xsd फ़ाइल, उसके संसाधन अनुभाग में, और स्प्रिंग में "मैपिंग" क्षमता होती है जो उस xsd फ़ाइल को मानने के लिए कहती है जैसे कि वह url के लिए मैप करती है http://somewhere/something.xsd
(इसलिए आप कभी भी वेब पर जाकर फ़ाइल डाउनलोड नहीं करते हैं, यह सिर्फ स्थानीय रूप से मौजूद है)। अधिक जानकारी के लिए https://stackoverflow.com/a/41225329/32453 भी देखें ।