2009-05-13 13 views
26

ऐसा लगता है कि PCDATA और CDATA का एक ढीला परिभाषा यह है किवास्तव में पीसीडीएटीए और सीडीएटीए क्या है?

  1. PCDATA चरित्र डेटा है, लेकिन पार्स किया जा सकता है।
  2. सीडीएटीए चरित्र डेटा है, और पार्स किए जाने के लिए नहीं है।

लेकिन फिर किसी ने मुझे बताया कि सीडीएटीए वास्तव में पार्स किया गया है या पीसीडीएटीए वास्तव में पार्स नहीं किया गया है ... तो यह एक भ्रम का थोड़ा सा है। क्या कोई असली सौदा जानता है?

अद्यतन: मैंने वास्तव में विकिपीडिया पर पीसीडीएटीए परिभाषा को जोड़ा ... इसलिए उस उत्तर को बहुत गंभीरता से न लें क्योंकि यह केवल मेरी अजीब समझ है।

+0

भ्रम इस तथ्य के कारण हो सकता है कि सीडीएटीए पार्स हो सकता है, लेकिन एक अलग पार्सर द्वारा। उदाहरण के लिए, 'स्क्रिप्ट' तत्व की सामग्री, जो HTML में सीडीएटीए है, को जावास्क्रिप्ट दुभाषिया द्वारा पार्स किया जाता है। –

उत्तर

22

विकी है:

PCDATA

सीधे शब्दों में कहा जाए तो PCDATA पार्स किया गया चरित्र डेटा के लिए खड़ा है। इसका मतलब है कि एक्सएमएल, एक्सएचटीएमएल, या एचटीएमएल पार्सर द्वारा पात्रों को पार्स किया जाना है। (&lt; को < में बदल दिया जाएगा, <p> को पैराग्राफ टैग आदि के लिए लिया जाएगा)। सीडीएटीए के साथ इसकी तुलना करें, जहां एक्सएमएल, एक्सएचटीएमएल, या एचटीएमएल पार्सर द्वारा पात्रों को पार्स नहीं किया जाना चाहिए। मार्कअप भाषाओं SGML और एक्सएमएल में

CDATA

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

0

आपका पहला परिभाषा सही है।

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

9

पीसीडीएटीए और सीडीएटीए दोनों पार्स किए गए हैं। वे चरित्र डेटा दोनों हैं।

दोनों में केवल वैध वर्ण शामिल होना चाहिए। उदाहरण के लिए यदि आपका दस्तावेज़ एन्कोडिंग यूटीएफ -8 है, तो सीडीएटीए अनुभागों की सामग्री अभी भी वैध यूटीएफ -8 वर्णों के अनुरूप होनी चाहिए। तो यादृच्छिक बाइनरी डेटा शायद दस्तावेज़ को अच्छी तरह से गठित होने से रोक देगा। इसके अलावा सीडीएटीए अनुभाग अभी भी पार्स किए गए हैं, अगर केवल अंत अनुभाग टैग ढूंढने के लिए। लेकिन अन्य मार्कअप-जैसे पात्र, जैसे <,> और & को अनदेखा कर दिया गया है और पार्सर द्वारा पास किया गया है।

PCDATA litteral में OTOH < और & (और 'या "विशेषता मान में) भाग निकले किया जाना चाहिए, या वे मार्कअप के रूप में व्याख्या की जाएगी। संस्थाओं को भी विस्तार किया जाएगा।

तो हाँ, सीडीएटीए अनुभाग वास्तव में पार्स किए गए हैं। मुझे यकीन नहीं है कि आपको क्यों बताया गया था कि पीसीडीएटीए को पार्स नहीं किया गया है।

3
  • पीसीडीएटीए एक पाठ है जिसे एक पार्सर द्वारा पार्स किया जाएगा। पाठ के अंदर टैग मार्कअप के रूप में माना जाएगा और इकाइयों का विस्तार किया जाएगा।
  • सीडीएटीए टेक्स्ट है जो को एक पार्सर द्वारा पार्स किया जाएगा। पाठ के अंदर टैग नहीं मार्कअप के रूप में माना जाएगा और इकाइयों का विस्तार नहीं किया जाएगा।

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

<?xml version="1.0"?> 
<foo> 
<bar><test>content!</test></bar> 
</foo> 

हम क्योंकि इस कीवर्ड निर्दिष्ट करता है कि तत्व parsable चरित्र डेटा शामिल होना चाहिए निर्दिष्ट करने के लिए है कि एक तत्व केवल पाठ में शामिल होंगे, और कोई भी बच्चा तत्वों, हम कीवर्ड PCDATA उपयोग करते हैं, चाहते हैं - को छोड़कर किसी भी पाठ है कि है, से कम वर्ण (<), अधिक से अधिक (>), एम्परसैंड (&), बोली (') और दोहरे उद्धरण (")।

अगले उदाहरण में, बार CDATA है, और पार्स नहीं कर रहा है , और सामग्री "सामग्री!" है।

<?xml version="1.0"?> 
<foo> 
<bar><![CDATA[<test>content!</test>]]></bar> 
</foo> 

एसजीएमएल में कई सामग्री मॉडल हैं। # पीसीडीएटीए सामग्री मॉडल का कहना है कि एक तत्व में सादा पाठ हो सकता है। इसका "विश्लेषण" हिस्सा यह है कि इसमें मार्कअप (पीआई, टिप्पणियां और एसजीएमएल निर्देश सहित) कच्चे पाठ के रूप में प्रदर्शित होने के बजाय पार्स किया गया है। इसका मतलब यह भी है कि इकाई संदर्भों को प्रतिस्थापित किया गया है।

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

एक्सएमएल # पीसीडीएटीएए एकमात्र सादा पाठ सामग्री मॉडल है। यदि आप तत्व में टेक्स्ट सामग्री को अनुमति देना चाहते हैं तो आप इसका उपयोग करते हैं। सीडीएटीए सामग्री मॉडल का उपयोग # पीसीडीएटीए में सीडीएटीए ब्लॉक मार्कअप के माध्यम से स्पष्ट रूप से किया जा सकता है, लेकिन तत्व सामग्री प्रति डिफ़ॉल्ट रूप से सीडीएटीए के रूप में परिभाषित नहीं की जा सकती है।

एक डीटीडी में, टेक्स्ट युक्त एक विशेषता का प्रकार सीडीएटीए होना चाहिए। एक विशेषता घोषणा में सीडीएटीए कीवर्ड का एक XML दस्तावेज़ में सीडीएटीए अनुभाग की तुलना में एक अलग अर्थ है। सीडीएटीए अनुभाग में सभी पात्र कानूनी हैं (<,>, &, 'और "अक्षर)"]]> "अंत टैग को छोड़कर।

#PCDATA एक ​​विशेषता के प्रकार के लिए उपयुक्त नहीं है। इसका उपयोग "पत्ती" पाठ के प्रकार के लिए किया जाता है।

# पीसीडीएटीए को ऐतिहासिक कारणों से बस हैशटैग द्वारा प्रीपेड किया गया है।

0

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

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