2010-01-06 14 views
58

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

  1. बग स्कीमा और सभी स्कीमा उदाहरणों भीतर पाया जाता है तय संस्करण का पालन करना चाहिए:

    वर्तमान में मैं दो स्थितियों की है।

  2. स्कीमा अपग्रेड किया गया है और इसे बेहतर के रूप में माना जाना चाहिए लेकिन पुराना भी समर्थित होना चाहिए।

अंत में मैं स्कीमा का नाम स्थान के अंदर संस्करण सूचना के संचय के साथ आया था:

targetNamespace="http://schemas.company.com/Geodesy/2010/River.xsd" 

जब एक बग मैं एक ही नाम स्थान में इसे ठीक लेकिन फिक्सिंग अगर मैं के बारे में तो एक स्कीमा उन्नत करने के लिए कर रहा हूँ अगर मैं एक महीने में एक से अधिक उन्नयन है तो अभी भी एक दिन संलग्न

targetNamespace="http://schemas.company.com/Geodesy/2010/01/River.xsd" 

और:: मैं एक नया नाम स्थान बनाने की जरूरत है, लेकिन उन्नयन महीने के साथ जोड़ा

targetNamespace="http://schemas.company.com/Geodesy/2010/01/17/River.xsd" 

क्या आप कोई बेहतर दृष्टिकोण जानते हैं?

उत्तर

79

यह इतना कठिन विषय है कि यह भी मजाकिया नहीं है, और एक जिसे मैंने कई वर्षों तक परामर्श सहायता प्रदान की है।

वहाँ कई best practices हैं, लेकिन उनमें से अधिकतर सभी परिस्थितियों में काम नहीं करते हैं। उदाहरण के लिए, कई एक्सटेंशन को अनुमति देने के लिए "xsd: any" के उपयोग की वकालत करते हैं, और यदि डेवलपर्स स्कीमा को बनाए रखने का प्रभारी हैं, तो इसे एक डंप में बदलकर आपदा के लिए एक नुस्खा है।

यहाँ आप के लिए कुछ सुझाव अगर आप पहली बार कर रहे हैं:

  • नहीं अपने नाम स्थान में एक छोटी सी संस्करण संख्या, माइक्रो संस्करण संख्या, दिनांक, या एक तरह से कुछ और, डाल मत करो। हर बार जब आप नामस्थान बदलते हैं, तो आप सभी प्रसंस्करण अनुप्रयोगों को तोड़ देंगे।
  • एक्सएमएल इंस्टेंस दस्तावेज़ में "संस्करण" विशेषता डालें। इससे प्रोसेसिंग एप्लिकेशन या वर्जन एडाप्टर सेवा को यह पता लगाने में मदद मिलेगी कि यह प्रसंस्करण कर रहा है।
  • एक पिछड़ा संगत परिवर्तन का गठन करने की नीति निर्दिष्ट करें, उदाहरण के लिए: वैकल्पिक तत्व जोड़ना प्रेषकों को तोड़ नहीं देगा, और अगर वे उन तत्वों को अनदेखा करने की नीति का उपयोग नहीं करते हैं जो वे नहीं जानते हैं (JAXB और XMLBeans इस तरह से कॉन्फ़िगर किया जा सकता है)

डूड किस्मत!

+1

Sooo, शायद हमें टिप्पणी में संस्करण के बारे में जानकारी रखना चाहिए? –

+0

क्या JAXB के साथ demarshalling के बाद रूट में संस्करण संख्या प्राप्त करने का कोई तरीका है? – CMPE

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

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