सीडीएटीए

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

XML में CDATA सेक्शन
एक एक्सएमएल दस्तावेज़ या बाहरी इकाई में, एक सीडीएटीए अनुभाग तत्व सामग्री का एक टुकड़ा है जिसे पाठ्य डेटा के रूप में शाब्दिक रूप से व्याख्या करने के लिए चिह्नित किया गया है, चिह्नित सामग्री के रूप में नहीं। एक सीडीएटीए अनुभाग चरित्र डेटा व्यक्त करने के लिए केवल एक वैकल्पिक वाक्यविन्यास है; सीडीएटीए अनुभाग में चरित्र डेटा और मानक सिंटैक्स में चरित्र डेटा के बीच कोई अर्थपूर्ण अंतर नहीं है, उदाहरण के लिए, और द्वारा प्रतिनिधित्व किया जाता है और, क्रमश।

वाक्यविन्यास और व्याख्या
एक सीडीएटीए अनुभाग निम्नलिखित क्रम से शुरू होता है:

और अनुक्रम की अगली घटना के साथ समाप्त होता है:

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

के बराबर है:

इस प्रकार, टैग्स की ठीक वही स्थिति होगी जो जॉन स्मिथ की है; उन्हें पाठ के रूप में माना जाएगा।

इसी प्रकार, यदि संख्यात्मक वर्ण संदर्भ  तत्व सामग्री में दिखाई देता है, इसे एकल यूनिकोड वर्ण 00F0 (छोटा अक्षर eth) के रूप में समझा जाएगा। लेकिन अगर वही सीडीएटीए सेक्शन में दिखाई देता है, तो इसे छह वर्णों के रूप में पार्स किया जाएगा: एम्परसेंड, हैश मार्क, अंक 2, अंक 4, अंक 0, अर्धविराम।

सीडीएटीए अनुभागों का उपयोग
एक्सएमएल दस्तावेजों के नए लेखक अक्सर सीडीएटीए अनुभाग के उद्देश्य को गलत समझते हैं, गलती से मानते हैं कि इसका उद्देश्य प्रसंस्करण के दौरान डेटा को सामान्य चरित्र डेटा के रूप में व्यवहार करने से बचाना है। एक्सएमएल दस्तावेज़ों के साथ काम करने के लिए कुछ एपीआई सीडीएटीए अनुभागों तक स्वतंत्र पहुंच के विकल्प प्रदान करते हैं, लेकिन ऐसे विकल्प एक्सएमएल प्रोसेसिंग सिस्टम की सामान्य आवश्यकताओं के ऊपर और परे मौजूद हैं, और अभी भी डेटा के अंतर्निहित अर्थ को नहीं बदलते हैं। चरित्र डेटा चरित्र डेटा है, चाहे वह सीडीएटीए अनुभाग या सामान्य मार्कअप के माध्यम से व्यक्त किया गया हो। सीडीएटीए अनुभाग एक्सएमएल दस्तावेज़ के भीतर टेक्स्ट डेटा के रूप में एक्सएमएल कोड लिखने के लिए उपयोगी होते हैं। उदाहरण के लिए, यदि कोई एक्स्टेंसिबल स्टाइलशीट लैंग्वेज के साथ एक पुस्तक टाइप करना चाहता है जो एक्सएमएल एप्लिकेशन के उपयोग की व्याख्या करता है, तो एक्सएमएल मार्कअप पुस्तक में दिखाई देने के लिए सीडीएटीए अनुभाग में स्रोत फ़ाइल में लिखा जाएगा।

घोंसला बनाना
सीडीएटीए अनुभाग में स्ट्रिंग नहीं हो सकती है और इसलिए सीडीएटीए अनुभाग के लिए नेस्टेड सीडीएटीए अनुभाग शामिल करना संभव नहीं है। ट्रायड वाले टेक्स्ट को एनकोड करने के लिए CDATA सेक्शन का उपयोग करने का पसंदीदा तरीका त्रय की प्रत्येक घटना को ठीक पहले विभाजित करके कई सीडीएटीए अनुभागों का उपयोग करना है. उदाहरण के लिए, सांकेतिक शब्दों में बदलना कोई लिखेगा:

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

एन्कोडिंग के साथ मुद्दे
टेक्स्ट डेटा में, घोषित एन्कोडिंग में कोई यूनिकोड वर्ण उपलब्ध नहीं है  शीर्षलेख को a का उपयोग करके प्रदर्शित किया जा सकता है   संख्यात्मक चरित्र संदर्भ। लेकिन सीडीएटीए अनुभाग के भीतर का पाठ सख्ती से एन्कोडिंग में उपलब्ध वर्णों तक ही सीमित है।

इस वजह से, डेटा को कोट करने के लिए प्रोग्रामेटिक रूप से सीडीएटीए सेक्शन का उपयोग करना जिसमें संभावित रूप से 'हो सकता है' ' या ' ' वर्ण समस्याएँ पैदा कर सकते हैं जब डेटा में ऐसे वर्ण होते हैं जिन्हें एन्कोडिंग में प्रदर्शित नहीं किया जा सकता है। एनकोडर के कार्यान्वयन के आधार पर, ये वर्ण खो सकते हैं, के वर्णों में परिवर्तित हो सकते हैं  चरित्र संदर्भ, या एन्कोडिंग विफल होने का कारण बन सकता है। लेकिन उनका रखरखाव नहीं किया जाएगा।

