DTD में #PCDATA
और क्या अंतर है ?#CDATA
#PCDATA
और CDATA
। कोई PCDATA
कीवर्ड और नहीं है #CDATA
।
DTD में #PCDATA
और क्या अंतर है ?#CDATA
#PCDATA
और CDATA
। कोई PCDATA
कीवर्ड और नहीं है #CDATA
।
जवाबों:
PCDATA - पार्स कैरेक्टर डेटा
XML पार्सर सामान्य रूप से XML दस्तावेज़ के सभी पाठ को पार्स करते हैं।
CDATA - (अनपार्स्ड) कैरेक्टर डेटा
CDATA शब्द का उपयोग टेक्स्ट डेटा के बारे में किया जाता है जिसे XML पार्सर द्वारा पार्स नहीं किया जाना चाहिए।
XML तत्वों में "<" और "&" जैसे वर्ण अवैध हैं।
PCDATA
वह पाठ है जिसे पार्सर द्वारा पार्स किया जाएगा। पाठ के अंदर टैग को मार्कअप माना जाएगा और संस्थाओं का विस्तार किया जाएगा।CDATA
वह पाठ है जिसे पार्सर द्वारा पार्स नहीं किया जाएगा । पाठ के अंदर टैग
को मार्कअप नहीं माना जाएगा और संस्थाओं का विस्तार नहीं किया जाएगा।डिफ़ॉल्ट रूप से, सब कुछ है PCDATA
। निम्नलिखित उदाहरण में, रूट को अनदेखा करते हुए, <bar>
पार्स किया जाएगा, और इसमें कोई सामग्री नहीं होगी, लेकिन एक बच्चा होगा।
<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>
जब हम यह निर्दिष्ट करना चाहते हैं कि एक तत्व में केवल पाठ होगा, और कोई बाल तत्व नहीं है, तो हम कीवर्ड का उपयोग करते हैं PCDATA
, क्योंकि यह कीवर्ड निर्दिष्ट करता है कि तत्व में पार्सबल वर्ण डेटा शामिल होना चाहिए - अर्थात, किसी भी पाठ को छोड़कर वर्णों से कम ( <
), अधिक से अधिक ( >
), एम्परसेंड ( &
), उद्धरण ( '
) और डबल उद्धरण ( "
)।
अगले उदाहरण में <bar>
समाहित है CDATA
। इसकी सामग्री को पार्स नहीं किया जाएगा और इस प्रकार है <test>content!</test>
।
<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>
SGML में कई सामग्री मॉडल हैं। #PCDATA
सामग्री मॉडल का कहना है कि एक तत्व सादा पाठ हो सकती है कि। इसके "पार्स" भाग का अर्थ है कि इसमें मार्कअप (पीआई, टिप्पणियां और एसजीएमएल निर्देश सहित) को कच्चे पाठ के रूप में प्रदर्शित करने के बजाय पार्स किया गया है। इसका अर्थ यह भी है कि इकाई संदर्भों को प्रतिस्थापित किया जाता है।
सादे पाठ सामग्री की अनुमति देने वाला एक अन्य प्रकार का सामग्री मॉडल है CDATA
। XML में, तत्व सामग्री मॉडल को स्पष्ट रूप से सेट नहीं किया जा सकता है CDATA
, लेकिन SGML में, इसका मतलब है कि तत्व की सामग्री में मार्कअप और इकाई संदर्भों को अनदेखा किया गया है। CDATA
हालांकि प्रकार की विशेषताओं में , इकाई संदर्भों को प्रतिस्थापित किया जाता है।
XML में, #PCDATA
केवल सादा पाठ सामग्री मॉडल है। आप इसका उपयोग करते हैं यदि आप तत्व में पाठ सामग्री को अनुमति देना चाहते हैं। CDATA
सामग्री मॉडल के माध्यम से स्पष्ट रूप से इस्तेमाल किया जा सकता CDATA
में ब्लॉक मार्कअप #PCDATA
, लेकिन तत्व सामग्री के रूप में परिभाषित नहीं किया जा सकता CDATA
डिफ़ॉल्ट प्रति।
DTD में, एक विशेषता का प्रकार जिसमें पाठ होता है, होना चाहिए CDATA
। CDATA
एक विशेषता घोषणा में कीवर्ड से एक अलग अर्थ है CDATA
एक XML दस्तावेज में खंड। एक में CDATA
खंड सभी वर्णों (सहित कानूनी रहे हैं <
, >
, &
, '
और "
को छोड़कर, अक्षर) ]]>
समाप्ति टैग।
#PCDATA
विशेषता के प्रकार के लिए उपयुक्त नहीं है। इसका उपयोग "पत्ती" पाठ के प्रकार के लिए किया जाता है।
#PCDATA
इस कीवर्ड को उस तत्व से अलग करने के लिए सामग्री मॉडल में एक हैश द्वारा प्रस्तुत किया गया है PCDATA
(जो पूरी तरह से कानूनी होगा)।
#
हैशटैग नहीं है। इस प्रतीक से पहले केवल एक टैग एक हैशटैग है। प्रतीक में खुद के कई नाम हैं , जिनमें "नंबर साइन", "पाउंड साइन" (ज्यादातर कनाडा और यूएस) या सिर्फ "हैश" (इसलिए नाम 'हैशटैग') शामिल हैं।
#PCDATA
ऐतिहासिक कारणों से # सामने है। यह वहाँ है क्योंकि एक DTD में, एक तत्व नाम का एक तत्व भी हो PCDATA
सकता है, जो संभव होना चाहिए, और जो दिखता है <!ELEMENT foo (PCDATA)>
।
PCDATA - पार्स चरित्र वर्ण। यह एक XML दस्तावेज़ में सभी डेटा को पार्स करता है।
उदाहरण:
<family>
<mother>mom</mother>
<father>dad</father>
</family>
यहां, <family>
तत्व में 2 और तत्व हैं: <mother>
और <father>
। इसलिए यह आगे बढ़कर माँ और पिता के पाठ को "मॉम डैड" के रूप में परिवार का पाठ मूल्य देने के लिए तैयार करता है।
सीडीएटीए - अप्रकाशित चरित्र डेटा। यह वह डेटा है जिसे एक xml दस्तावेज़ में आगे पार्स नहीं किया जाना चाहिए।
<family>
<![CDATA[
<mother>mom</mother>
<father>dad</father>
]]>
</family>
यहां, परिवार का पाठ मूल्य होगा <mother>mom</mother><father>dad</father>
।
यहां से ( Google आपका मित्र है ):
एक DTD में, PCDATA और CDATA का उपयोग क्रमशः तत्वों और विशेषताओं की स्वीकार्य सामग्री के बारे में कुछ करने के लिए किया जाता है। किसी तत्व के सामग्री मॉडल में, #PCDATA कहता है कि तत्व में (कोई भी पुराना पाठ हो सकता है) शामिल हैं। (नीचे दिए गए अपवादों के साथ।) एक विशेषता की घोषणा में, सीडीएटीए एक प्रकार की बाधा है जिसे आप विशेषता के स्वीकार्य मूल्यों (अन्य प्रकार, सभी परस्पर अनन्य, आईडी, आईडीआरईएफ, और एनएमटीकेएन शामिल कर सकते हैं) पर डाल सकते हैं। एक विशेषता जिसका स्वीकार्य मूल्य CDATA है (जैसे किसी तत्व में PCDATA) में "कोई भी पुराना पाठ" हो सकता है।
संभावित रूप से भ्रमित करने वाला मुद्दा यह है कि एक और है "सीडीएटीए" है, जिसे चिह्नित वर्गों के रूप में भी जाना जाता है। एक चिह्नित अनुभाग विशेष स्ट्रिंग्स के साथ सीमांकित तत्व (#PCDATA) सामग्री का एक हिस्सा है: इसे बंद करने के लिए। यदि आपको याद है कि PCDATA "पार्स किया गया वर्ण डेटा है," एक CDATA अनुभाग का शाब्दिक अर्थ है "पार्स किए बिना"। पार्सर्स एक चिह्नित अनुभाग की सामग्री को हर बार हिचकोले के बिना बहाव के अनुप्रयोगों तक पहुंचाते हैं, जिससे वे <और & जैसे विशेष पात्रों का सामना करते हैं। यह तब उपयोगी होता है जब आप एक दस्तावेज़ को कोड कर रहे होते हैं जिसमें बहुत सारे विशेष अक्षर होते हैं (जैसे स्क्रिप्ट और कोड टुकड़े); यह डेटा एंट्री पर आसान है, और संबंधित इकाई संदर्भ की तुलना में पढ़ने में आसान है।
तो आप अनुमान लगा सकते हैं कि "किसी भी पुराने पाठ" नियम का अपवाद यह है कि PCDATA इनमें से किसी भी विशेषीकृत वर्ण को शामिल नहीं कर सकता, UNLESS वे एक CDATA चिह्नित खंड के दायरे में आते हैं।
CDATA ( C haracter DATA ): यह एक टिप्पणी के समान है लेकिन यह दस्तावेज़ का हिस्सा है। यानी CDATA एक डेटा है, यह दस्तावेज़ का हिस्सा है लेकिन डेटा XML में पार्स नहीं किया जा सकता है।
ध्यान दें: एक्सएमएल टिप्पणी एक्सएमएल को पार्स करते समय चूक जाती है लेकिन सीडीएटीए जैसा कि दिखाता है।
PCDATA ( P arsed C haracter DATA ): डिफ़ॉल्ट रूप से, सब कुछ PCDATA है। PCDATA एक डेटा है, इसे XML में पार्स किया जा सकता है।