2011-08-17 17 views

उत्तर

104

एक XML दस्तावेज़ में सभी पाठ पार्सर द्वारा पार्स किया जाएगा।

लेकिन सीडीएटीए अनुभाग के अंदर पाठ को पार्सर द्वारा अनदेखा किया जाएगा।

CDATA - (अन-पार्स) चरित्र डाटा

अवधि CDATA पाठ डेटा कि XML पार्सर पार्स नहीं किया जाना चाहिए के बारे में प्रयोग किया जाता है।

"<" और "&" जैसे वर्ण XML तत्वों में अवैध हैं।

"<" एक त्रुटि उत्पन्न करेगा क्योंकि पार्सर इसे एक नए तत्व की शुरुआत के रूप में व्याख्या करता है।

"&" एक त्रुटि उत्पन्न करेगा क्योंकि पार्सर इसे एक वर्ण इकाई की शुरुआत के रूप में व्याख्या करता है।

कुछ पाठ, जैसे जावास्क्रिप्ट कोड में, "<" या "&" वर्ण शामिल हैं। त्रुटियों से बचने के लिए स्क्रिप्ट कोड को सीडीएटीए के रूप में परिभाषित किया जा सकता है।

सीडीएटीए अनुभाग के अंदर सब कुछ पार्सर द्वारा अनदेखा किया जाता है।

एक CDATA अनुभाग "<![CDATA[" के साथ शुरू होता है और साथ "]]>" कार्यक्रम उत्पादन में CDATA की

उपयोग XHTML दस्तावेजों में

CDATA भाग उत्तरदायी हैं से अलग ढंग से पार्स किया जा सकता समाप्त हो जाती है वेब ब्राउजर अगर वे एचटीएमएल के रूप में दस्तावेज़ प्रस्तुत करते हैं, क्योंकि एचटीएमएल पार्सर्स सीडीएटीए स्टार्ट एंड एंड मार्कर को नहीं पहचानते हैं, और न ही वे जैसे <script> टैग के भीतर एचटीएमएल इकाई संदर्भों को पहचानते हैं।यह वेब ब्राउज़र में प्रतिपादन समस्याओं का कारण बन सकता है और अविश्वसनीय स्रोतों से डेटा प्रदर्शित करने के लिए उपयोग किए जाने पर क्रॉस-साइट स्क्रिप्टिंग भेद्यता का कारण बन सकता है, क्योंकि दो प्रकार के पार्सर इस बात से असहमत होंगे कि सीडीएटीए अनुभाग कहां समाप्त होता है।

A brief SGML tutorial

इसके अलावा, Wikipedia entry on CDATA देखें।

+6

समस्या है या नहीं, मुझे लगता है कि मेरे पास एक बेहतर सवाल है। व्यापक स्ट्रोक में, सीडीएटीए टैग का उपयोग करने के साथ क्या लाभ जुड़े हुए हैं? – ajameswolf

73

CDATA का HTML में कोई अर्थ नहीं है।

CDATA एक एक्सएमएल निर्माण है जो एक टैग की सामग्री सेट करता है जो आम तौर पर # सीसीडीएटीए - पार्स किए गए चरित्र डेटा को #CDATA के रूप में लिया जाता है, यानी गैर-वर्णित चरित्र डेटा होता है। यह एक्सएचटीएमएल में केवल प्रासंगिक और मान्य है।

< और & पार्सिंग से बचने के लिए script टैग में इसका उपयोग किया जाता है। एचटीएमएल में, इसकी आवश्यकता नहीं है, क्योंकि एचटीएमएल में, script पहले से ही #CDATA है।

+9

टूट जाएगा, वाई लोगों को यह जावास्क्रिप्ट के अंदर का उपयोग करता है टैग? इसका कोई अर्थ और क्या है, धन्यवाद – SexyMF

+0

@SexyMF शायद क्योंकि ये लोग एसजीएमएल/एचटीएमएल के बजाय एक्सएचटीएमएल दस्तावेज टाइप करते हैं, और/या वे कम मानकों के अनुरूप ब्राउज़र को सही ढंग से अपने पृष्ठों को लोड करने में मदद करना चाहते हैं। – amn

+0

भले ही यह लगभग 6 साल पुराना है, फिर भी यह मैंने देखा है 'सीडीएटीए' का सबसे अच्छा स्पष्टीकरण है। – freginold

4

सीडीएटीए दस्तावेज़ चरित्र सेट से वर्णों का अनुक्रम है और इसमें चरित्र इकाइयां शामिल हो सकती हैं। इस प्रकार उपयोगकर्ता एजेंट विशेषता मान की व्याख्या करना चाहिए: , पात्रों के साथ चरित्र संस्थाओं की जगह

पर ध्यान न दें लाइन फ़ीड,

प्रत्येक गाड़ी वापसी या एक ही स्थान के साथ टैब बदलें।

15

http://en.wikipedia.org/wiki/CDATA से:

