2012-02-14 17 views
5

के साथ मुझे सी # एक्सडॉक्यूमेंट एक्सएसडी सत्यापन के साथ समस्या है।

निम्न फ़ाइल नहीं नेट (ग #)

<Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Simple.xsd"> 
    <Var Name="$Toto"/> 
</Root> 

स्कीमा

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <xs:element name="Root"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Var"> 
        <xs:complexType> 
         <xs:attribute name="Name" type="ST_VariableIdentifier" use="required"/> 
        </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
     <xs:simpleType name="ST_VariableIdentifier"> 
     <xs:restriction base="xs:string"> 
      <xs:pattern value="$[a-z,A-Z]*"/> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 

एक विचार से Xml जासूस द्वारा अच्छी तरह से मान्य है, लेकिन?

+2

क्या यह सी # टैग से लाभान्वित होगा? – sbi

+0

यह सी # में एक बग है, जिसके लिए एक वर्कअराउंड है: [$] का उपयोग करें। इस तरह के चरित्र संदर्भों की कोशिश कर परेशान मत करो, उदा। $, किसी कारण से सी # यहां बहुत पसंद है ... –

उत्तर

4

यह काम करना चाहिए!

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
    <xs:element name="Root"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element name="Var"> 
      <xs:complexType> 
      <xs:attribute name="Name" type="ST_VariableIdentifier" use="required"/> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:simpleType name="ST_VariableIdentifier"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="[$][a-z,A-Z]*"/> 
    </xs:restriction> 
    </xs:simpleType> 
</xs:schema> 
+0

धन्यवाद, यह अच्छी तरह से काम कर रहा है। – swWork

+0

आपका स्वागत है :) –

+0

अगर उत्तर वास्तव में आपके लिए समाधान था तो कृपया उत्तर स्वीकार करें :) धन्यवाद। –

0

बस मौजूदा उत्तर में जोड़ने के लिए। यह वास्तव में डब्ल्यू 3 सी चश्मा के .NET कार्यान्वयन में एक ज्ञात 'बग' है (कनेक्ट पर here स्वीकार किया गया है, लेकिन को ठीक नहीं करेगा)।

एमएसडीएन ऊपर वर्णित कार्यवाही के साथ, अधिक जानकारी (here) प्रदान करता है।

वर्ल्ड वाइड वेब कंसोर्टियम (W3C) XML स्कीमा के लिए सिफारिशें की System.Xml कार्यान्वयन नियमित अभिव्यक्ति की पैटर्न मिलान प्रदर्शन करने के लिए रेगुलर एक्सप्रेशन से वर्ग का उपयोग करता है। कुछ मामलों में, W3C द्वारा अनुशंसित व्यवहार RegEx क्लास व्यवहार से अलग है। निम्न ज्ञात मामलों में जहां पैटर्न मिलान System.Xml कार्यान्वयन W3C विनिर्देश से अलग कर रहे हैं:

XML स्कीमा विनिर्देश के लिए W3C के अनुसार, डॉलर चिह्न ($) एक नियमित रूप से चरित्र के रूप में व्यवहार किया जाना चाहिए । हालांकि, System.Xml प्रमाणीकरण xs में एक डॉलर चिह्न का अर्थ है: पैटर्न एंड-ऑफ़-लाइन एंकर के रूप में। संभावित कामकाज $ [$] के साथ $ को प्रतिस्थापित करना है। यदि आपका पैटर्न पहले से ही ब्रैकेट में है, जैसे कि [abc $], यह कोई परिवर्तन करने के लिए आवश्यक नहीं है।

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