এক্সএমএলে "xMLns" এর অর্থ কী?


415

আমি একটি এক্সএমএল ফাইলে নিম্নলিখিত লাইনটি দেখেছি:

xmlns:android="http://schemas.android.com/apk/res/android"

আমি xmlnsঅন্যান্য অনেকগুলি এক্সএমএল ফাইলও দেখেছি যা আমি পেরিয়ে এসেছি।

এটা কি?




এখন আপনি এটিও জানতেন যে আমরা যখন ট্যাগগুলি ভুলভাবে বা অন্য জায়গায় ব্যবহার করি তখন আমরা কেন এক্সএমএলে ত্রুটি পাই। :)
ভাইবস

উত্তর:


299

এটি একটি এক্সএমএল নেমস্পেসের সংজ্ঞা দেয় ।

আপনার উদাহরণে, নেমস্পেস উপসর্গটি " অ্যান্ড্রয়েড " এবং নেমস্পেস ইউআরআই হ'ল " http://schemas.android.com/apk/res/android "

দস্তাবেজে আপনি এই জাতীয় উপাদানগুলি দেখতে পাবেন: <android:foo />

পুরো নেমস্পেস ইউআরআইয়ের জন্য একটি সংক্ষিপ্ত নাম উপন্যাসের সাথে নেমস্পেসের উপসর্গটিকে ভেরিয়েবল হিসাবে ভাবেন। এটি <http://schemas.android.com/apk/res/android:foo />যখন কোনও এক্সএমএল পার্সার দস্তাবেজটি পড়েন তখন এর অর্থ "এর অর্থ" এর সাথে লেখার সমতুল্য ।

দ্রষ্টব্য: আপনি আসলে একটি এক্সএমএল দস্তাবেজের নেমস্পেস উপসর্গের জায়গায় পুরো নেমস্পেস ইউআরআই ব্যবহার করতে পারবেন না।

নেমস্পেসে এই টিউটোরিয়ালটি দেখুন: http://www.sitepPoint.com/xML-namespaces-exPLined/


62
আমি পার্সার কী দেখছে তা দেখতে আমি সবসময় এই ইউআরআইগুলিকে একটি ওয়েব ব্রাউজারে আটকান, তবে এটি সর্বদা 404 ফেরত দেয় it এটি কি সত্যই ইউআরআই বলে মনে করা হয় যা শেষ পর্যন্ত টেপা একটি স্ট্যান্ডার্ড ফাইলনামের প্রয়োজন, বা এটি কেবল একটি কৌশল একটি অনন্য আইডি তৈরির জন্য?
প্যাট্রিক

36
@ পেট্রিক হ্যাঁ, এটির কেবল একটি ইউআরআই যা অনন্যরূপে হওয়া দরকার যাতে এটি অন্যের থেকে পৃথক নেমস্পেস এবং কোনও সম্ভাব্য নকল ট্যাগগুলি সঠিকভাবে ব্যাখ্যা করা যায়। সুতরাং ইউআরআই প্রায়শই কিছুই দেখায় না।
ফুচো

3
হুম ... এটি একটি নেমস্পেস জেনে ভাল। আমি ভাবছিলাম যে কোনও ইউআরআই নির্দিষ্ট করে এইচটিএমএল পৃষ্ঠাটি কোনও স্কিমা নির্ধারণের জন্য সেই ওয়েবসাইটটিতে অ্যাক্সেস করেছিল।
নাভ

17
@ পেট্রিক, ইউআরআই ইউআরএল এর মতো নয়। একটি ইউআরএল একটি লোকেটর এবং একটি ইউআরআই কেবল সনাক্তকারী। আপনি খুব ভালভাবে ইউআরআই হিসাবে একটি জিইউইডি চয়ন করতে পারেন। আসলে, বইগুলির জন্য আমাদের যে আইএসবিএন রয়েছে তা হ'ল ইউআরআই-এর একটি রূপ।
জয়ওয়ালকার

তারপরে ট্যাগগুলি কীভাবে কাজ করে? মানে <LinearLayoutপ্রিফিক্স ছাড়া কাজ?
আসিফ মোশতাক

676

এর অর্থ এক্সএমএল নেমস্পেস

মূলত, এক্সএমএলে প্রতিটি উপাদান (বা বৈশিষ্ট্য) একটি নেমস্পেসের সাথে সম্পর্কিত, উপাদানটির নামটিকে "যোগ্যতা অর্জনের" একটি উপায়।

