ऐसा लगता है कि ऐसा करना आसान होगा, लेकिन ऐसा नहीं है। एक्सएमएल स्कीमा एक दस्तावेज़ सत्यापन भाषा है, न कि दस्तावेज़ उत्पादन भाषा। यह आपको एक नया दस्तावेज़ बनाने का तरीका नहीं बताता है; यह आपको बताता है कि आपके द्वारा बनाया गया दस्तावेज़ मान्य है या नहीं। वे एक लंबे शॉट से एक ही बात नहीं हैं।
उदाहरण के लिए, एक्सएमएल स्कीमा में जटिल प्रकार बनाने के लिए यह छोटा है जिसमें वैकल्पिक विकल्पों का अनुक्रम होता है। एक foo
तत्व या तो एक bar
या baz
बच्चे, फिर या तो एक baz
या bat
बच्चे, तो एक foo
, bar
, या bat
बच्चे हो सकता है।यही कारण है कि एक नियम निर्धारित कर सकते हैं कि कि इन तत्वों में से दोनों मान्य हैं के लिए बनाता है:
<foo>
<baz/>
<baz/>
<bar/>
</foo>
<foo>
<foo>
<bar/>
</foo>
</foo>
इसी समय, उस नियम आप कैसे डेटा मदों की एक टपल लेने के लिए और एक foo
बनाने के लिए निर्धारित करने में काफी शून्य मदद देता है इससे तत्व
आम तौर पर, जब कोई इस प्रश्न से पूछता है, तो वे एक या दो स्कीमा देख रहे हैं जो वे उपयोग कर रहे हैं जो अपेक्षाकृत सरल दस्तावेज़ संरचना को परिभाषित करते हैं। ऐसा लगता है कि मैपिंग प्रक्रिया में इनपुट के रूप में उन स्कीमा का उपयोग करना आसान होना चाहिए। यह शायद है। क्या आसान नहीं है, या यहां तक कि संभव है, एक मानचित्रण प्रक्रिया है जो किसी भी स्कीमा को इनपुट के रूप में ले सकती है।
मेरी परियोजनाओं में, मैंने इसके बजाय क्या किया है, समस्या को सरल बनाना है। मैंने प्रोग्राम बनाए हैं जो सीएसवी और एक्सएमएल का उपयोग करते हैं और स्कीमा सत्यापन का समर्थन करते हैं, लेकिन इन कार्यक्रमों में, स्कीमा आउटपुट है। मैं एक साधारण XML मेटाडाटा प्रारूप, जैसे परिभाषित किया है:
<item name="foo" type="string" size="10" allowNulls="true" .../>
<item name="bar" type="date" allowNulls="false" .../>
तब मैं CSV इनपुट से एक्सएमएल उत्पादन को नियंत्रित करने कि मेटाडाटा का उपयोग कर सकते हैं, और मैं भी इसका इस्तेमाल कि XML मेरा कार्यक्रम एक स्कीमा निर्माण करने के लिए कर सकते हैं उत्पादन के अनुरूप होगा। अगर मैं अपना मेटाडाटा बदलता हूं, तो मेरा एक्सएमएल और स्कीमा उचित रूप से बदलता है।
बेशक, यदि स्कीमा वास्तव में आपकी प्रक्रिया में इनपुट हैं (उदाहरण के लिए वे किसी तृतीय पक्ष द्वारा प्रदान की जाती हैं), तो यह आपकी सहायता भी शुरू नहीं करेगा।
आप एक xkcd का उपयोग कर के बारे में सोचा है? –
आपको यह भी निर्दिष्ट करना चाहिए कि एक्सएसएलटी का कौन सा संस्करण आप उपयोग में प्रतिबंधित हैं (v1 या v2?) - यह सर्वोत्तम उत्तर में बड़ा अंतर बनाता है। साथ ही, क्या आप एक विक्रेता (कौन सा?) तक सीमित हैं, या क्या आपको विक्रेता/मंच स्वतंत्र समाधान की आवश्यकता है? –