का अर्थ - <? Xml संस्करण = "1.0" एन्कोडिंग = "utf-8"?>


103

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

XML सीखने से :

XML घोषणा दस्तावेज के कुछ सबसे सामान्य गुणों का वर्णन करती है, जो XML प्रोसेसर को बताती है कि उसे इस दस्तावेज़ की व्याख्या करने के लिए XML पार्सर की आवश्यकता है।

इसका क्या मतलब है?

मैं xml versionभाग को समझता हूं - डॉक्टर और डॉक्टर दोनों को XML के एक ही संस्करण में "बात" करनी चाहिए। लेकिन encodingभाग के बारे में क्या ? ऐसा क्यों जरूरी है?



जवाबों:


126

"एन्कोडिंग" विशेषता को समझने के लिए, आपको बाइट्स और वर्णों के बीच के अंतर को समझना होगा ।

बाइट्स को 0 और 255 के बीच की संख्याओं के रूप में सोचें, जबकि वर्ण "a", "1" और "Ä" जैसी चीजें हैं। उपलब्ध सभी वर्णों के समुच्चय को एक वर्ण समुच्चय कहा जाता है ।

प्रत्येक चरित्र में एक या एक से अधिक बाइट्स का एक क्रम होता है जो इसका प्रतिनिधित्व करने के लिए उपयोग किया जाता है; हालाँकि, बाइट्स की सही संख्या और मूल्य उपयोग किए गए एन्कोडिंग पर निर्भर करता है और कई अलग-अलग एनकोडिंग हैं।

अधिकांश एनकोडिंग एक पुराने वर्ण सेट और एन्कोडिंग पर आधारित होते हैं, जिन्हें ASCII कहा जाता है, जो कि एक एकल बाइट प्रति वर्ण (वास्तव में, केवल 7 बिट्स) है और इसमें 128 वर्ण होते हैं, जिनमें यूएस अंग्रेजी में उपयोग किए जाने वाले बहुत से सामान्य वर्ण शामिल हैं।

उदाहरण के लिए, यहाँ ASCII वर्ण सेट में 6 अक्षर हैं जो कि 60 से 65 के मानों द्वारा दर्शाए गए हैं।

Extract of ASCII Table 60-65
╔══════╦══════════════╗
║ Byte ║  Character   ║
╠══════╬══════════════║
║  60  ║      <       ║
║  61  ║      =       ║
║  62  ║      >       ║
║  63  ║      ?       ║
║  64  ║      @       ║
║  65  ║      A       ║
╚══════╩══════════════╝

पूर्ण ASCII सेट में, सबसे कम उपयोग किया गया मूल्य शून्य है और उच्चतम 127 है (ये दोनों छिपे हुए नियंत्रण वर्ण हैं)।

हालाँकि, एक बार जब आपको बुनियादी ASCII प्रदान करने वाले उदाहरणों (उदाहरण के लिए, लहजे, मुद्रा प्रतीकों, ग्राफिक प्रतीकों आदि के साथ अक्षर) की तुलना में अधिक वर्णों की आवश्यकता शुरू होती है, तो ASCII उपयुक्त नहीं है और आपको कुछ अधिक व्यापक की आवश्यकता है। आपको अधिक वर्ण (एक अलग वर्ण सेट) की आवश्यकता है और आपको एक अलग एन्कोडिंग की आवश्यकता है क्योंकि सभी वर्णों में फिट होने के लिए 128 वर्ण पर्याप्त नहीं हैं। कुछ एन्कोडिंग एक बाइट (256 वर्ण) या छह बाइट तक प्रदान करते हैं।

समय के साथ बहुत सारे एनकोडिंग बनाए गए हैं। विंडोज की दुनिया में, CP1252 या ISO-8859-1 है, जबकि लिनक्स उपयोगकर्ता UTF-8 का पक्ष लेते हैं। जावा UTF-16 का उपयोग मूल रूप से करता है।

