c# - XML नाम में स्पेस वर्ण एन्कोडिंग




(2)

एक्सएमएल नामों में अंतरिक्ष वर्णों की अनुमति नहीं है

86 कोडपॉइंट हैं जिनके नाम में शब्द स्थान है । उन कोडपॉइंटों को अनदेखा करते हैं जहां SPACE MONOSPACE और किसी भी अन्य दृश्य दृश्य के कारण मारता है, निम्नलिखित को छोड़ देता है:

  • #x0020 SPACE
  • #x00A0 BREAK स्पेस
  • [#x2002-#x200A] एन स्पेस के माध्यम से हेयर स्पेस
  • #x205F स्पेस
  • #x3000 आईडीईग्राफिक स्पेस

घटक नामों के लिए डब्ल्यू .3 सी एक्सएमएल बीएनएफ द्वारा एक्सएमएल नामों में अंतरिक्ष संबंधी कोड अंक (रिक्त दृश्य प्रतिनिधित्व) में से कोई भी अनुमति नहीं है:

NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] |
                  [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] |
                  [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] |
                  [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
                  [#x10000-#xEFFFF]
NameChar      ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] |
                  [#x203F-#x2040]
Name          ::= NameStartChar (NameChar)*

एक्सएमएल नामों में रिक्त स्थान के विकल्प

  • CamelCase
  • underscore_char
  • hyphen-char
  • period.char

एक्सएमएल नामों में इसके उपयोग के साथ भ्रम से बचने के लिए Colon को एक्सएमएल नामों में एक शब्द विभाजक के रूप में इस्तेमाल नहीं किया जाना चाहिए ।

एक्सएमएल नामों में ↂ अनुमति है

चरित्र, ↂ, (0xE2, 0x86, 0x82, जो #x2182 ) का स्थान रिक्त स्थान के साथ कुछ नहीं करना है - यह रोमन NUMERAL दस हजार है । ↂ स्पष्ट रूप से अनुमति है: #x2182 [#x2070-#x218F] कोड श्रेणी में है

ↂ के बाद दिखने वाला 0020 केवल अंक हैं। Benchↂ0020Codeↂ0020 में बाकी अक्षर के Benchↂ0020Codeↂ0020 , ये एक अनुमत (अपरंपरागत यद्यपि) एक्सएमएल नाम के रूप में होता है वे एक्सएमएल नामों में रिक्त स्थान नहीं बनाते हैं क्योंकि एक्सएमएल नामों में रिक्त स्थान की अनुमति नहीं है।

मुझे एक XML फ़ाइल दी गई है जिसमें नीचे दिए गए नाम शामिल हैं:

<Benchↂ0020Codeↂ0020>something</Benchↂ0020Codeↂ0020>

ↂ प्रतीक तीन बाइट्स के साथ प्रदर्शित होता है: 0xE2, 0x86, 0x82।

ऐसा लगता है कि ↂ0020 को अंतरिक्ष चरित्र के रूप में माना जाता है। लेकिन जब मैं System.Xml.XmlReader का इस्तेमाल करते हुए एक्सएमएल पढ़ता हूं तो अक्षर ↂ0020 को स्थान में कनवर्ट नहीं किया जाता है।

क्या उन्हें बदलने का एक तरीका है (बदले में, बिल्कुल)? या मैं बस एक्सएमएल टूट गया?


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





xml