আপনি এবং আমি দুজনেই আমাদের নিজস্ব এক্সএমএল উদ্ভাবন করুন। আপনি লোকদের বর্ণনা করার জন্য এক্সএমএল আবিষ্কার করেছেন, আমি শহরগুলি বর্ণনা করার জন্য আমার আবিষ্কার করি। আমরা উভয় নামক একটি উপাদান অন্তর্ভুক্ত 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>

13
+1 ভাল, সহায়ক ধারণাগত উত্তর। আপনি "মূলত, এক্সএমএলে প্রতিটি উপাদান (বা বৈশিষ্ট্য) একটি নেমস্পেসের অন্তর্গত" হিসাবে যোগ্যতা অর্জন করতে চাইতে পারেন, যেহেতু কিছু উপাদান এবং গুণাবলী "কোনও নামস্থান" তে বলা হয় না to যদিও আমি বুঝতে পারি আপনি বুনিয়াদি দিচ্ছিলেন।
LarsH

1
@ রব লেভাইন "বৈশিষ্ট্যগুলি নামগতির হতে পারে তবে সাধারণত তা হয় না।" অ্যান্ড্রয়েড সম্পর্কে কী?
পল ব্রুউচিজেন্সকি

1
সুতরাং উদাহরণস্বরূপ "আপনার. example.com/xML/Press " কীভাবে ব্যবহৃত হয়? ঠিক আছে আমার একটি <ব্যক্তি: নাম> ট্যাগ রয়েছে, এখন কী? আপনি দয়া করে এটি ব্যাখ্যা করতে পারেন?
Koray Tugay

1
@ ওয়ার্মএসএস - হ্যাঁ - আপনি ঠিক বলেছেন। আপনি যখন আপনার ক্যোয়ারীটি সংজ্ঞায়িত করেন, আপনাকে সম্ভবত একটি উপসর্গের মাধ্যমে নেমস্পেস নির্দিষ্ট করতে হবে। উদাহরণস্বরূপ, সি # সিস্টেম.এক্সএমএল বিশ্বে আপনি XMLNamespaceManager.AddNamespace ব্যবহার করে নেমস্পেস ম্যানেজারের সাথে একটি উপসর্গটি নিবন্ধভুক্ত করবেন এবং তারপরে আপনার ক্যোয়ারিতে এই উপসর্গটি ব্যবহার করুন। উপসর্গটি দস্তাবেজে উপস্থিত না হওয়ার বিষয়টি বিবেচ্য নয় - কেবল এটির নামস্থানটি কী এটি মানচিত্র করে।
রব লেভাইন

2
এই মাইক্রোসফ্ট ডকুমেন্ট লিংক: " এমএসডিএন.মাইক্রোসফট. / ইন- ইউএস / লাইব্রেরি / আআআ 4৪৫৫65৫.এসপিএক্স " এক্সএমএলে নামস্থানটি খুব ভালভাবে ব্যাখ্যা করে।
দ্বীন জন

16

আমি মনে করি যে বৃহত্তম বিভ্রান্তি হ'ল এক্সএমএল নেমস্পেস এমন এক ধরণের ইউআরএলকে নির্দেশ করছে যার কোনও তথ্য নেই। তবে সত্যটি হ'ল যে ব্যক্তি নেমস্পেসের নীচে আবিষ্কার করেছিলেন:

xmlns:android="http://schemas.android.com/apk/res/android"

এটি এটিকেও ডাকতে পারে:

xmlns:android="asjkl;fhgaslifujhaslkfjhliuqwhrqwjlrknqwljk.rho;il"

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

কেন এটি অনন্য হতে হবে? নামক উদাহরণস্বরূপ অ্যাট্রিবিউট তাই কারণ নামব্যবধান উদ্দেশ্য তাদের অনন্য থাকতে হয় পটভূমি আপনার নামস্থান থেকে থেকে আলাদা করা যায় পটভূমি অন্য নামের স্থান থেকে থেকে ।

এই স্বতন্ত্রতার কারণে আপনার চিন্তার দরকার নেই যে আপনি যদি নিজের কাস্টম অ্যাট্রিবিউট তৈরি করেন তবে আপনার নামের সংঘর্ষ হবে।


হাই মরিফিডন অনুগ্রহ করে, আপনি কি নিজের উত্তরে এমন একটি লিঙ্ক যুক্ত করতে পারেন যা উল্লেখ করে যে লিখিত সামগ্রী বা ইউআরএল কিছু হতে পারে? অনন্য কি হতে হবে? দয়া করে স্বতন্ত্রতাটিও পরিষ্কার করুন: এক্সএমএল নেমস্পেসের নাম বা ইউআরএলটির সামগ্রী? চিয়ার্স
ওলিব্রে

