এক্সএমএল ডকুমেন্টগুলিতে আমার কী চরিত্রগুলি পালাতে হবে?


924

এক্সএমএল ডকুমেন্টগুলিতে কোন অক্ষরগুলি অবশ্যই পালাতে হবে, বা আমি কোথায় এই জাতীয় একটি তালিকা পেতে পারি?


7
উদাহরণ:<company>AT&amp;T</company>
জ্যাকট্রেডস

দেখুন সরলীকৃত এক্সএমএল পলায়নের একটি সংক্ষিপ্ত এবং সহজে মনে নির্দেশিকা জন্য নীচের যে আমি প্রাথমিক উৎস থেকে চুয়ান করেছি ( W3C এর এক্সটেনসেবল মার্কআপ ল্যাঙ্গুয়েজ (এক্সএমএল) 1.0 (পঞ্চম সংস্করণ) )।
kjhughes

উত্তর:


1355

আপনি যদি কোনও উপযুক্ত শ্রেণি বা গ্রন্থাগার ব্যবহার করেন তবে তারা আপনার জন্য পালিয়ে যাবে। অনেক এক্সএমএল ইস্যু স্ট্রিং কনকেন্টেশন দ্বারা সৃষ্ট হয়।

এক্সএমএল পালানোর অক্ষর

এখানে কেবল পাঁচটি রয়েছে:

"   &quot;
'   &apos;
<   &lt;
>   &gt;
&   &amp;

স্ক্র্যাপিং অক্ষর নির্ভর করে যেখানে বিশেষ চরিত্রটি ব্যবহৃত হয়।

উদাহরণগুলি ডাব্লু 3 সি মার্কআপ বৈধকরণ পরিষেবাতে যাচাই করা যেতে পারে ।

পাঠ

নিরাপদ উপায় হ'ল পাঠ্য পাঁচটি অক্ষর এড়ানো। তবে, তিনটি অক্ষর ", 'এবং >পাঠ্যে পালাতে হবে না:

<?xml version="1.0"?>
<valid>"'></valid>

আরোপ করা

নিরাপদ উপায়টি বৈশিষ্ট্যে পাঁচটি অক্ষর থেকে বাঁচা। যাইহোক, >চরিত্রটি বৈশিষ্ট্যে পালাতে হবে না:

<?xml version="1.0"?>
<valid attribute=">"/>

'চরিত্র গুণের পলান প্রয়োজন হবে না উদ্ধৃতি চিহ্ন আছে যদি ":

<?xml version="1.0"?>
<valid attribute="'"/>

অনুরূপভাবে, "উদ্ধৃতিগুলি থাকলে গুণাবলী থেকে রক্ষা পাওয়ার প্রয়োজন নেই ':

<?xml version="1.0"?>
<valid attribute='"'/>

মন্তব্য

পাঁচটি বিশেষ চরিত্র মন্তব্যগুলিতে পালাতে হবে না :

<?xml version="1.0"?>
<valid>
<!-- "'<>& -->
</valid>

CDATA

সমস্ত পাঁচটি বিশেষ অক্ষর না মধ্যে পলান করা CDATA বিভাগগুলি:

