স্ক্রিপ্ট ট্যাগের মধ্যে কখন সিডিএটিএ বিভাগ প্রয়োজন?


907

হয় CDATA ট্যাগ কি কখনো স্ক্রিপ্ট ট্যাগগুলি এবং যদি তাই হয় যখন প্রয়োজন?

অন্য কথায়, এটি কখন এবং কোথায়:

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

এটি ভাল:

<script type="text/javascript">
...code...
</script>

18
এখন যে এক্সএইচটিএমএল মূলত মারা গেছে, এটি কি এখন আর কোনও প্রাসঙ্গিক উদ্বেগ নয়?
অ্যালিউরকোড

80
@allyourcode: এক্সএইচটিএমএল মারা গেছে কি মনে করে? HTML5 এর? এর সাথে সরাসরি যেতে এক্সএইচটিএমএল 5 আছে :)
ডক্টর জে

4
@ ডক্টর জে আফাইক এক্সএইচটিএমএল সংস্করণ ১ ছিল। এটি এইচটিএমএল সমতুল্য সংস্করণ ছিল 4. এইচটিএমএল 5 একই বৈশিষ্ট্যগুলিকে উন্নত করার পদ্ধতি হিসাবে এক্সফর্ম, এক্সলিংক, সময় এবং এসভিজি নেমস্পেসগুলিকে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে নাম্বার প্রসারিত করা যায়। যোগ করা - এক্সফর্ম / ইনপুট-বৈধকরণ, সময় / অ্যানিমেশন, এসভিজি / ক্যানভাস - তবে এক্সএইচটিএমএল 2 টিপসের জন্য প্রচেষ্টা এইচটিএমএল 5 বৈশিষ্ট্যের দিকে প্রত্যাবর্তন করা হয়েছিল। এর অর্থ এটি নয় যে এক্সএইচটিএমএল 2 ফেলে দেওয়া হয়েছিল বা অপ্রচলিত হয়ে গেছে তবে এটি অদূর ভবিষ্যতে পরিকল্পনা করা হয়নি।
মিহাই স্টানকু

14
জাভা সীম / জেএসএফ / ফেসলেট বিকাশে এক্সএইচটিএমএল মারা যায় নি।
জোজো

15
@ মিহাই স্টানকু - এটি সম্পূর্ণ সঠিক নয়। ডাব্লু 3 সি এর মতে এইচটিএমএল 5 এর জন্য একটি এক্সএমএল সিনট্যাক্স রয়েছে : "এইচটিএমএল 5 এর জন্য ব্যবহার করা যেতে পারে এমন অন্যান্য সিনট্যাক্সটি এক্সএমএল This এই সিনট্যাক্সটি এক্সএইচটিএমএল 1 নথি এবং বাস্তবায়নের সাথে সামঞ্জস্যপূর্ণ synt এই সিনট্যাক্সটি ব্যবহার করে ডকুমেন্টগুলি একটি এক্সএমএল মিডিয়া টাইপের সাথে পরিবেশন করা প্রয়োজন এবং উপাদানগুলির প্রয়োজন এক্সএমএল স্পেসিফিকেশন দ্বারা নির্ধারিত বিধি অনুসরণ করে w3.org/1999/xhtml নেমস্পেসে রাখার জন্য। "
BrainSlugs83

উত্তর:


585

একজন CDATA অধ্যায় প্রয়োজন বোধ করা হয় যদি আপনি এক্সএমএল যেমন বিশ্লেষণ করতে আপনার দস্তাবেজ প্রয়োজন (যেমন একটি এক্সএইচটিএমএল পৃষ্ঠা এক্সএমএল হিসেবে ব্যাখ্যা করা হয় যখন) এবং আপনার আক্ষরিক লিখতে সক্ষম হতে চান i<10এবং a && bপরিবর্তে i&lt;10এবংa &amp;&amp; b , এক্সএইচটিএমএল পার্স চরিত্র তথ্য হিসাবে জাভাস্ক্রিপ্ট কোড বিশ্লেষণ হবে ডিফল্টরূপে অক্ষর ডেটার বিপরীতে। এটি স্ক্রিপ্টগুলির সাথে কোনও সমস্যা নয় যা বাহ্যিক উত্স ফাইলগুলিতে সঞ্চিত আছে তবে এক্সএইচটিএমএলে কোনও ইনলাইন জাভাস্ক্রিপ্টের জন্য আপনি সম্ভবত সিডিএটিএ বিভাগটি ব্যবহার করতে চাইবেন।

