क्यों यह लाइन xmlns: android = "http://schemas.android.com/apk/res/android" लेआउट xml फ़ाइल में पहली होनी चाहिए?


जवाबों:


118

XML में, xmlns एक Namespace घोषित करता है। वास्तव में, जब आप करते हैं:

<LinearLayout android:id>
</LinearLayout>

कॉल करने के बजाय android:id, xml अद्वितीय होने के लिए http://schemas.android.com/apk/res/android:id का उपयोग करेगा । आम तौर पर यह पृष्ठ मौजूद नहीं होता है (यह एक यूआरआई है, URL नहीं है), लेकिन कभी-कभी यह एक URL होता है जो उपयोग किए गए नाम स्थान की व्याख्या करता है।

जावा अनुप्रयोग में पैकेज नाम के समान नामस्थान का बहुत अधिक उपयोग होता है।

यहाँ एक स्पष्टीकरण है।

यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर (URI)

एक यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर (URI) एक ऐसा अक्षर है जो इंटरनेट रिसोर्स की पहचान करता है।

सबसे आम यूआरआई यूनिफ़ॉर्म रिसोर्स लोकेटर (URL) है जो इंटरनेट डोमेन पते की पहचान करता है। एक और, यूआरआई का इतना सामान्य प्रकार यूनिवर्सल रिसोर्स नेम (यूआरएन) नहीं है।

हमारे उदाहरणों में हम केवल URL का उपयोग करेंगे।


13
फिर हमारे पास android:layout_widthबस के बजाय क्यों है layout_width?
शशवत

4
तो फिर हम "android: LinearLayout" के बजाय "LinearLayout" का उपयोग कैसे करें?
Android डेवलपर

शायद इसलिए कि LinearLayout रूट नेमस्पेस का हिस्सा है, और android: xxx विशेषताएँ एक सबनेमस्पेस (" schemas.android.com/apk/res/android/android/id" ) का हिस्सा हैं
Nitro4242

4
बेशक यह इस url को प्राप्त नहीं करता है, यह एक URI है: w3schools.com/xml/xml_namespaces.asp
NitroG42

1
से danielmiessler.com/study/url_vs_uri : "एक यूआरएल यूआरआई का एक प्रकार है इसलिए यदि कोई आपको बताता है कि एक यूआरएल यूआरआई, वह के गलत नहीं है लेकिन इसका मतलब यह नहीं है कि सभी यूआरआई यूआरएल हैं सभी तितलियों उड़ान भरने, लेकिन।।। वह सब कुछ नहीं जो मक्खियाँ होती हैं, वह तितली होती है। जो हिस्सा एक यूआरआई को URL बनाता है वह "एक्सेस मैकेनिज़्म" या "नेटवर्क लोकेशन" का समावेश है, जैसे http: /, ftp: //, ldap: //, telnet: / /, आदि
योनिव

37

यह समझने के लिए कि xmlns:android=“http://schemas.android.com/apk/res/android”लेआउट xml फ़ाइल में पहले क्यों होना चाहिए हम एक उदाहरण का उपयोग करके घटकों को समझेंगे

Sample::

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/container" >    
</FrameLayout>

यूनिफ़ॉर्म रिसोर्स इंडिकेटर (URI) :

  • कंप्यूटिंग में, एक समान संसाधन पहचानकर्ता (URI) एक अक्षर का एक स्ट्रिंग है जिसका उपयोग किसी संसाधन के नाम की पहचान करने के लिए किया जाता है।
  • इस तरह की पहचान विशिष्ट प्रोटोकॉल का उपयोग करते हुए, आमतौर पर वर्ल्ड वाइड वेब पर संसाधन के प्रतिनिधित्व के साथ बातचीत को सक्षम बनाती है।

Ex: http://schemas.android.com/apk/res/android:idयहाँ URI है


XML नामस्थान :

  • XML नाम स्थान का उपयोग XML दस्तावेज़ में विशिष्ट रूप से नामित तत्वों और विशेषताओं को प्रदान करने के लिए किया जाता है। xmlns:androidAndroid नामस्थान का वर्णन करता है।
  • इसका उपयोग इस तरह से किया गया है क्योंकि यह संकलन समय पर त्रुटियों को संभालने के लिए Google द्वारा डिज़ाइन विकल्प है।
  • यह भी मान लें कि हम अपने स्वयं के textviewविजेट को एंड्रॉइड की तुलना में विभिन्न विशेषताओं के साथ लिखते हैं textview, एंड्रॉइड नेमस्पेस हमारे कस्टम textviewविजेट और एंड्रॉइड textviewविजेट के बीच अंतर करने में मदद करता है