एक एन्कोडिंग में एक चरित्र के लिए बाइट मानों का एक क्रम किसी अन्य एन्कोडिंग में पूरी तरह से अलग चरित्र के लिए खड़ा हो सकता है, या यहां तक ​​कि अमान्य भी हो सकता है।

उदाहरण के लिए, में आईएसओ 8859-1 , एक मूल्य की एक बाइट का प्रतिनिधित्व करती है 226, जबकि में UTF-8 यह दो बाइट्स है: 195, 162। हालाँकि, ISO 8859-1 में , 195, 162दो अक्षर होंगे, Ã, 85

XML को वर्णों का अनुक्रम नहीं बल्कि बाइट्स का एक क्रम समझें।

एक्सएमएल बाइट्स को देखने वाले सिस्टम की कल्पना करें 195, 162। यह कैसे पता चलता है कि ये कौन से वर्ण हैं?

सिस्टम के लिए उन बाइट्स को वास्तविक पात्रों के रूप में व्याख्या करने के लिए (और इसलिए उन्हें प्रदर्शित करें या उन्हें किसी अन्य एन्कोडिंग में परिवर्तित करें), इसे XML में उपयोग किए जाने वाले एन्कोडिंग को जानना होगा।

चूंकि अधिकांश आम एनकोडिंग एएससीआईआई के साथ संगत हैं, जहां तक ​​बुनियादी वर्णमाला वर्ण और प्रतीक चलते हैं, इन मामलों में, घोषणा केवल एएससीआईआई पात्रों का उपयोग करने के साथ दूर हो सकती है कहने के लिए कि एन्कोडिंग क्या है। अन्य मामलों में, पार्सर को घोषणा की एन्कोडिंग का पता लगाने की कोशिश करनी चाहिए। चूंकि यह जानता है कि घोषणा शुरू होती है <?xmlइसलिए ऐसा करना बहुत आसान है।

अंत में, versionविशेषता एक्सएमएल संस्करण को निर्दिष्ट करती है, जिनमें से दो इस समय हैं ( विकिपीडिया एक्सएमएल संस्करण देखें । संस्करणों के बीच मामूली अंतर हैं, इसलिए एक एक्सएमएल पार्सर को यह जानने की जरूरत है कि यह क्या व्यवहार कर रहा है। ज्यादातर मामलों में (अंग्रेजी के लिए) वैसे भी वक्ताओं), संस्करण 1.0 पर्याप्त है।


9
"हेडर ही एएससीआईआई एन्कोडिंग का उपयोग करता है": मुझे लगता है कि आप एक्सएमएल घोषणा की बात कर रहे हैं। यह बाकी दस्तावेज़ों की तरह एन्कोडेड है; UTF-16 या क्या नहीं। एक XML प्रोसेसर कुछ परीक्षण कर सकता है जब तक कि यह एन्कोडिंग विनिर्देश नहीं पढ़ सकता है।
टॉम ब्लोडेट

1
मैं इस धारणा के तहत था कि प्रस्तावना / प्रस्तावना UTF-8 के तहत कूटबद्ध किया जाना था और उसने पार्सर को बताया कि शेष बाइट्स (वास्तविक XML दस्तावेज़) को सही एन्कोडिंग में कैसे परिवर्तित किया जाए। फिर से गलत! :-)
केली दाढ़ी

5
यहाँ एक सुझाव पढ़ा है: joelonsoftware.com/2003/10/08/…
सुदीप भंडारी

26

सभी XML दस्तावेजों में XML घोषणा की आवश्यकता नहीं है; हालाँकि XHTML दस्तावेज़ लेखकों को दृढ़ता से अपने सभी दस्तावेज़ों में XML घोषणाओं का उपयोग करने के लिए प्रोत्साहित किया जाता है। इस तरह की घोषणा की आवश्यकता तब होती है जब दस्तावेज़ का चरित्र एन्कोडिंग डिफ़ॉल्ट UTF-8 या UTF-16 के अलावा होता है और कोई भी एन्कोडिंग उच्च-स्तरीय प्रोटोकॉल द्वारा निर्धारित नहीं की जाती है। यहाँ एक XHTML दस्तावेज़ का एक उदाहरण है। इस उदाहरण में, XML घोषणा शामिल है।

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE html 
 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title>Virtual Library</title>
  </head>
  <body>
    <p>Moved to <a href="http://example.org/">example.org</a>.</p>
 </body>