মনে রাখবেন যে অনেক এক্সএইচটিএমএল পৃষ্ঠাগুলিকে কখনই এক্সএমএল হিসাবে পার্স করার উদ্দেশ্যে করা হয়নি যা ক্ষেত্রে এটি কোনও সমস্যা হবে না।

বিষয়টিতে ভাল লেখার জন্য https://web.archive.org/web/20140304083226/http://javascript.about.com/library/blxhtml.htm দেখুন


48
এটিতে "বৈধতা" ছাড়াও আরও অনেক কিছুই রয়েছে। বেশিরভাগ কঠোর এক্সএমএল পার্সাররা যদি কোনও অবৈধ চরিত্রটি আঘাত করে তবে তারা পৃষ্ঠাটি পাবে না। ডাব্লু 3 সি খুশি করা এবং লাল পরিবর্তে সবুজ হওয়া সম্পর্কে এটি আরও বেশি।
লরেন সেগাল

40
আপনি যদি এড়ানো &এবং <চরিত্রগুলি করেন, আপনার কোনও সিডিএটিএ বিভাগের দরকার নেই; এটি এইচটিএমএল এবং এক্সএইচটিএমএল উভয় ক্ষেত্রেই কাজ করবে। আপনি সহজেই বাহ্যিক স্ক্রিপ্টগুলিতে সমস্ত উল্লেখযোগ্য কোড রেখে এবং উদাহরণস্বরূপ কেবল ইনলাইন স্ক্রিপ্ট ব্যবহার করে এটি অর্জন করতে পারেন। ভেরিয়েবলগুলি সূচনা করুন ( আপনার যদি প্রয়োজন হয় তবে স্ট্রিং লিটারালগুলিতে এস্কেটিং &/ <টু \x26/ \x3Cইন)।
ববিনস

23
এইচটিএমএল 5 এর ক্ষেত্রে কী হবে?
ম্যাথিউ অ্যাটলি

5
@ ম্যাথিউ অ্যাটলি - এটি একটি ভাল প্রশ্ন। এটির প্রয়োজনীয় মনোযোগ পাওয়ার বিষয়টি নিশ্চিত করতে একটি পৃথক থ্রেড জিজ্ঞাসা করার জন্য দুর্দান্ত প্রশ্ন হয়ে উঠুন।
অ্যালেক্স কীস্মিত

3
@ লরেন: তারপরে এটি বৈধতা সম্পর্কে এখনও সম্পূর্ণ। কোনও ব্যবহারকারী-এজেন্ট যে পরিমাণ অবৈধ এক্সএমএল প্রত্যাখ্যান করে তা অরথোগোনাল।
অরবিট

231

ব্রাউজারগুলি যখন মার্কআপটিকে এক্সএমএল হিসাবে বিবেচনা করে:

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

ব্রাউজারগুলি যখন মার্কআপটিকে এইচটিএমএল হিসাবে বিবেচনা করে:

<script>
    ...code...
</script>

যখন ব্রাউজারগুলি মার্কআপটিকে এইচটিএমএল হিসাবে বিবেচনা করে এবং আপনি আপনার এক্সএইচটিএমএল 1.0 মার্কআপটি (উদাহরণস্বরূপ) যাচাই করতে চান।

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

12
কোড সুরক্ষার বিষয় হিসাবে, আপনার সিডিএটিএক্সগুলি ব্লক মন্তব্যে ঘিরে রাখা ভাল /* ... */কারণ অন্যথায় যদি লাইন বিরতিগুলি সরানো হয় তবে কোডটি ভেঙে যাবে
ব্রায়ানএইচ

প্রথম বিভাগে "... এক্সএমএল" হিসাবে "" ... অ-ব্যাখ্যাবিহীন পাঠ্য হিসাবে "হওয়া উচিত নয়? স্ট্যাকওভারফ্লো / সিকিউশনস / ২78৮৪১৮৩ / কি -ডোস-cdata- in- xML- ম্যান আমরা দেখতে পাই "... এই স্ট্রিংগুলিতে এমন ডেটা রয়েছে যা এক্সএমএল মার্কআপ হিসাবে ব্যাখ্যা করা যেতে পারে, তবে তা হওয়া উচিত নয় should"
ম্যাট উইলকি

