विजुअल स्टूडियो आईडीई में एक्सएसडी के साथ एक्सएमएल सत्यापन


96

मुझे पता है कि मैंने पहले भी ऐसा किया है, लेकिन यह आज काम नहीं कर रहा है, न ही मैं कहीं भी पा सकता हूं जो यह बताता है कि यह कैसे करना है। यह मेरी नींद की कमी हो सकती है, लेकिन मुझे ग्रेमलिन पर संदेह है।

मेरे पास एक XML दस्तावेज़ और XSD से भरा एक निर्देशिका है जो इसे परिभाषित करता है। मुझे सत्यापन विफलताओं के बारे में सूचित करने के लिए विज़ुअल आईडीई कैसे सेट करूं, और फिर किसी संदर्भ में वैध टैग और विशेषताओं की एक सूची प्रदान करें?

मैंने क्या कोशिश की है:

  • मैंने XML दस्तावेज़ के साथ प्रोजेक्ट में XSD जोड़ा है।
  • मैंने XSD की XML स्कीमा सूची (XML / स्कीमा के तहत ... मेनू आइटम) जोड़ दी है।
  • मैं भी XML दस्तावेज़ में स्कीमा और noNamespaceSchemaLocation विशेषताओं को शामिल किया है।

विजुअल स्टूडियो अभी भी कोई उपयोगी डिबगिंग या संपादन जानकारी नहीं दे रहा है। मैंने २०१० और २०० tried की कोशिश की (मैंने इससे पहले २०० both में सोचा था)

अद्यतन: मेरे पास एक और डेवलपर था और यह उसके लिए भी विफल रहा। वह जानता है कि उसने इसे अन्य एक्सएमएल दस्तावेजों के साथ किया है और यह काम किया है। मैंने तब ऑक्सीजन एक्सएमएल संपादक डाउनलोड किया और यह उसी एक्सएमएल और एक्सएसडी फाइलों पर ठीक काम करता है, इसलिए फाइलें ठीक लगती हैं (या ऑक्सीजन अधिक क्षमा / लचीला है।)

जवाबों:


138