एक और मुद्दा यह है कि परिवहन के दौरान एक XML दस्तावेज़ को एक एन्कोडिंग से दूसरे में ट्रांसकोड किया जा सकता है। जब XML दस्तावेज़ को अधिक सीमित वर्ण सेट में परिवर्तित किया जाता है, जैसे कि ASCII, ऐसे वर्ण जिन्हें अब प्रदर्शित नहीं किया जा सकता है, उन्हें रूपांतरित किया जाता है  दोषरहित रूपांतरण के लिए चरित्र संदर्भ। लेकिन एक सीडीएटीए अनुभाग के भीतर, इन वर्णों का बिल्कुल भी प्रतिनिधित्व नहीं किया जा सकता है, और सीडीएटीए अनुभाग की सामग्री को बदलते हुए, उन्हें हटा दिया जाना चाहिए या कुछ समकक्ष में परिवर्तित किया जाना चाहिए।

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

चूंकि यह कम-से-कम संकेतों का उपयोग करने में सक्षम होने के लिए उपयोगी है और एम्परसेंड  वेब पेज स्क्रिप्ट में, और कुछ हद तक शैलियों में, उनसे बचने के लिए याद किए बिना, इनलाइन के टेक्स्ट के चारों ओर सीडीएटीए मार्कर का उपयोग करना आम है   और   एक्सएचटीएमएल दस्तावेजों में तत्व। लेकिन ताकि दस्तावेज़ को HTML पार्सर्स द्वारा भी पार्स किया जा सके, जो सीडीएटीए मार्करों को नहीं पहचानते हैं, सीडीएटीए मार्करों को आमतौर पर टिप्पणी-आउट किया जाता है, जैसा कि इस जावास्क्रिप्ट उदाहरण में है:

<वाक्यविन्यास लैंग = html4सख्त>  //<![सीडीएटीए[ दस्तावेज़.लेखन (<); //>  

या यह व्यापक शैली पत्रक उदाहरण:

<वाक्यविन्यास लैंग = html4सख्त> <शैली का प्रकार = पाठ/सीएसएस> /*<![CDATA[*/ शरीर { background-image: url("marble.png?चौड़ाई=300&ऊंचाई=300) } /*>*/  

यह तकनीक केवल इनलाइन स्क्रिप्ट और स्टाइलशीट का उपयोग करते समय आवश्यक है और भाषा-विशिष्ट है। सीएसएस स्टाइलशीट, उदाहरण के लिए, केवल टिप्पणी-आउट की दूसरी शैली का समर्थन करती है, लेकिन CSS की भी कम आवश्यकता है  और   जावास्क्रिप्ट की तुलना में वर्ण और इसलिए स्पष्ट सीडीएटीए मार्करों की कम आवश्यकता है।

सीडीएटीए-प्रकार विशेषता मान
एसजीएमएल और एक्सएमएल के लिए दस्तावेज़ प्रकार परिभाषा (डीटीडी) फाइलों में, एक विशेषता मान को सीडीएटीए प्रकार के रूप में निर्दिष्ट किया जा सकता है: मनमाना चरित्र डेटा। सीडीएटीए-प्रकार विशेषता के भीतर, चरित्र और इकाई संदर्भ मार्कअप की अनुमति है और दस्तावेज़ पढ़ने पर संसाधित किया जाएगा।

उदाहरण के लिए, यदि किसी XML DTD में

इसका अर्थ है कि फू नाम के तत्वों में वैकल्पिक रूप से a नाम की एक विशेषता हो सकती है जो कि CDATA प्रकार की है। इस DTD के अनुसार मान्य XML दस्तावेज़ में, ऐसा तत्व दिखाई दे सकता है:

और एक एक्सएमएल पार्सर एट्रिब्यूट के मान को कैरेक्टर डेटा के रूप में व्याख्या करेगा 1 और 2 <3 हैं।

सीडीएटीए-प्रकार इकाई
एक SGML या XML DTD में इकाई घोषणाएँ भी शामिल हो सकती हैं जिसमें टोकन CDATA का उपयोग यह इंगित करने के लिए किया जाता है कि इकाई में वर्ण डेटा शामिल है। चरित्र डेटा घोषणा के भीतर ही प्रकट हो सकता है या एक यूनिफॉर्म रिसोर्स पहचानकर्ता द्वारा संदर्भित बाहरी रूप से उपलब्ध हो सकता है। किसी भी मामले में, इकाई में चरित्र संदर्भ और पैरामीटर इकाई संदर्भ मार्कअप की अनुमति है, और जब इसे पढ़ा जाता है तो इसे संसाधित किया जाएगा।

यह भी देखें

 * पीसीडीएटीए

बाहरी संबंध

 * CDATA Confusion
 * Character Data and Markup (in XML)