@ ম্যাটওয়িলকি, "এক্সএমএল হিসাবে" এর সাথে আমি কী বোঝাতে চাইছি "যখন ব্রাউজারগুলি মার্কআপটি পার্স করতে তাদের এক্সএমএল পার্সার (এইচটিএমএল পার্সারের বিপরীতে) ব্যবহার করে কারণ নথিটি একটি এক্সএমএল-ভিত্তিক মাইম টাইপের সাথে প্রেরণ করা হয়েছিল বা মার্কআপযুক্ত ফাইলটি রয়েছে একটি এক্সএমএল-ভিত্তিক ফাইল এক্সটেনশন "।
শ্যাডো 2531

127

এইচটিএমএল

একটি HTML পার্সার স্ক্রিপ্টের মধ্যে <script>এবং এর </script>অংশ হিসাবে সমস্ত কিছুর সাথে আচরণ করবে । কিছু বাস্তবায়নের জন্য এমনকি একটি সঠিক ক্লোজিং ট্যাগের প্রয়োজন হয় না; তারা স্ক্রিপ্টের ব্যাখ্যা " </" এ থামায় , যা চশমা অনুসারে সঠিক

এইচটিএমএল 5 এবং বর্তমান ব্রাউজারগুলির সাথে আপডেট করুন , এটি আর হয় না।

সুতরাং, এইচটিএমএলে, এটি সম্ভব নয় :

<script>
var x = '</script>';
alert(x)
</script>

একটি CDATAবিভাগের মোটেই কোনও প্রভাব নেই । এজন্য আপনার লেখার দরকার আছে

var x = '<' + '/script>'; // or
var x = '<\/script>';

অথবা সাদৃশ্যপূর্ণ.

এটি হিসাবে পরিবেশন করা এক্সএইচটিএমএল ফাইলগুলিতেও প্রযোজ্য text/html। (যেহেতু আইএমএল এক্সএমএল বিষয়বস্তুর প্রকারকে সমর্থন করে না তাই এটি বেশিরভাগ ক্ষেত্রে সত্য)

এক্সএমএল

এক্সএমএলে, বিভিন্ন বিধি প্রযোজ্য। মনে রাখবেন যে এক্সএইচএমটিএল ডকুমেন্টটি কোনও এক্সএমএল সামগ্রী প্রকারের সাথে পরিবেশন করা হলে (নন) ব্রাউজারগুলি কেবল এক্সএমএল পার্সার ব্যবহার করে।

এক্সএমএল পার্সারের কাছে, কোনও scriptট্যাগ অন্য কোনও ট্যাগের চেয়ে ভাল। বিশেষত, একটি স্ক্রিপ্ট নোডে অ-পাঠ্য শিশু নোড থাকতে পারে, " <" দ্বারা ট্রিগার করা ; এবং " &" চিহ্নটি একটি অক্ষর সত্তাকে বোঝায়।

সুতরাং, এক্সএইচটিএমএলে, এটি সম্ভব নয় :

<script>
if (a<b && c<d) {
    alert('Hooray');
}
</script>

এটির কাজ করার জন্য, আপনি একটি স্ক্রিপ্টে পুরো স্ক্রিপ্টটি মোড়ানো করতে পারেন CDATA। এটি বিশ্লেষককে বলে: 'এই বিভাগে, " <" এবং " &" নিয়ন্ত্রণের অক্ষর হিসাবে বিবেচনা করবেন না ।' জাভাস্ক্রিপ্ট ইঞ্জিনটিকে " <![CDATA[" এবং " ]]>" চিহ্নগুলি ব্যাখ্যা করতে বাধা দিতে , আপনি তাদের মন্তব্যগুলিতে মোড়ানো করতে পারেন।

যদি আপনার স্ক্রিপ্টে কোনও " <" বা " &" না থাকে তবে আপনার আর CDATAকোনও অংশের দরকার নেই ।


2
"একটি সিডিএটিএ বিভাগের কোনও প্রভাব নেই" বিবৃতিটি (প্রস্তাবিত) এইচটিএমএল 5 এর পক্ষে সত্য নয়, যা নির্মাণকে স্বীকৃতি দেয়। w3.org/TR/html5/syntax.html#cdata-sections
ড্যানোরটন

3
পছন্দ করুন আমি মনে করি এটি বেশ কুৎসিত মিশ্রণ। স্ক্রিপ্ট সামগ্রীতে এখনও কোনও প্রভাব নেই।
ব্যবহারকারী 123444555621

2
কোনও </ অভ্যন্তর স্ক্রিপ্ট ট্যাগ খারাপ তা জানেন না ।
সালমান এ