@ অলিব্রে আপনি যদি অ্যান্ড্রয়েডের নেমস্পেস ব্যবহার করতে চান তবে আপনার নামটি ব্যবহার করা উচিত। এটাই তাদের অনন্য নাম। তারা সেখানে একটি ইউআরএল রাখার সিদ্ধান্ত নিয়েছে। আপনি যদি নিজের নিজস্ব স্থান তৈরি করে থাকেন তবে আপনি যেটিকে চান তা একে অনন্য বলে নিশ্চিত করতে পারেন call বলা হয়ে থাকে যে আপনার এমন ইউআরএল ব্যবহার করা উচিত যা সেই জায়গার দিকে নির্দেশ করে যেখানে সেই নামস্থানটির ভিতরে কী রয়েছে তবে আপনি দেখতে পাচ্ছেন এমনকি অ্যান্ড্রয়েড নেমস্পেসের স্রষ্টাও এটি করেন নি do
মরফিডন

ধন্যবাদ মরফিডন রবের উত্তর পড়ার সময় অবশেষে আমি এই বিষয়টি বুঝতে পেরেছি । আমি আপনার উত্তরটি পছন্দ করি কারণ এটি একটি গুরুত্বপূর্ণ দিকটি হাইলাইট করে যা সুপরিচিত নয়। তবে দয়া করে আপনার উত্তরটি উন্নত করার চেষ্টা করুন, কোন অংশটি অনন্য হতে হবে তা স্পষ্ট করে উল্লেখ করুন, রেফারেন্স সরবরাহ করুন, পুনরায় ব্যাখ্যা করুন, শব্দটি পরীক্ষা করুন ... কিছু পাঠক আপনার বর্তমান উত্তর দ্বারা বিভ্রান্ত হতে পারে। চিয়ার্স
অলিব্রে

1
এই আমার প্রয়োজন উত্তর! সুতরাং এই বৈশিষ্ট্যটির মানটির জন্য একটি ইউআরআই ব্যবহার করতে বিভ্রান্তিকর কারণ লোকেরা ইউআরআই = ইউআরএল মনে করে এবং প্রত্যাশা করে যে কোনও দস্তাবেজটি সেই স্থানে থাকা উচিত। তবে আফ্রিক্সটি ইউআরআই যদি 404 ফেরত দেয় তবে এটি পুরোপুরি ঠিক। এটি ঠিক একটি অনন্য সনাক্তকারী যা ঠিকানার মতো দেখতে ঘটে look কিছু বিশেষ যাচাইকারী থাকতে পারে যারা সেই জায়গাতে স্কিমা বা একটি ডিটিডি খুঁজে পাওয়ার আশা করে (যা বোঝায়), তবে এগুলি বিশেষত আমার মনে হয়। আমি এখানে ভুল থাকলে দয়া করে আমাকে সংশোধন করুন।
brennanyoung

1
@ ব্রেণনানউইং এটি যেমনটি বলেছেন ঠিক তেমনই করেছেন :)
মরফিডন

12

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একটি এক্সএমএল ফাইলে দুটি পৃথক উপাদান। নেমস্পেস ছাড়া এই ফাইলটি বৈধ হবে না।


4

আপনার নামের স্থান রয়েছে যাতে আপনার বিশ্বব্যাপী অনন্য উপাদান থাকতে পারে। যাইহোক, 99% সময় এটি সত্যিকার অর্থে আসে না, তবে আপনি যখন এটি শব্দার্থক ওয়েবের দৃষ্টিকোণে রাখেন গুরুত্বপূর্ণ হওয়া শুরু করে।

উদাহরণস্বরূপ, আপনি উপযুক্ত ব্যবহার করে বিভিন্ন স্কিমের একটি এক্সএমএল ম্যাশ-আপ করতে পারেন xmlns। উদাহরণস্বরূপ, vCard ইত্যাদির সাথে বন্ধুর বন্ধুত্ব করা etc.


তুচ্ছ এক্সএমএল এর জন্য এটি আমার উপেক্ষা করা হতে পারে, কারণ সমস্ত কিছু নামের জায়গাগুলি অত্যন্ত গুরুত্বপূর্ণ। + আমি শব্দার্থক ওয়েব এবং নেমস্পেসের মধ্যে সংযোগটি দেখতে পাচ্ছি না। শব্দার্থক ওয়েবটি একটি ধারণা, নেমস্পেসটি এক্সএমএল স্ট্যান্ডার্ডের অংশ, আপনি ইন্টারফেস সংজ্ঞা এবং প্রয়োগের বিশদটি মিশ্রণ করছেন।
নিউটোপিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.