क्या मुझे HTML5 में <! [CDATA […]]> का उपयोग करना चाहिए?


80

मुझे पूरा यकीन है कि <![CDATA[...]]>अनुभागों का उपयोग एक्सएचटीएमएल 5 में किया जा सकता है, लेकिन एचटीएमएल 5 का क्या?

जवाबों:


56

CDATAसंरचना HTML के लिए वास्तव में सब पर नहीं है, यह एक्सएमएल के लिए है।

लोग कभी-कभी HTML के अंदर scriptटैग का उपयोग करते हैं क्योंकि यह उनके लिए कुछ विशेष वर्णों से बचने की आवश्यकता को हटा देता है। यह किसी भी तरह से एक आवश्यकता नहीं है, हालांकि (HTML 4 या 5 के लिए)।

संपादित करें: यह वह जगह है जहाँ हम आप के रूप में एक्सएचटीएमएल भेज रहे हैं या नहीं इस पर कीड़े की कि वास्तव में फफूंदी वर्ष कर सकते हैं खोलने के 2002 से text/htmlया के रूप में application/xhtml+xmlआप कर रहे हैं "माना" की तरह :-)


1
मैं HTML (XHTML नहीं) भेज रहा हूँ और मैं यही चाहता हूँ। जवाब के लिए Thxs :)
डैरिल हेन

CDATAएक preटैग के अंदर उपयोग कर सकते हैं तो मुझे अपने सभी कोण कोष्ठक को ठीक करने की आवश्यकता नहीं है?
जमान

1
निष्प्राण। सीडीएटी एसजीएमएल और एक्सएमएल सबसेट के लिए है। तो यह HTML और XHTML दोनों के लिए है।
जोहान बोले

24

उसी पृष्ठ @pst से लिंक किया गया :

टैग scriptऔर styleटैग के लिए तत्व-विशिष्ट पार्सिंग , एक्सएचटीएमएल-एचटीएमएल संगतता के लिए मार्गदर्शन : "भागने के साथ निम्नलिखित कोड स्क्रिप्ट और शैली तत्व सुनिश्चित कर सकते हैं जो पुराने ब्राउज़र सहित एक्सएचटीएमएल और एचटीएमएल दोनों में काम करेंगे।"

अधिकतम पश्चगामी संगतता:

<script type="text/javascript"><!--//--><![CDATA[//><!--
    ...
//--><!]]></script>

सरल संस्करण, "बहुत पुराने ब्राउज़रों" के साथ असंगत का प्रकार:

<script>//<![CDATA[
   ...
//]]></script>

तो, CDATAHTML5 में इस्तेमाल किया जा सकता है, और यह XHTML- HTML संगतता के लिए मार्गदर्शन में अनुशंसित है । पॉलीग्लॉट एचटीएमएल / एक्सएमएल / एक्सएचटीएमएल पृष्ठों के लिए यह उपयोगी है , जो विकास के दौरान एक्सएमएल के रूप में निर्मित और पार्स किए गए हैं, लेकिन बेहतर क्रॉस-ब्राउज़र संगतता के लिए एचटीएमएल 5 के रूप में सेवा की जाती है। Polyglot पृष्ठों के अपने लाभ हैं , और मैंने इसे स्वयं उपयोग किया है, क्योंकि XML / XHTML5 को डीबग करना बहुत आसान है। उदाहरण के लिए, Google Chrome, अमान्य XML / XHTML5 (उदाहरण के लिए चरित्र से बचने सहित ) के लिए एक त्रुटि फेंक देगा , जबकि HTML5 के रूप में परोसा गया एक ही पृष्ठ "शायद" उर्फ ​​"शायद काम करेगा"।


12
यदि आप 20 साल पुराने कुछ ब्राउज़रों का समर्थन करना चाहते हैं, तो एक स्क्रिप्ट टैग के भीतर टिप्पणियों की आवश्यकता है, वह है NSCA मोज़ेक या नेटस्केप 1 ...
Antti Haapala

15

इस मुद्दे को स्पष्ट करने के लिए युक्ति लगती है। स्क्रिप्ट और शैली टैग को "कच्चे पाठ तत्व" माना जाता है। सीडीएटीए की जरूरत नहीं है या उनके लिए अनुमति नहीं है। CDATA का उपयोग केवल "विदेशी सामग्री" - यानी MathML और SVG के साथ किया जाता है। ध्यान दें कि स्क्रिप्ट टैग में जाने के लिए कुछ प्रतिबंध हैं - मूल रूप से आप var x = '</script>'इसमें कुछ पसंद नहीं कर सकते क्योंकि यह टैग को बंद कर देगा और उसके जवाब में बताए गए pst की तरह विभाजित होने की आवश्यकता है। http://www.w3.org/TR/html5/syntax.html#cdata-rcdata-restrictions


5

शायद देखें: http://wiki.whatwg.org/wiki/HTML_vs._XHTML

<! [CDATA [...]]> एक संगीन टिप्पणी है।

HTML में, <script>पहले से ही सुरक्षित है - यही कारण है कि कभी-कभी इसे लिखा जाना चाहिए a = "<" + "/script>", ताकि ब्राउज़र को भ्रमित न किया जा सके। ध्यान दें कि कोड HTML में CDATA के बाहर मान्य है ।


2
मुझे लगता है कि अंतिम टैग से बचने का सबसे अच्छा तरीका "</ script> है"। मैंने पढ़ा है कि कुछ पार्सर्स केवल "</" के लिए जांचते हैं, "</ script>" के लिए नहीं
marcus

@marcus आप सही हैं और </इस संदर्भ में एकमात्र विशेष टोकन है। इस विषय पर मेरे नए जवाब जैसे कि मैंने अपने ज्ञान को समय के साथ अद्यतन किया है ;-) मैं इसे अद्यतन करूँगा। यह कहा जा रहा है, यह </scr+ ipt>विभाजन के लिए आम है , और मुझे पता नहीं है कि यह कहाँ काम नहीं करता है एक मुख्यधारा ब्राउज़र ...
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.