<?xml version="1.0"?>
<valid>
<![CDATA["'<>&]]>
</valid>

প্রসেসিং নির্দেশাবলী

সমস্ত পাঁচটি বিশেষ অক্ষর অবশ্যই এক্সএমএল প্রসেসিংয়ের নির্দেশে পালাতে হবে না :

<?xml version="1.0"?>
<?process <"'&> ?>
<valid/>

এক্সএমএল বনাম এইচটিএমএল

এইচটিএমএল এর পালানোর কোডগুলির নিজস্ব সেট রয়েছে যা আরও অনেকগুলি অক্ষরকে কভার করে।


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

5
লাইন ব্রেকগুলির জন্য আপনার ব্যবহার করতে হবে & # xA; & # xD; এবং & # x9; ট্যাবের জন্য, যদি আপনার কোনও বৈশিষ্ট্যে এই অক্ষরগুলির প্রয়োজন হয়।
Radistao

78
আপনি যদি এগুলির জন্য একটি অনুসন্ধান / প্রতিস্থাপন করতে চলেছেন তবে কেবল & amp; অন্যদের আগে প্রতিস্থাপন।
ডগ

2
@ ডাউগ আমি ঠিক একই জিনিসটির কথা উল্লেখ করতে চলেছিলাম - অন্যথায় সমস্ত প্রতিস্থাপিত চরিত্রগুলি দুর্নীতিগ্রস্থ হয়ে যাবে, এবং এর মতো জিনিসগুলিতে &quot;পরিবর্তিত হবে&amp;quot;
জেরি ডজ

5
উইকিপিডিয়া থেকে: "সমস্ত অনুমোদিত ইউনিকোড অক্ষর একটি সংখ্যার অক্ষর রেফারেন্স সহ উপস্থাপন করা যেতে পারে।" সুতরাং 5 এর চেয়েও অনেক বেশি রয়েছে
টিম কুপার

93

সম্ভবত এটি সাহায্য করবে:

এক্সএমএল এবং এইচটিএমএল অক্ষর সত্তা রেফারেন্সের তালিকা :

এসজিএমএল, এইচটিএমএল এবং এক্সএমএল নথিগুলিতে, চরিত্রের ডেটা এবং অ্যাট্রিবিউট মান হিসাবে পরিচিত যৌক্তিক কাঠামোতে অক্ষরের অনুক্রম থাকে, যেখানে প্রতিটি অক্ষর প্রত্যক্ষভাবে প্রকাশ করতে পারে (নিজের প্রতিনিধিত্ব করে), বা চরিত্রের একটি ধারা দ্বারা প্রতিনিধিত্ব করা যায় যা অক্ষর রেফারেন্স বলে, এর মধ্যে দুটি প্রকার রয়েছে: একটি সাংখ্যিক চরিত্রের রেফারেন্স এবং একটি অক্ষর সত্তার রেফারেন্স। এই নিবন্ধটি এইচটিএমএল এবং এক্সএমএল নথিগুলিতে বৈধ যে অক্ষর সত্তা রেফারেন্সগুলি তালিকাভুক্ত করে।

এই নিবন্ধটি নিম্নলিখিত পাঁচটি পূর্বনির্ধারিত এক্সএমএল সত্ত্বাকে তালিকাবদ্ধ করে:

quot  "
amp   &
apos  '
lt    <
gt    >

73

ওয়ার্ল্ড ওয়াইড ওয়েব কনসোর্টিয়াম (ডাব্লু 3 সি) এর স্পেসিফিকেশন অনুসারে, 5 টি অক্ষর রয়েছে যা একটি এক্সএমএল ডকুমেন্টে তাদের আক্ষরিক আকারে উপস্থিত না হওয়া উচিত , যখন মার্কআপ ডিলিমিটার হিসাবে ব্যবহার করা হয় বা কোনও মন্তব্যের মধ্যে, প্রসেসিংয়ের নির্দেশিকা বা সিডিএটিএ বিভাগে না হয় । অন্যান্য সমস্ত ক্ষেত্রে এই অক্ষরগুলি অবশ্যই নিম্নলিখিত সারণি অনুসারে সংশ্লিষ্ট সত্তা বা সংখ্যার রেফারেন্স ব্যবহার করে প্রতিস্থাপন করতে হবে:

Original CharacterXML entity replacementXML numeric replacement
<                              &lt;                                    &#60;                                    
>                              &gt;                                   &#62;                                    
"                               &quot;                               &#34;                                    
&                              &amp;                               &#38;                                    
'                               &apos;                               &#39;                                    

লক্ষ্য করুন যে পূর্বোক্ত সত্তাগুলি & apos ব্যতীত HTML এও ব্যবহার করা যেতে পারে ; , এটি এক্সএইচটিএমএল 1.0 এর সাথে প্রবর্তিত হয়েছিল এবং এটি এইচটিএমএল 4-তে ঘোষিত নয় this এই কারণে, এবং বিপরীতমুখী সামঞ্জস্যতা নিশ্চিত করতে, এক্সএইচটিএমএল স্পেসিফিকেশন & # 39; পরিবর্তে.


14
এক্সএমএল এই পাঁচটি সত্ত্বাকে পূর্বনির্ধারিত করেছে, তবে এটি পুরোপুরি নির্দিষ্ট করে না যে আপনি এই পাঁচটি অক্ষরের কোনওটিকে তাদের আক্ষরিক আকারে ব্যবহার করতে পারবেন না। <এবং & সর্বত্র পালাতে হবে (সিডিএটিএ বাদে)। "এবং 'শুধুমাত্র অ্যাট্রিবিউট মান পলান করা শুধুমাত্র যদি সংশ্লিষ্ট উদ্ধৃতি চরিত্র একই> কখনোই আসলে পলান করা হয়েছে আছে, এবং
শন McCance

3
উপরে লিখিত হিসাবে, <> "& 'চিহ্নিত করতে হবে না যখন মার্কআপ ডিলিমিটার হিসাবে ব্যবহার করা হয় বা কোনও মন্তব্য, প্রসেসিংয়ের নির্দেশনা বা সিডিএটিএ বিভাগের মধ্যে ie । মন্তব্যের জন্য একই জিনিস (আপনি কি এক্সএমএল ফাইলের একটি মন্তব্য করা লাইনে একটি & এড়িয়ে যেতে পারবেন? আপনার প্রয়োজন হবে না, এবং আপনার এক্সএমএল এখনও অবৈধ রয়েছে যদি আপনি না করেন) এটি অফিসিয়াল সুপারিশগুলিতে স্পষ্টভাবে নির্দিষ্ট করা হয়েছে W3C এর দ্বারা এক্সএমএল
Albz

7
@ শনম্যাকস্যান্সটি >যদি ]]বিষয়বস্তুর মধ্যে অনুসরণ করে তবে অবশ্যই তা পালাতে হবে , যদি না এটি সিডিটিএ ]]>বিভাগের সমাপ্তি নির্দেশ করে এমন ডিলিমিটারের অংশ হওয়ার ইচ্ছা করে ।
লি ডি