3
@ সালমানা এটি এইচটিএমএল এর বিজোড়তাগুলির মধ্যে একটি এবং আনুষ্ঠানিকভাবে ETAGO নামে পরিচিত । আরও জানুন: mathiasbynens.be/notes/etago (নিবন্ধ রাজ্যের কোনো ব্রাউজার কখনও যে বৈশিষ্ট্য বাস্তবায়িত, আমি নিশ্চিত এটা আমার জন্য কিছু কষ্ট সৃষ্ট আছি হয়তো অন্য কিছু হাতিয়ার।)
user123444555621

1
আসলে আমি বৈধতা সমস্যার মধ্যে দৌড়েছি - <script>var b = "<b>bold</b>";</script>যাচাই করতে ব্যর্থ হয় তবে আপনার উত্তর পড়ে এবং <script>var b = "<b>bold<\/b>";</script>এটি স্থির করে পরিবর্তন করে।
সালমান এ

30

মূলত এটি এমন একটি নথি যা XHTML এবং HTML উভয়ই লিখতে দেয়। সমস্যাটি হ'ল এক্সএইচটিএমএল-এর মধ্যে, এক্সএমএল পার্সার স্ক্রিপ্ট ট্যাগে &, <,> অক্ষর ব্যাখ্যা করবে এবং এক্সএমএল পার্সিং ত্রুটির কারণ করবে। সুতরাং, আপনি সত্তা সহ আপনার জাভাস্ক্রিপ্ট লিখতে পারেন, যেমন:

if (a &gt; b) alert('hello world');

তবে এটি অযৌক্তিক। আরও বড় সমস্যাটি হ'ল আপনি যদি এইচটিএমএল পৃষ্ঠাটি পড়েন তবে ট্যাগ স্ক্রিপ্টটিকে সিডিএটিএ 'ডিফল্টরূপে' বিবেচনা করা হয় এবং এ জাতীয় জাভাস্ক্রিপ্ট চলবে না। অতএব, যদি আপনি একই পৃষ্ঠায় এক্সএইচটিএমএল এবং এইচটিএমএল পার্সার উভয়ই ঠিক রাখতে চান তবে আপনাকে এক্সএইচটিএমএলে সিডিএটিএ এলিমেন্টে স্ক্রিপ্ট ট্যাগটি আবদ্ধ করতে হবে , তবে এটি HTML এ সংযুক্ত করার প্রয়োজন নেই।

এই কৌশলটি জাভা স্ক্রিপ্ট মন্তব্য হিসাবে একটি সিডিএটিএ উপাদান শুরু করার চিহ্ন চিহ্নিত করে; এইচটিএমএলে জাভাস্ক্রিপ্ট পার্সার সিডিএটিএ ট্যাগটিকে উপেক্ষা করে (এটি একটি মন্তব্য)। এক্সএইচটিএমএল, এক্সএমএল পার্সার (যা জাভাস্ক্রিপ্টের আগে চালিত হয়) এটি সনাক্ত করে এবং বাকীগুলি সিডিএটিএর শেষ অবধি সিডিএটিএ হিসাবে বিবেচনা করে।


24

এটি একটি এক্স (এইচটি) এমএল জিনিস। আপনি যখন জাভাস্ক্রিপ্টের মতো <এবং এর >মধ্যে চিহ্নগুলি ব্যবহার করেন, যেমন দুটি পূর্ণসংখ্যার তুলনা করার জন্য, এটি এক্সএমএলের মতো পার্স করতে হবে, সুতরাং এগুলি কোনও ট্যাগের শুরু বা শেষ হিসাবে চিহ্নিত হবে।

সিডিএটিএ এর মানে হল যে নিম্নলিখিত লাইনগুলি (সমস্ত কিছু ]]>এক্সএমএল নয় এবং এইভাবে পার্স করা উচিত নয়)।


18

এইচটিএমএল 4-এ সিডিএটিএ ব্যবহার করবেন না তবে আপনাকে এক্সএইচটিএমএলে সিডিএটিএ ব্যবহার করা উচিত এবং আপনার <এবং> এর মতো অপরিবর্তিত চিহ্ন থাকলে অবশ্যই সিএমএলএটি এক্সএমএলে ব্যবহার করতে হবে।


11
সিডিএটিএইচটিএমএল 4 এ বৈধ নয়। সহজ কথায় বলতে গেলে, এটি ব্যাকরণের অংশ নয়। সিডিএটিএটি এক্সএমএল এর একটি বাক্য গঠন এবং এক্সএইচটিএমএল একটি এক্সএমএল সাবসেট। সুতরাং এটি কেবল এক্সএমএল (এবং এর উপসেট) এর অভ্যন্তরে ব্যবহার করা উচিত। অন্যদিকে এইচটিএমএল এক্সএমএল নয়।
লরেন সেগাল

