2013-05-17 46 views
9

मैं XHTML 1.0 Strict का एक लंबा समय का उपयोगकर्ता रहा हूं, और अब मैं अपनी नई परियोजनाओं में एक्सएचटीएमएल 5 पर स्विच करने की कोशिश कर रहा हूं।xhtml5 के बारे में भ्रमित: कोई और `<?xml?>` और अब अनिवार्य 'मेटा`?

मुझे उलझन में है कि <?xml version='1.0' encoding='utf-8'?> अब HTML5 के लिए मान्य नहीं है, http://validator.w3.org/ द्वारा। ऐसा क्यों है? क्या यह नहीं है कि सभी एक्सएमएल दस्तावेजों के साथ शुरू होना चाहिए?

और जब मैं मानक <?xml और नरक को हटा देता हूं, तो मेरा दस्तावेज़ अभी भी मान्य नहीं है: अब यह एन्कोडिंग गुम है। मुझे उन meta टैग पसंद नहीं हैं, लेकिन क्या वे अब वैध (एक्स) HTML5 होने के लिए एन्कोडिंग निर्दिष्ट करने के लिए प्रभावी रूप से अनिवार्य हैं?

उत्तर

8

एक एक्सएमएल घोषणा मान्य है और एचटीएमएल 5 के एक्सएचटीएमएल क्रमबद्धता में मान्य है। निम्नलिखित बल्कि कम से कम दस्तावेज सत्यापन करती है:

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head><title></title></head> 
<body></body> 
</html> 

हालांकि, यह केवल एक्सएचटीएमएल क्रमबद्धता (XHTML संरचना) को एचटीएमएल 5 के लागू होता है। एचटीएमएल क्रमबद्धता में, इसकी अनुमति नहीं है।

Saw <?. Probable cause: Attempt to use an XML processing instruction in HTML. 
(XML processing instructions are not supported in HTML.) 

: यदि आप एक फाइल में ऊपर दस्तावेज़ लिख सकते हैं और एक सर्वर में संग्रहीत हैं कि Content-Type: text/html साथ भेज देंगे (यदि फ़ाइल नाम ".html" के साथ समाप्त होता है जो आम तौर होता है), तो आपको एक त्रुटि संदेश मिलता है यहां "एचटीएमएल" का मतलब केवल HTML क्रमबद्धता है।

ब्राउज़र किसी भी वाक्यविन्यास में एक्सएमएल घोषणा की परवाह नहीं करते हैं। एचटीएमएल सिंटैक्स में, इसे पुनर्प्राप्त करने योग्य वाक्यविन्यास त्रुटि के रूप में, केवल अनदेखा किया जाता है। एक्सएचटीएमएल सिंटैक्स में, इससे कोई फर्क नहीं पड़ता, encoding भाग को छोड़कर।

हालांकि XML 1.0 विनिर्देश की सिफारिश की गई है (लेकिन आवश्यकता नहीं है) एक XML declaration, यह अभ्यास मामले में (encoding के महत्व से अलग) केवल सॉफ्टवेयर है कि एक्सएमएल के विभिन्न संस्करणों के प्रसंस्करण में सक्षम है करने के लिए होगा। ब्राउज़र नहीं हैं। और एक्सएमएल 1.0 के अलावा, केवल एक्सएमएल 1.1 है, जिसका ज्यादा उपयोग नहीं किया जाता है। इसके अलावा, एचटीएमएल 5 को परिभाषित किया गया है ताकि एक्सएचटीएमएल सिंटैक्स में इस्तेमाल किया गया एक्सएमएल संस्करण एक्सएमएल 1.0 है।

encoding भाग कोई फर्क नहीं पड़ता, लेकिन utf-8 एक्सएमएल के लिए वैसे भी डिफ़ॉल्ट है। यदि आप किसी कारण से किसी अन्य एन्कोडिंग का उपयोग करते हैं, तो किसी भी विवाद को रोकने के लिए एक एक्सएमएल घोषणा उपयोगी हो सकती है। एचटीएमएल 5 सीआर इसमें यह कहते हैं कि discussion of encodings: "एक्सएचटीएमएल में, एक्सएमएल घोषणा इनलाइन वर्ण एन्कोडिंग जानकारी के लिए उपयोग की जानी चाहिए, यदि आवश्यक हो।" meta टैग एक्सएमटीएम में वास्तव में मदद नहीं कर सकता है जब एक्सएमएल सामग्री प्रकार के साथ परोसा जाता है, क्योंकि एन्कोडिंग पहले ही हो चुकी है जब टैग देखा जाता है तो निर्णय लिया जाता है (यूटीएफ -8 या अन्यथा डिफ़ॉल्ट रूप से)।

एचटीएमएल वाक्य रचना के लिए, <meta charset=...> टैग इस्तेमाल किया जा सकता है, लेकिन यह वैधता के लिए की जरूरत नहीं है, और एन्कोडिंग HTTP हेडर में निर्दिष्ट किया जा सकता है (जो ओवरराइड किसी भी meta टैग)। meta टैग का उपयोग करना उपयोगी हो सकता है, क्योंकि एक पृष्ठ स्थानीय रूप से सहेजा जा सकता है, और तब खोले जाने पर कोई HTTP शीर्षलेख उपलब्ध नहीं होगा।

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