আমি একটি এক্সএমএল ফাইলে নিম্নলিখিত লাইনটি দেখেছি:
xmlns:android="http://schemas.android.com/apk/res/android"
আমি xmlnsঅন্যান্য অনেকগুলি এক্সএমএল ফাইলও দেখেছি যা আমি পেরিয়ে এসেছি।
এটা কি?
আমি একটি এক্সএমএল ফাইলে নিম্নলিখিত লাইনটি দেখেছি:
xmlns:android="http://schemas.android.com/apk/res/android"
আমি xmlnsঅন্যান্য অনেকগুলি এক্সএমএল ফাইলও দেখেছি যা আমি পেরিয়ে এসেছি।
এটা কি?
উত্তর:
এটি একটি এক্সএমএল নেমস্পেসের সংজ্ঞা দেয় ।
আপনার উদাহরণে, নেমস্পেস উপসর্গটি " অ্যান্ড্রয়েড " এবং নেমস্পেস ইউআরআই হ'ল " http://schemas.android.com/apk/res/android "
দস্তাবেজে আপনি এই জাতীয় উপাদানগুলি দেখতে পাবেন: <android:foo />
পুরো নেমস্পেস ইউআরআইয়ের জন্য একটি সংক্ষিপ্ত নাম উপন্যাসের সাথে নেমস্পেসের উপসর্গটিকে ভেরিয়েবল হিসাবে ভাবেন। এটি <http://schemas.android.com/apk/res/android:foo />যখন কোনও এক্সএমএল পার্সার দস্তাবেজটি পড়েন তখন এর অর্থ "এর অর্থ" এর সাথে লেখার সমতুল্য ।
দ্রষ্টব্য: আপনি আসলে একটি এক্সএমএল দস্তাবেজের নেমস্পেস উপসর্গের জায়গায় পুরো নেমস্পেস ইউআরআই ব্যবহার করতে পারবেন না।
নেমস্পেসে এই টিউটোরিয়ালটি দেখুন: http://www.sitepPoint.com/xML-namespaces-exPLined/
<LinearLayoutপ্রিফিক্স ছাড়া কাজ?
এর অর্থ এক্সএমএল নেমস্পেস ।
মূলত, এক্সএমএলে প্রতিটি উপাদান (বা বৈশিষ্ট্য) একটি নেমস্পেসের সাথে সম্পর্কিত, উপাদানটির নামটিকে "যোগ্যতা অর্জনের" একটি উপায়।
আপনি এবং আমি দুজনেই আমাদের নিজস্ব এক্সএমএল উদ্ভাবন করুন। আপনি লোকদের বর্ণনা করার জন্য এক্সএমএল আবিষ্কার করেছেন, আমি শহরগুলি বর্ণনা করার জন্য আমার আবিষ্কার করি। আমরা উভয় নামক একটি উপাদান অন্তর্ভুক্ত name। আপনার ব্যক্তির নাম এবং শহরের নামটিকে বোঝায় — ঠিক আছে, এটি কিছুটা স্বীকৃত।
<person>
<name>Rob</name>
<age>37</age>
<homecity>
<name>London</name>
<lat>123.000</lat>
<long>0.00</long>
</homecity>
</person>
যদি আমাদের দুটি এক্সএমএল একক নথিতে একত্রিত হয়, তবে আমরা কীভাবে দুটি নাম আলাদা করে বলব? আপনি উপরে দেখতে পারেন যে দুটি nameউপাদান রয়েছে তবে তাদের উভয়েরই আলাদা অর্থ রয়েছে।
উত্তরটি হ'ল আপনি এবং আমি দুজনেই আমাদের এক্সএমএলকে একটি নেমস্পেস নির্ধারণ করব, যা আমরা অনন্য করব:
<personxml:person xmlns:personxml="http://www.your.example.com/xml/person"
xmlns:cityxml="http://www.my.example.com/xml/cities">
<personxml:name>Rob</personxml:name>
<personxml:age>37</personxml:age>
<cityxml:homecity>
<cityxml:name>London</cityxml:name>
<cityxml:lat>123.000</cityxml:lat>
<cityxml:long>0.00</cityxml:long>
</cityxml:homecity>
</personxml:person>
এখন আমরা আমাদের এক্সএমএলকে পুরোপুরি যোগ্য করে তুলেছি, প্রত্যেকটি কী সম্পর্কে কোনও দ্বিধা নেই name উপাদানটির অর্থ । যে সমস্ত ট্যাগ দিয়ে শুরু হয় personxml:সেগুলি হ'ল আপনার এক্সএমএল সম্পর্কিত ট্যাগগুলি, যেগুলি শুরু হয় cityxml:সেগুলি আমার।
কয়েকটি বিষয় উল্লেখযোগ্য:
যদি আপনি কোনও নেমস্পেসের ঘোষণা বাদ দেন তবে জিনিসগুলি ডিফল্ট নেমস্পেসে বিবেচিত হবে।
আপনি যদি শনাক্তকারী ছাড়াই কোনও নেমস্পেস ঘোষণা করেন তবে এটি xmlns="http://somenamespace"বরংxmlns:rob="somenamespace" , এটা নথির জন্য নেমস্পেস নির্দিষ্ট করে।
আসল নেমস্পেস নিজেই, প্রায়শই একটি আইআরআই , এর কোনও বাস্তব পরিণতি হয় না। এটি অনন্য হওয়া উচিত, তাই লোকেদের নিজের মালিকানাধীন একটি আইআরআই / ইউআরআই বেছে নেওয়ার প্রবণতা রয়েছে তবে এর চেয়ে বড় অর্থের আর কোনও অর্থ নেই। কখনও কখনও লোকেরা নির্দিষ্ট আইআরআইতে এক্সএমএলের জন্য স্কিমা (সংজ্ঞা) রাখবে, তবে এটি কেবলমাত্র কিছু লোকের একটি সম্মেলন।
উপসর্গটির কোনও ফল হয় না। একমাত্র বিষয়টি হল উপসর্গ হিসাবে নাম স্থানটিকে সংজ্ঞায়িত করা হয়। বিভিন্ন উপসর্গ দিয়ে শুরু হওয়া বেশ কয়েকটি ট্যাগ, একই নামের জায়গার মানচিত্রের সমস্তটি একই হিসাবে বিবেচিত হয়।
উদাহরণস্বরূপ, যদি উপসর্গ personxmlএবং mycityxmlউভয়ই একই নামস্থানে ম্যাপযুক্ত হয় (নীচের স্নিপেটের মতো), তবে আপনি কোনও প্রদত্ত উপাদানটির সাথে প্রিফিক্স করেছেন personxmlবা এটি mycityxmlউভয়ই কোনও এক্সএমএল পার্সারের দ্বারা বিবেচিত হবে । মুল বক্তব্যটি হ'ল একটি এক্সএমএল পার্সার আপনার উপসর্গ হিসাবে কী বেছে নিয়েছে সেদিকে খেয়াল রাখে না, কেবল এটির নামস্থানও এটি মানচিত্র করে। উপসর্গ শুধু একটি হল অপ্রত্যক্ষ্যতার নামস্থান প্রতি নির্দেশ।
<personxml:person
xmlns:personxml="http://example.com/same/url"
xmlns:mycityxml="http://example.com/same/url" />বৈশিষ্ট্যগুলি যোগ্য হতে পারে তবে সাধারণত হয় না। তারা কি না যেমন উপাদানের (নিচে দেখুন) বিরোধিতা উপাদান তারা থেকে তাদের নামস্থান উত্তরাধিকারী।
এছাড়াও, মৌলিক উপাদান থেকে উপাদান নেমস্পেসগুলি উত্তরাধিকার সূত্রে প্রাপ্ত। অন্য কথায় আমি সমান উপরের এক্সএমএল হিসাবে লিখতে পারে
<person xmlns="http://www.your.example.com/xml/person">
<name>Rob</name>
<age>37</age>
<homecity xmlns="http://www.my.example.com/xml/cities">
<name>London</name>
<lat>123.000</lat>
<long>0.00</long>
</homecity>
</person>
আমি মনে করি যে বৃহত্তম বিভ্রান্তি হ'ল এক্সএমএল নেমস্পেস এমন এক ধরণের ইউআরএলকে নির্দেশ করছে যার কোনও তথ্য নেই। তবে সত্যটি হ'ল যে ব্যক্তি নেমস্পেসের নীচে আবিষ্কার করেছিলেন:
xmlns:android="http://schemas.android.com/apk/res/android"
এটি এটিকেও ডাকতে পারে:
xmlns:android="asjkl;fhgaslifujhaslkfjhliuqwhrqwjlrknqwljk.rho;il"
এটি কেবল একটি অনন্য শনাক্তকারী। তবে এটি প্রতিষ্ঠিত যে আপনার সেখানে ইউআরএল রাখা উচিত যা অনন্য এবং এটি সম্ভবত এই নামের জায়গাতে ব্যবহৃত ট্যাগ / বৈশিষ্ট্যগুলির নির্দিষ্টকরণের দিকে নির্দেশ করতে পারে। এটি প্রয়োজন হয় না।
কেন এটি অনন্য হতে হবে? নামক উদাহরণস্বরূপ অ্যাট্রিবিউট তাই কারণ নামব্যবধান উদ্দেশ্য তাদের অনন্য থাকতে হয় পটভূমি আপনার নামস্থান থেকে থেকে আলাদা করা যায় পটভূমি অন্য নামের স্থান থেকে থেকে ।
এই স্বতন্ত্রতার কারণে আপনার চিন্তার দরকার নেই যে আপনি যদি নিজের কাস্টম অ্যাট্রিবিউট তৈরি করেন তবে আপনার নামের সংঘর্ষ হবে।
xMLns - এক্সএমএল নামস্থান। উপাদান নামের বিরোধগুলি এড়াতে এটি কেবল একটি পদ্ধতি। উদাহরণ স্বরূপ:
<config xmlns:rnc="URI1" xmlns:bsc="URI2">
<rnc:node>
<rnc:rncId>5</rnc:rncId>
</rnc:node>
<bsc:node>
<bsc:cId>5</bsc:cId>
</bsc:node>
</config>
nodeএকটি এক্সএমএল ফাইলে দুটি পৃথক উপাদান। নেমস্পেস ছাড়া এই ফাইলটি বৈধ হবে না।
আপনার নামের স্থান রয়েছে যাতে আপনার বিশ্বব্যাপী অনন্য উপাদান থাকতে পারে। যাইহোক, 99% সময় এটি সত্যিকার অর্থে আসে না, তবে আপনি যখন এটি শব্দার্থক ওয়েবের দৃষ্টিকোণে রাখেন গুরুত্বপূর্ণ হওয়া শুরু করে।
উদাহরণস্বরূপ, আপনি উপযুক্ত ব্যবহার করে বিভিন্ন স্কিমের একটি এক্সএমএল ম্যাশ-আপ করতে পারেন xmlns। উদাহরণস্বরূপ, vCard ইত্যাদির সাথে বন্ধুর বন্ধুত্ব করা etc.