2010-02-28 12 views
7

मैं क्रॉस-प्लेटफ़ॉर्म ऐप में सी # और एक्सएमएल के साथ कुछ काम करने की कोशिश कर रहा हूं (अधिकांश विकास लिनक्स पर मोनो डेवलपमेंट में है, लेकिन अधिकांश उपयोगकर्ता विजुअल स्टूडियो में WinForms फ्रंट-एंड का उपयोग करके समाप्त हो जाएंगे)। मोनो व्यवहार कर रहा है जैसा कि मैं उम्मीद करता हूं, लेकिन नेट नहीं है और इसलिए मैं विकल्पों और विकल्पों की तलाश में हूं।मैं नेट के साथ अन्य/अधिक आधुनिक स्कीमा सत्यापन का उपयोग कैसे कर सकता हूं?

स्कीमा एक के बाद विभिन्न वैकल्पिक तत्वों है "XS: किसी भी" तत्व। यह मोनो में पूरी तरह से ठीक काम करता है, लेकिन माइक्रोसॉफ्ट के .NET में नहीं, क्योंकि यह शिकायत करता है कि वैकल्पिक तत्व की घटना स्कीमा और "xs: any" में इसकी वास्तविक परिभाषा के बीच संदिग्ध है। कुछ पढ़ने के बाद, यह एक समस्या प्रतीत होती है जिसे डब्ल्यू 3 सी की स्कीमा परिभाषा के बाद के संस्करणों में हल किया गया था। जाहिर है मोनो को अद्यतित रखा गया है, लेकिन माइक्रोसॉफ्ट लगी हुई है।

विकल्प मैं देख सकता हैं:

1) का प्रयोग करें RelaxNG - दुर्भाग्य से मुख्य साइट से सी # कार्यान्वयन के लिए लिंक टूटी हुई है। यह मोनो का हिस्सा है, लेकिन एमएस 'नेट पर चलते समय यह बहुत मदद नहीं है। एकमात्र तरीका यह है कि मैं इसे देखने के लिए देख सकता हूं Mono's version को अपने स्वयं के डीएलएल

2) स्कीमट्रॉन का उपयोग करें - मैंने इसे पिछड़ा और आगे संगत एक्सएमएल बनाने के सुझाव के रूप में पाया, लेकिन यह एक प्रारूप सत्यापनकर्ता की तरह लगता है एक 'मानक' स्कीमा भाषा से। मुझे पूरा यकीन नहीं है कि कार्यान्वयन कहां है - मुझे बस एक कमांड लाइन सत्यापनकर्ता मिल सकता है।

3) यकीन है कि एमएस नेट कार्यान्वयन अद्यतन स्कीमा मानक का उपयोग करता है कि मोनो रूप में अच्छी तरह का उपयोग करता है - मैं भले ही यह संभव है पता नहीं है।

4) बदसूरत स्कीमा के साथ चिपकाएं और वैकल्पिक "एक्सटेंशन" तत्व के भीतर "xs: any" डालें - यह आधिकारिक के अलावा कोई अच्छा कारण नहीं है। नेट फ्रेमवर्क उलझन में नहीं आता है, लेकिन यह काम करता है।

कोड नेट 2.0 के उद्देश्य से है, लेकिन मैं 3.5 मेरी मशीन पर स्थापित मिल गया है। मैं भी मोनो 2.4, monodevelop 2.2 और विजुअल स्टूडियो एक्सप्रेस 2005 के साथ काम कर रहा हूँ

1-3 के किसी भी संभावित हैं, या मैं 4 के साथ फंस रहे हैं?

धन्यवाद।

+0

कृपया एक लिंक प्रदान करें जो कहता है कि यूपीए शासन बदल गया है। यह वही होगा जहां आप कहते हैं कि डब्ल्यू 3 सी ने स्कीमा संस्करण अपडेट किया है। –

+1

मैं इस नवीनतम काम मसौदा (http://www.w3.org/TR/xmlschema11-1/#sec-cos-nonambig) है, जो यूपीए बाधा को समाप्त नहीं करती में संबोधित किया जाता है लगता है, लेकिन कैसे का एक विशेष मामला बनाता है एक तत्व और वाइल्डकार्ड के बीच एक संघर्ष को संभालने के लिए। चूंकि यह एक मसौदा है, इसलिए कोई माइक्रोसॉफ्ट को गलती नहीं कर सकता है। शायद यह नहीं है कि मोनो अधिक अद्यतित है, बल्कि उन्होंने यूपीए की जांच को लागू नहीं किया है? निजी तौर पर, मैं उन ड्राफ्ट विनिर्देशों पर निर्भर अनुप्रयोगों को डिजाइन करने की अनुशंसा नहीं करता हूं, लेकिन यह ओपी तक है ... –

+0

@ बाइनरीकोडर: धन्यवाद। मैंने इसके बारे में नहीं सुना था, इसलिए यह सुनिश्चित था कि यह किसी भी अंतिम कल्पना का हिस्सा नहीं था। –

उत्तर

4

आप गलत पर XmlSchemaSet.CompilationSettings.EnableUpaCheck की स्थापना करके अस्पष्टता समस्या को हल करने के लिए सक्षम हो सकता है। UPA आपके द्वारा संदर्भित XML स्कीमा मानक की अनोखी कण विशेषता आवश्यकता के लिए खड़ा है।

+1

दूसरे शब्दों में, माइक्रोसॉफ्ट स्कीमा सत्यापन आपको अपनी स्कीमा के साथ एक समस्या के बारे में बता रहा है - यह संदिग्ध है। –

+1

<आपको अपनी स्कीमा के साथ किसी समस्या के बारे में बता रहा है> ठीक है, यह वर्तमान मानक के अनुसार स्कीमा के साथ निश्चित रूप से एक समस्या है। एक्सएमएल स्कीमा 1.1 में यह कम हो गया है, यह चेतावनी के साथ कि यह केवल "कामकाजी ड्राफ्ट" स्थिति है। –

+0

@ बाइनरीकोडर: और बिंदु, वर्किंग ड्राफ्ट स्तर पर है, और चूंकि यह मानक का एक अलग संस्करण है, इसलिए यह संभावना नहीं है कि मोनो मानक के बाद के संस्करण को कार्यान्वित कर रहा है और माइक्रोसॉफ्ट पीछे है। –

0

मैं एक आईएसओ स्कीमेट्रोन सी # में लागू की एक पुनरुत्थान के लिए योगदान दिया। यह github here पर उपलब्ध है।

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