2
কোন ক্রোমেন্সার হওয়ার কথা নয়, তবে @ অ্যালব্জ এই কথাটি ভুল যে এই অক্ষরগুলি অবশ্যই সামগ্রীতে অধিকার পেতে হবে। W3.org/TR/REC-xML/#NT-CharData এ 2.4 বিভাগ দেখুন । এর টিএল; ডিআর সংস্করণটি হ'ল চরদাতা উপাদান সামগ্রীতে, & amp; এবং & lt; সর্বদা অধিকারী হতে হবে। & জিটি; অক্ষরটি মর্যাদাপূর্ণ হতে পারে, যদিও এটি আক্ষরিক স্ট্রিং "]]> তে উপস্থিত হওয়ার আগেই আবশ্যক কারণ অন্যথায় এটি সিডিএটি বিভাগের সমাপ্তি হিসাবে পড়বে। একক-উদ্ধৃতি এবং ডাবল-কোটের জন্য, আপনি চাইলে পালাতে পারেন। এটাই, অভ্যন্তরের উপাদানগুলির জন্য চরদাতা। এক্সএমএলের অন্যান্য উপাদানগুলির অন্যান্য বিধি রয়েছে।
স্কাই --- অধিনায়ক

52

ট্যাগ এবং বৈশিষ্ট্যের জন্য অক্ষরগুলি থেকে বেরিয়ে আসা আলাদা।

ট্যাগের জন্য:

 < &lt;
 > &gt; (only for compatibility, read below)
 & &amp;

বৈশিষ্ট্যের জন্য:

" &quot;
' &apos;

থেকে ক্যারেক্টার ডেটা এবং মার্কআপ :