8
यह उत्तर वास्तव में उपरोक्त लोगों की तुलना में पढ़ने लायक है, जिन्होंने स्पष्ट रूप से "WHY?" की व्याख्या क्यों नहीं की।
eRaisedToX

आप जैसे कह रहे थे, "इस तरह की पहचान विशिष्ट प्रोटोकॉल का उपयोग करते हुए, आमतौर पर वर्ल्ड वाइड वेब पर संसाधन के प्रतिनिधित्व के साथ बातचीत को सक्षम करती है। Ex: schemas.android.com/apk/res/android:id यहाँ URI है" - लेकिन अगर मेरे पास इंटरनेट कनेक्शन नहीं है, तो यह एंड्रॉइड नाम स्पेस नेटवर्क पर संसाधनों के साथ कैसे बातचीत करेगा?
कावी

29

xmlns XML नेमस्पेस को संदर्भित करता है

XML में उपसर्गों का उपयोग करते समय, उपसर्ग के लिए एक तथाकथित नामस्थान को परिभाषित किया जाना चाहिए। नामस्थान एक तत्व के प्रारंभ टैग में xmlns विशेषता द्वारा परिभाषित किया गया है। नेमस्पेस घोषणा में निम्नलिखित सिंटैक्स होता है। xmlns: उपसर्ग = "URI"।

नोट : नामस्थान URI का उपयोग सूचना देखने के लिए पार्सर द्वारा नहीं किया जाता है।

उद्देश्य नाम स्थान को एक अनूठा नाम देना है। हालांकि, अक्सर कंपनियां नाम स्थान की जानकारी रखने वाले वेब पेज के लिए पॉइंटर के रूप में नेमस्पेस का उपयोग करती हैं।


7

यह सिर्फ XML नाम स्पेस घोषणा है। इस नाम स्थान का उपयोग हम यह बताने के लिए करते हैं कि नीचे सूचीबद्ध विशेषताएँ Android की हैं। इस प्रकार वे " android: " से शुरू होते हैं

आप वास्तव में अपनी खुद की कस्टम विशेषताएँ बना सकते हैं। तो नाम संघर्ष को रोकने के लिए जहां 2 विशेषताओं को एक ही चीज़ का नाम दिया गया है, लेकिन अलग तरह से व्यवहार करते हैं, हम यह इंगित करने के लिए उपसर्ग " एंड्रॉइड: " जोड़ते हैं कि ये एंड्रॉइड विशेषता हैं।

इस प्रकार, यह नाम स्थान घोषणा आपकी XML फ़ाइल के मूल दृश्य के उद्घाटन टैग में शामिल होनी चाहिए।


सरल और स्पष्ट। मैं अन्य उत्तरों के बारे में नहीं जानता, लेकिन आपका जवाब मेरे भ्रम के लिए चुंबक की तरह काम करता है और मेरी अवधारणा अब स्पष्ट है।
स्टैक ओवरफ्लो


3
  • Xmlns का अर्थ है xml नाम स्थान।
  • यह xml के नामकरण संघर्ष से बचने के लिए बनाया गया है।
  • किसी अन्य तरीके से नामकरण के टकराव से बचने के लिए हमें प्रत्येक तत्व को एक उपसर्ग प्रदान करना होगा।
  • प्रत्येक xml टैग में उपसर्ग के दोहराए जाने वाले उपयोग से बचने के लिए हम xml की जड़ में xmlns का उपयोग करते हैं। इसलिए हमारे पास टैग xmlns: android = " http://schemas.android.com/apk/res/android " है
  • अब यहाँ android का सीधा मतलब है कि हम इसे " http://schemas.android.com/apk/res/android " नाम स्थान दे रहे हैं ।
  • यह नामस्थान एक URL नहीं है, बल्कि एक URI है जिसे URN (सार्वभौमिक संसाधन नाम) के रूप में जाना जाता है जिसका उपयोग शायद ही कभी URI के स्थान पर किया जाता है।
  • इसके कारण android xml दस्तावेज़ में Android संबंधित तत्वों की पहचान करने के लिए ज़िम्मेदार होगा जो कि android होगा: xxxxxxx आदि। इस नाम के बिना android: xxxxxxx को मान्यता नहीं दी जाएगी।