17

বাহ্যিকভাবে উল্লেখ না করে আপনার জাভাস্ক্রিপ্ট এম্বেড থাকা অবস্থায় এক্সএইচটিএমএল যাচাইকরণ সঠিকভাবে কাজ করে তা নিশ্চিত করে to

এক্সএইচটিএমএলটির দরকার হয় যে আপনার পৃষ্ঠাটি কঠোরভাবে এক্সএমএল মার্কআপের প্রয়োজনীয়তার সাথে সামঞ্জস্য করবে। যেহেতু জাভাস্ক্রিপ্টে বিশেষ অর্থ সহ অক্ষর থাকতে পারে, তাই আপনার বৈধতাটিকে ত্রুটিযুক্ত হিসাবে চিহ্নিত না করে তা নিশ্চিত করতে আপনাকে এটি অবশ্যই সিডিএটিএতে মুড়িয়ে রাখতে হবে।

ওয়েবে এইচটিএমএল পৃষ্ঠাগুলি সহ আপনি কেবলমাত্র প্রয়োজনীয় জাভাস্ক্রিপ্ট এবং ট্যাগের মধ্যে অন্তর্ভুক্ত করতে পারেন। আপনি যখন আপনার ওয়েব পৃষ্ঠায় এইচটিএমএলকে বৈধতা দিন তখন জাভাস্ক্রিপ্ট সামগ্রীটি সিডিএটিএ (চরিত্রের ডেটা) হিসাবে বিবেচিত হবে যা বৈধকারীর দ্বারা উপেক্ষা করা হয়। আপনি যদি নিজের ওয়েব পৃষ্ঠাটি সেট আপ করার ক্ষেত্রে সাম্প্রতিক এক্সএইচটিএমএল মানগুলি অনুসরণ করেন তবে একই কথাটি সত্য নয়। এক্সএইচটিএমএলের সাথে স্ক্রিপ্ট ট্যাগগুলির মধ্যে কোডটিকে পিসিডিটিএ (পার্সড ক্যারেক্টার ডেটা) হিসাবে বিবেচনা করা হয় যা বৈধকরণকারী দ্বারা প্রক্রিয়া করা হয়।

এ কারণে, আপনি কেবল নিজের ওয়েব পৃষ্ঠাকে 'ব্রেকিং' না করে আপনার পৃষ্ঠায় স্ক্রিপ্ট ট্যাগগুলির মধ্যে জাভাস্ক্রিপ্ট অন্তর্ভুক্ত করতে পারবেন না (অন্ততপক্ষে বৈধকরণকারীর সাথে সম্পর্কিত)।

আপনি এখানে সিডিটিএ এবং এক্সএইচটিএমএল সম্পর্কে আরও শিখতে পারেন ।



9

আপনি যখন কঠোর এক্সএইচটিএমএল আনুগত্যের জন্য যাচ্ছেন, আপনার সিডিএটিএর চেয়ে কম প্রয়োজন এবং অ্যাম্পারস্যান্ডগুলি অবৈধ অক্ষর হিসাবে চিহ্নিত করা হবে না।


8

এক্সএইচটিএমএল যাচাইয়ের সময় এক্সএমএল ত্রুটিগুলি এড়াতে।


8

সিডিএটিএ ব্রাউজারকে পাঠ্যটি যেমন আছে তেমন প্রদর্শন করতে এবং এটি এইচটিএমএল হিসাবে রেন্ডার না করতে বলে।


6

সিডিএটিএ নির্দেশ করে যে এর মধ্যে থাকা সামগ্রীগুলি এক্সএমএল নয়।


5

যে কোনও এক্সএমএল উপভাষায় সিডিএটিএ প্রয়োজনীয়, কারণ একটি এক্সএমএল নোডের পাঠ্যটি জাভাস্ক্রিপ্ট হিসাবে মূল্যায়ন করার আগে শিশু উপাদান হিসাবে বিবেচনা করা হয়। এই কারণে হয় JSLint অভিযোগ সম্পর্কে <regexes মধ্যে অক্ষর।

তথ্যসূত্র



2

এইভাবে পুরানো ব্রাউজার জাভাস্ক্রিপ্ট কোডটি বিশ্লেষণ করবে না এবং পৃষ্ঠাটি ভাঙবে না।

পিছনে সামঞ্জস্যতা। ভাল লাগবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.