অ্যাম্পারস্যান্ড চরিত্র (&) এবং বাম কোণ ব্র্যাকেট (<) অবশ্যই তাদের আক্ষরিক আকারে উপস্থিত না হওয়া ছাড়া, মার্কআপ ডেলিমিটার হিসাবে ব্যবহার করা ছাড়া, বা কোনও মন্তব্যে, প্রসেসিং নির্দেশিকা বা সিডিএটিএ বিভাগে থাকা উচিত। যদি এগুলি অন্য কোথাও প্রয়োজন হয় তবে অবশ্যই তাদের অবশ্যই সংখ্যার চরিত্রের রেফারেন্স বা যথাক্রমে "& amp;" এবং "& lt;" স্ট্রিংগুলি ব্যবহার করে পালাতে হবে। ডান কোণ ব্র্যাকেট (>) "& gt;" স্ট্রিং ব্যবহার করে উপস্থাপিত হতে পারে এবং সামঞ্জস্যের জন্য অবশ্যই "& gt;" বা কোনও অক্ষরের রেফারেন্স যখন বিষয়বস্তুতে "]]>" স্ট্রিং এ প্রদর্শিত হবে তখন তা ব্যবহার করে পালাতে হবে, যখন স্ট্রিংটি কোনও সিডিএটিএ বিভাগের শেষটিকে চিহ্নিত করছে না।

বৈশিষ্ট্যটির মানগুলিকে একক এবং দ্বিগুণ উদ্ধৃতি উভয়ই থাকতে দেয়, অ্যাস্টোস্ট্রোফ বা একক-উদ্ধৃতি অক্ষর (') "& apos" "এবং ডাবল-উদ্ধৃতি চরিত্র (") হিসাবে "& quot; হিসাবে উপস্থাপিত হতে পারে; "।


এর দ্বারা বোঝা যায় যে গুণাবলীর জন্য কেবল উদ্ধৃতিগুলি
এড়ানো

40

একটি পুরানো, সাধারণত জিজ্ঞাসিত প্রশ্নের নতুন, সরলিকৃত উত্তর ...

সরলীকৃত এক্সএমএল এসকেপিং (অগ্রাধিকারপ্রাপ্ত, 100% সম্পূর্ণ)

  1. সর্বদা (90% মনে রাখা গুরুত্বপূর্ণ)

    • Escape <যেমন &lt;যদি না <একটি শুরু হয় <tag/>
    • Escape &যেমন &amp;যদি না &একটি শুরু হয় &entity;
  2. গুণ মান (9% মনে রাখা গুরুত্বপূর্ণ)

    • attr=" 'একক উদ্ধৃতি ডাবল উদ্ধৃতি 'মধ্যে ঠিক আছে।"
    • attr=' ""একক উদ্ধৃতিতে ডাবল উদ্ধৃতি ঠিক আছে।'
    • Escape "যেমন &quot;এবং 'হিসাবে &apos;অন্যথায়।
  3. মন্তব্যসমূহ , সিডিএটিএ এবং প্রক্রিয়াকরণের নির্দেশাবলী (মনে রাখার জন্য 0.9% গুরুত্বপূর্ণ)

    • <!--মন্তব্যের মধ্যে -->কিছুই এড়াতে হবে না তবে --স্ট্রিংয়ের অনুমতি নেই।
    • <![CDATA[সিডিএটিএ-র মধ্যে ]]>কোনও কিছুই এড়ানোর দরকার নেই, তবে কোনও ]]>স্ট্রিং অনুমোদিত নয়।
    • <?PITargetপিআই-র মধ্যে ?>কোনও কিছুই এড়ানোর দরকার নেই, তবে কোনও ?>স্ট্রিং অনুমোদিত নয়।
  4. এসোটেরিকা (মনে রাখার জন্য 0.1% গুরুত্বপূর্ণ)

    • Escape ]]>যেমন ]]&gt;যদি না ]]>একটি CDATA অধ্যায় শেষ হয়।
      (এই বিধিটি সাধারণভাবে অক্ষরের ডেটাতে প্রযোজ্য - এমনকি কোনও সিডিএটিএ বিভাগের বাইরেও))

লক্ষ করার মতো অন্য একটি নিয়ম: সিডিটিএ বিভাগে না থাকলেও ]]>অবশ্যই পালাতে হবে ]]&gt;। এটি অর্জনের সবচেয়ে সহজ উপায় হতে পারে সর্বদা> হিসাবে পালানো &gt;
মাইকেল কে