आपको XML दस्तावेज़ को विज़ुअल स्टूडियो में उस XSD फ़ाइल के साथ जोड़ना होगा जो आपके पास है।

  1. आपको XML डॉक्यूमेंट की अपनी प्रॉपर्टीज़ विंडो में कुछ इस तरह से देखना चाहिए:

    XML गुण> स्कीमा

  2. XML स्कीमा सेट एडिटर में (आपके गुण विंडो में "स्कीमा" टेक्स्टबॉक्स में एलिप्सीस (... पर क्लिक करने पर खुलता है) आपको यह सुनिश्चित करने की जरूरत है कि आपके पास अपना स्कीमा मौजूद है। यह भी सुनिश्चित करें Useकि उस स्कीमा के लिए कॉलम सक्षम है - यदि नहीं, तो उस पर क्लिक करें - आपको विकल्पों की एक ड्रॉप-डाउन सूची मिल जाएगी, Useहरे चेकमार्क वाले को चुनें:

    XML स्कीमा चयनकर्ता

  3. सुनिश्चित करें कि Visual Studio की त्रुटि सूची विंडो दृश्यमान है (मेनू दृश्य> त्रुटि सूची)। यह XML और XSD स्कीमा परिभाषाओं के बीच सभी विसंगतियों को दिखाएगा।

  4. एक बार जब वह सब कुछ हो जाता है, तो दृश्य स्टूडियो एक्सएमएल एडिटर को ब्लू स्क्वैगलीज़ का उपयोग करके अपने एक्सएमएल में संपादक के साथ समस्याओं को उजागर करना चाहिए:

    त्रुटि का उदाहरण


धन्यवाद, यह एक महान विस्तृत विवरण है, लेकिन मेरा अभी भी काम नहीं कर रहा है। मुझे नहीं पता था कि आप इस तरह के गुणों से स्कीमा सूची में प्राप्त कर सकते हैं।
जिम मैककेथ

@ जय मैककेथ: क्या होगा यदि आप अपने एक्सएमएल को संशोधित करते हैं और इसे फिर से बचाते हैं? कभी-कभी XML सत्यापन को किक करने के लिए ट्रिगर की आवश्यकता होती है ...
marc_s

मैंने आपका जवाब स्वीकार कर लिया है, भले ही यह मेरे लिए काम न करे। मुझे लगता है कि मेरा सिस्टम अभी ठीक हो गया था, लेकिन मैं एक नए कंप्यूटर में चला गया हूं और अब सब कुछ ठीक है।
जिम मैककेथ

38
@jim यकीन नहीं है कि अगर आपके पास भी यही समस्या थी, लेकिन मैंने यह महसूस करने से पहले एक हास्यास्पद राशि खर्च की थी कि XML फ़ाइल को संपादक में खुला होना चाहिए और गुण विंडो में कॉल करने पर ध्यान संपादक में होना चाहिए । इसके बाद ही आपको "XML डॉक्यूमेंट" प्रॉपर्टी मिलती है, जहाँ आप स्कीमा बना सकते हैं। यदि ध्यान समाधान एक्सप्लोरर में है, तो गुण विंडो केवल फ़ाइल गुण प्रदर्शित करता है, अर्थात वहां कोई स्कीमा असाइनमेंट संभव नहीं है।
हर्ज़ब्यूब

2
मुझे लगता है कि आपको उत्तर में ही हर्ज़ेब के निष्कर्षों को जोड़ना चाहिए।
आशीष

35

आपको Visual Studio में फ़ाइलों को मैन्युअल रूप से जोड़ने की आवश्यकता नहीं है - यदि आप उन दोनों को खोलते हैं, तो यह स्वचालित रूप से एक एक्सएसडी फ़ाइल के लिए एक्सएमएल फ़ाइल से मेल खाएगा, और आपके पास अपने नामस्थान को सही ढंग से परिभाषित किया गया है।

नाम स्थान को परिभाषित करने के लिए:

XML फ़ाइल के मूल तत्व में:

<Data xmlns='http://yourdomain.com/yourschema.xsd'>
    ...
</Data>

XSD फ़ाइल के स्कीमा तत्व में:

<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://yourdomain.com/yourschema.xsd"
    xmlns:this="http://yourdomain.com/yourschema.xsd"
    elementFormDefault="qualified">
    ...
</xs:schema>

जब आपके पास लक्ष्यनाम हो तो अपने स्कीमा में प्रकारों का उपयोग करने पर ध्यान दें

क्योंकि आप targetNamespaceअपने स्कीमा में एक निर्दिष्ट कर रहे हैं , स्कीमा में परिभाषित प्रकारों के किसी भी संदर्भ को एक नामस्थान के साथ उपसर्ग करने की आवश्यकता होगी (यही कारण है कि हमने xmlns:thisउपरोक्त <xs:schema />तत्व में विशेषता को जोड़ा है )।

<!-- Define the type as normal -->
<xs:complexType name="Row">
    <xs:sequence>
        <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="Value" type="xs:float" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
</xs:complexType>
<!-- Use the type (note the "this:" prefix) -->
<xs:element name="Row" type="this:Row" minOccurs="0" maxOccurs="unbounded" />

3

यहां विफलता का एक और बिंदु विंडोज 7 "ब्लॉकिंग" स्कीमा फाइलें हैं ... डिस्क, गुण> सामान्य पर xsd फ़ाइल पर राइट-क्लिक करें और यदि यह अवरुद्ध है, तो आपके पास "अनब्लॉक" बटन होगा। यह मेरा XML सत्यापन VS2012 में विफल हो रहा था।


1

क्या आपके xsd में एक विशेषता है "targetNamespace" /schema/@targetNamespaceजो उस नामस्थान के समान है जिसे आप xml में संदर्भित कर रहे हैं?

उदाहरण:

XSD :

<xs:schema .... targetNamespace="Datafile.xsd" ... >

XML :

<data xmlns="Datafile.xsd" >...</data>

इसे भी देखें: विज़ुअल स्टूडियो 2010 में XML / XSD इंटेलीसेंस काम नहीं कर रहा है


0

मुझे भी यही समस्या थी, लेकिन वीएस अपने स्कीमा को पहले से ही सही बता रहे थे। जिस फ़ाइल को मैं सत्यापित करने का प्रयास कर रहा था, वह 'xml' फ़ाइल एक्सटेंशन नहीं है। मेरे फ़ाइल नाम के अंत में .xml जोड़ा गया, और सत्यापन कार्य करना शुरू कर दिया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.