के बाद से यह कम-से संकेत (<) और वेब पेज लिपियों में एम्परसेंड्स (&) का उपयोग करने में सक्षम होना उपयोगी है, और एक हद तक शैलियों के लिए है, बिना उनसे बचने के लिए याद रखना, सीडीएटीए एक्सएचटीएमएल दस्तावेज़ों में इनलाइन और तत्वों के पाठ के चारों ओर मार्करों का उपयोग करना आम है। लेकिन इतना है कि दस्तावेज़ भी एचटीएमएल से पार्स किया जा सकता पारसर्स, जो CDATA मार्करों, CDATA मार्करों आमतौर पर टिप्पणी की-आउट कर रहे हैं पहचान नहीं पा रहे, इस जावास्क्रिप्ट उदाहरण में है:

<script type="text/javascript"> 
//<![CDATA[ 
document.write("<"); 
//]]> 
</script> 
6

CDATA है बहिष्कृत।

तो एक तरह से एचटीएमएल 5.

https://developer.mozilla.org/en-US/docs/Web/API/CDATASection

+2

मैं क्या बदल रहा है के बारे में उलझन में हूँ। 1) कैरेक्टर डेटा अभी भी डीओएम 4 में मौजूद है? https://www.w3.org/TR/dom/#interface-characterdata 2) फिर भी सीडीएटीएएसएक्शन हटाया जा रहा है? https://www.w3.org/TR/dom/#dom-core वैकल्पिक विकल्प क्या होगा? अनिवार्य एन्कोडिंग या सभी '<' और '&' और किसी अन्य टैग में रखा गया है? पुराने दस्तावेजों का समर्थन करने के बारे में कैसे? क्या ब्राउज़र अचानक सीडीएटीए समर्थन छोड़ने जा रहे हैं? तो हम दूसरों द्वारा बनाए गए दस्तावेज़ों को संसाधित नहीं कर सकते जिन पर हमारा कोई नियंत्रण नहीं है? या बस मैन्युअल स्ट्रिंग fiddling का सहारा ले? – user314159

+0

बस विशेष पात्रों से बचें। –

+0

एक्सएमएल के निर्माण के लिए, मैं समझता हूं, बस अक्षर से बचें। हालांकि, मेरी चिंता यह है कि डीओएम से सीडीएटीएएसएक्शन ड्रॉप करने के बाद, सीडीएटीए अनुभागों को संसाधित करने के लिए (उदाहरण के लिए फ़ीड से हम नियंत्रित नहीं कर सकते हैं और उनके प्रारूप को अपडेट करने में धीमा हो सकते हैं)? वे कब गिरेंगे? एफएफ 49 अभी भी मुझे डोम में सीडीएटीएएसएक्शन दिखा रहा है। मुझे यह स्पष्ट नहीं है कि इस मामले में संक्रमणकालीन समय के दौरान ब्राउज़र से अप्रचलित और हटा दिए जाने के बाद कैसे संभालना है। सिर्फ एक पाठ नोड के रूप में देखा जाएगा? एक त्रुटि (खराब टैग)? बस डेटा को खींचने के लिए पाठ में मार्करों को मैन्युअल रूप से ढूंढने की कुरूपता से बचने की कोशिश कर रहा है। – user314159

5

में उसका उपयोग नहीं करते, HTML और XHTML का एक आम सबसेट लिखने के लिए अधिक से अधिक पोर्टेबिलिटी की आशा में।

एचटीएमएल में, <script> जादू </script> प्रकट होने तक सबकुछ से बच निकलता है।

तो तुम लिख सकते हैं:

<script>x = '<br/>'; 

और <br/> एक टैग विचार नहीं किया जाएगा।

यही कारण है कि इस तरह के रूप तार:

x = '</scr' + 'pts>' 

देखें: Why split the <script> tag when writing it with document.write()?

लेकिन एक्सएमएल (और इस प्रकार एक्सएचटीएमएल, जो एक "सबसेट" है

x = '</scripts>' 

की तरह भाग निकले किया जाना चाहिए एक्सएमएल, unlike HTML), उस जादू में नहीं है: <br/> एक टैग के रूप में देखा जाएगा।

<![CDATA[ एक्सएचटीएमएल तरह से कहने के लिए है:

सब एक स्ट्रिंग

// CDATA काम अच्छी तरह से बनाने के लिए जोड़ा जाता है अगले ]]> तक किसी भी टैग पार्स नहीं है, इस बात पर विचार एचटीएमएल में भी।

एचटीएमएल <![CDATA[ में जादू नहीं है, इसलिए यह जावास्क्रिप्ट द्वारा चलाया जाएगा। तो // इसका उपयोग करने के लिए उपयोग किया जाता है।

एक्सएचटीएमएल भी // देखता है, लेकिन एक खाली टिप्पणी रेखा है जो एक समस्या नहीं है के रूप में यह पालन करेंगे:

// 

कि ने कहा: यदि दस्तावेज है

  • अनुरूप ब्राउज़र की पहचान करनी चाहिए शुरुआती डॉक्टरेट <!DOCTYPE html> बनाम एक्सएचटीएमएल का एचटीएमएल <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  • अनुपालन वेबसाइट अनुरूप ब्राउज़र पर भरोसा कर सकती है, और एक वैधके साथ डॉक्ट टाइप को समन्वयित कर सकती हैवाक्य रचना

लेकिन है कि इंटरनेट के स्वर्ण नियम का उल्लंघन करती:

तीसरे पक्ष भरोसा नहीं करते, या अपने उत्पाद

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