</html>

कृपया XML के लिए W3 मानकों को देखें ।


4
कि xml xHTML से लिंक करता है। क्या आपका मतलब xml w3.org/TR/xml से लिंक करने से है या आपका मतलब लिंक xHTML से है?
jrwren

एक्सएचटीएमएल एक्सएमएल प्रलेखन को संदर्भित करता है। अच्छी तरह से गठित xml के लिए दस्तावेज़ प्रकार की घोषणा की आवश्यकता नहीं है।
xvan

"कृपया XML के लिए W3 मानकों का संदर्भ लें।" IOW, पढ़िए faqing faq, जो एक लंबा लंबा दस्तावेज़ है। लोग केवल यह क्यों नहीं समझा सकते हैं "?" करता है और यह क्यों है ???
धन्य Geek

3

यह XML वैकल्पिक प्रस्तावना है।

  • version="1.0" इसका मतलब है कि यह XML मानक है जो इस फ़ाइल के अनुरूप है
  • encoding="utf-8" इसका मतलब है कि फ़ाइल UTF-8 यूनिकोड एन्कोडिंग का उपयोग करके एन्कोडेड है

3

एन्कोडिंग घोषणा से पता चलता है कि दस्तावेज़ में पात्रों का प्रतिनिधित्व करने के लिए कौन सी एन्कोडिंग का उपयोग किया जाता है।

XML घोषणा पर अधिक यहाँ: http://msdn.microsoft.com/en-us/library/ms256048.aspx


2

क्या कोई मुझे ऐसी पुस्तक या वेबसाइट की ओर संकेत कर सकता है जो इन मूल बातों को स्पष्ट रूप से समझाती हो?

आप इस XML ट्यूटोरियल को उदाहरणों के साथ देख सकते हैं।

लेकिन एन्कोडिंग भाग के बारे में क्या? ऐसा क्यों जरूरी है?

W3C एन्कोडिंग के बारे में स्पष्टीकरण प्रदान करता है :

"XML और HTML 4.0 के लिए सेट किया गया दस्तावेज़ वर्ण यूनिकोड (उर्फ ISO 10646) है। इसका मतलब है कि HTML ब्राउज़र और XML प्रोसेसर को व्यवहार करना चाहिए जैसे कि उन्होंने आंतरिक रूप से यूनिकोड का उपयोग किया है। लेकिन इसका यह अर्थ नहीं है कि दस्तावेजों को यूनीकोड ​​में प्रेषित किया जाना है। जब तक क्लाइंट और सर्वर एन्कोडिंग पर सहमत होते हैं, वे किसी भी एन्कोडिंग का उपयोग कर सकते हैं जिसे यूनिकोड में परिवर्तित किया जा सकता है ... "


-1

दस्तावेज़ के नक्शे में XML घोषणा में निम्नलिखित शामिल हैं:

The version number, ?xml version="1.0"?. 

यह अनिवार्य है। हालाँकि संख्या XML के भविष्य के संस्करणों के लिए बदल सकती है, 1.0 वर्तमान संस्करण है।

एन्कोडिंग घोषणा,

encoding="UTF-8"?

यह वैकल्पिक है। यदि उपयोग किया जाता है, तो XML घोषणा में संस्करण की जानकारी के तुरंत बाद एन्कोडिंग घोषणा दिखाई देनी चाहिए, और इसमें मौजूदा वर्ण एन्कोडिंग का प्रतिनिधित्व करने वाला मान होना चाहिए।

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