आम आदमी के कार्यकाल में:

बिना xmlns: android = ” http://schemas.android.com/apk/res/android ” Android संबंधित टैग हमारे लेआउट के xml दस्तावेज़ में पहचाने नहीं जाएंगे।


2

XML में, तत्व नाम डेवलपर द्वारा परिभाषित किए गए हैं। जब विभिन्न XML अनुप्रयोगों से XML दस्तावेज़ों को मिलाने का प्रयास किया जाता है, तो अक्सर इसका विरोध होता है। एक उपयोगकर्ता या एक XML एप्लिकेशन को पता नहीं होगा कि इन अंतरों को कैसे संभालना है। XML में नाम संघर्ष आसानी से एक नाम उपसर्ग का उपयोग करके बचा जा सकता है। XML में उपसर्गों का उपयोग करते समय, उपसर्ग के लिए एक नामस्थान को परिभाषित किया जाना चाहिए। नामस्थान को तत्व के प्रारंभ टैग में xmlns विशेषता द्वारा परिभाषित किया जा सकता है। नाम स्थान घोषणा में निम्नलिखित सिंटैक्स है। xmlns: उपसर्ग = "URI"।


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

यह xmlns का रूप है: android = "@ + / id"। अब इसे संदर्भित करने के लिए हम उदाहरण के लिए उपयोग करते हैं

android:layout_width="wrap_content"
android:text="Hello World!"

एक और xmlns है

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

जो xmlns के रूप में है: app = "@ + / id" और इसका उपयोग नीचे दिया गया है

 app:layout_constraintBottom_toBottomOf="parent"
 app:layout_constraintLeft_toLeftOf="parent"

2

मुझे लगता है कि यह नामस्थान के साथ स्पष्ट करता है, क्योंकि हम अपनी विशेषताओं को बना सकते हैं और यदि उपयोगकर्ता निर्दिष्ट विशेषता एंड्रॉइड के समान है तो यह नाम स्थान के संघर्ष से बचता है।


2

xmlns: android यह एंड्रॉइड में एंड्रॉइड नेमस्पेस परिभाषित करने के लिए प्रारंभ टैग है। यह android Google डेवलपर द्वारा निर्धारित स्टैंडरड कन्वेंशन है। जब आप डिफॉल्ट या कस्टोम का उपयोग कर रहे हों, तब इस नाम स्थान का उपयोग करना चाहिए।

Android नामस्थान को परिभाषित करता है। यह विशेषता हमेशा " http://schemas.android.com/apk/res/android " पर सेट होनी चाहिए ।

से <manifes>तत्व प्रलेखन


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

xmlns : xml नाम स्थान और URL है: " http://schemas.android.com/apk/res/android कुछ भी नहीं है लेकिन

XSD जो [XML स्कीमा परिभाषा] है: जिसका उपयोग XML फ़ाइल के लिए परिभाषित नियमों में किया जाता है।

उदाहरण :

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" 
android:layout_width="match_parent"
android:layout_height="match_parent">

<EditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_marginBottom="4dp"
   android:hint="User Name"
  />
</LinearLayout> 

मुझे बताएं कि किस तरह के नियम हैं?

  1. XML फ़ाइल के ऊपर हम अपने लेआउट के लिए पहले से ही layout_ उपलब्धता को परिभाषित करते हैं अब यदि आप दूसरी बार एक ही विशेषता को परिभाषित करेंगे तो आपको एक त्रुटि मिलेगी।
  2. EditText तो है लेकिन अगर आप एक और EditText जोड़ना चाहते हैं तो कोई समस्या नहीं है।

XML XSD में इस तरह के नियम परिभाषित किए गए हैं: " http://schemas.android.com/apk/res/android "

थोड़ा देर से लेकिन मुझे उम्मीद है कि यह आपकी मदद करता है।


0

यह एक एक्सएमएल नाम की जगह की घोषणा है ताकि यह निर्दिष्ट किया जा सके कि यह देखने वाले समूह के भीतर जो विशेषताएँ हैं, यह Android से संबंधित हैं।


कृपया इसे और विस्तृत करें
प्रमोद एस। निकम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.