ধন্যবাদ, @ মিশেলকে। আমি আপনার সহায়ক নোটটি সম্পর্কে অন্তর্ভুক্ত করেছি ]]> তবে এটি > সর্বদা পালিয়ে যাওয়ার পরামর্শ দেওয়ার পরিবর্তে এটি এস্ট্রোরিয়ায় ছেড়ে দেওয়া বেছে নিয়েছে (যা আপনার জানা হিসাবে এটি হওয়ার দরকার নেই)। এক্সএমএল পালানোর নিয়মগুলি সহজেই মনে রাখা এবং 100% নির্ভুল করার জন্য আমার এখানে লক্ষ্য ।
kjhughes

গ্রহণযোগ্য একটি সহ উপরের উত্তরগুলিতে সমস্ত পাঁচটি অক্ষর উল্লেখ সহকারে এড়ানো উচিত। আপনার উত্তরটি যৌক্তিকভাবে সঠিক বলে মনে হচ্ছে আপনি যা বলছেন তার পিছনে XML স্ট্যান্ডার্ডের কোনও রেফারেন্স রয়েছে?
রোমান সুসি

1
@ রোমানসুসি: হ্যাঁ, অন্যান্য অনেক উত্তরে ত্রুটি বা অতিমাত্রায়িতকরণ ("নিরাপদ উপায় ...") রয়েছে শ্রেনী, ভুল ব্যাখ্যা এবং সরকারী এক্সএমএল বিএনএফ-এর ভুল বোঝাবুঝির ভিত্তিতে। আমার উত্তর (ক) ডাব্লু 3 সি এক্সএমএল সুপারিশ দ্বারা 100% ন্যায্য; সরকারী বিএনএফ-এর অনেকগুলি সংযুক্ত রেফারেন্স দেখুন এবং (খ) সংক্ষিপ্ত, যৌক্তিক এবং সহজেই এই প্রয়োজনীয়তার অগ্রগতির স্মরণে রাখা হয়েছে।
kjhughes

@ রোমানসুসি: "সমস্ত পাঁচটি চরিত্রের বৈশিষ্ট্যগুলির মধ্যেই পালাতে হবে" সুনির্দিষ্ট বিবৃতিটি সরকারী বিএনএফ নিয়মের ২ টি অ্যাট্রিবিউট ভ্যালুতেAttValue একটি লিঙ্কের মাধ্যমে উদ্ধৃত করার জন্য সরকারী দিকনির্দেশনা অসমর্থিত ।
kjhughes

25

সাধারণভাবে পরিচিত পাঁচটি অক্ষর [<,>, &, ", এবং '] ছাড়াও আমি উল্লম্ব ট্যাব অক্ষর (0x0B) এড়িয়ে যেতে পারি It এটি বৈধ ইউটিএফ -8, তবে বৈধ এক্সএমএল 1.0 নয়, এমনকি অনেকগুলি লাইব্রেরিও (অত্যন্ত পোর্টেবল (এএনএসআই সি) লাইব্রেরি libxML2 সহ ) এটি মিস করে এবং নিঃশব্দে অবৈধ এক্সএমএল আউটপুট দেয়।


11

সংক্ষিপ্ত থেকে: এক্সএমএল, পালানো

পাঁচটি পূর্বনির্ধারিত সত্ত্বা রয়েছে:

&lt; represents "<"
&gt; represents ">"
&amp; represents "&"
&apos; represents '
&quot; represents "

"সমস্ত অনুমোদিত ইউনিকোড অক্ষর একটি সংখ্যার অক্ষর রেফারেন্স সহ উপস্থাপন করা যেতে পারে।" উদাহরণ স্বরূপ:

&#20013;

বেশিরভাগ নিয়ন্ত্রণের অক্ষর এবং অন্যান্য ইউনিকোড রেঞ্জগুলি বিশেষত বাদ দেওয়া হয়, যার অর্থ (আমি মনে করি) তারা পালাতে বা সরাসরি ঘটতে পারে না:

এক্সএমএলে বৈধ অক্ষর


3

ইহা পারিপার্শ্বিক অবস্থা উপর নির্ভর করে। সামগ্রীর জন্য, এটি < এবং এবং এবং এবং ]]> (যদিও একটি চরিত্রের পরিবর্তে তিনটির একটি স্ট্রিং)।

বৈশিষ্ট্যযুক্ত মানগুলির জন্য, এটি < , & , " এবং '

সিডিএটিএর জন্য, এটি ]]>


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