Tại sao dòng này xmlns: android =, http://schemas.android.com/apk/res/android, phải là người đầu tiên trong tệp xml bố cục?


Câu trả lời:


118

Trong XML, xmlns tuyên bố một Không gian tên. Trong thực tế, khi bạn làm:

<LinearLayout android:id>
</LinearLayout>

Thay vì gọi android:id, xml sẽ sử dụng http://schemas.android.com/apk/res/android:id để trở thành duy nhất. Nói chung trang này không tồn tại (đó là URI, không phải URL), nhưng đôi khi nó là URL giải thích không gian tên được sử dụng.

Không gian tên có khá nhiều cách sử dụng giống như tên gói trong ứng dụng Java.

Đây là một lời giải thích.

Mã định danh tài nguyên đồng nhất (URI)

Mã định danh tài nguyên đồng nhất (URI) là một chuỗi các ký tự xác định tài nguyên Internet.

URI phổ biến nhất là Bộ định vị tài nguyên đồng nhất (URL) xác định địa chỉ tên miền Internet. Một loại URI không phổ biến khác là Tên tài nguyên chung (URN).

Trong ví dụ của chúng tôi, chúng tôi sẽ chỉ sử dụng URL.


13
Vậy thì tại sao chúng ta có android:layout_widththay vì chỉ layout_width?
Shashwat

4
Vậy thì tại sao chúng ta lại sử dụng "linearLayout" thay vì "android: linearLayout"?
nhà phát triển Android

Có lẽ bởi vì linearLayout là một phần của không gian tên gốc và các thuộc tính android: xxx là một phần của tên con (" schemas.android.com/apk/res/android/android/id" )
NitroG42

4
Tất nhiên, nó không tìm nạp url này, đó là URI: w3schools.com/xml/xml_namespaces.asp
NitroG42

1
Từ danielmiessler.com/study/url_vs_uri : "URL là một loại URI. Vì vậy, nếu ai đó nói với bạn rằng URL không phải là URI, thì anh ta đã sai. Nhưng điều đó không có nghĩa là tất cả các URI đều là URL. không phải tất cả mọi thứ bay đều là một con bướm. Phần tạo nên một URI URL là bao gồm cơ chế truy cập của Cameron /, v.v.
yonivav

37

Để hiểu tại sao xmlns:android=“http://schemas.android.com/apk/res/android”phải là người đầu tiên trong tệp xml bố cục Chúng ta sẽ hiểu các thành phần bằng cách sử dụng một ví dụ

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>

Chỉ số tài nguyên thống nhất (URI) :

  • Trong điện toán, một định danh tài nguyên thống nhất (URI) là một chuỗi các ký tự được sử dụng để xác định tên của một tài nguyên.
  • Nhận dạng như vậy cho phép tương tác với các biểu diễn tài nguyên qua mạng, điển hình là World Wide Web, sử dụng các giao thức cụ thể.

Ví dụ: http://schemas.android.com/apk/res/android:idlà URI ở đây


Không gian tên XML :

  • Các không gian tên XML được sử dụng để cung cấp các thành phần và thuộc tính được đặt tên duy nhất trong tài liệu XML. xmlns:androidmô tả không gian tên android.
  • Nó được sử dụng như thế này bởi vì đây là một lựa chọn thiết kế của google để xử lý các lỗi tại thời gian biên dịch.
  • Cũng giả sử chúng ta viết textviewwidget của riêng mình với các tính năng khác so với Android textview, không gian tên android giúp phân biệt giữa textviewwidget tùy chỉnh và textviewwidget Android của chúng ta

8
câu trả lời này thực sự đáng đọc so với những câu trên mà không giải thích rõ ràng "TẠI SAO?"
eRaisedToX

Bạn đã nói như sau, "Nhận dạng như vậy cho phép tương tác với các đại diện của tài nguyên qua mạng, điển hình là World Wide Web, sử dụng các giao thức cụ thể. Ví dụ: schemas.android.com/apk/res/android:id là URI ở đây" - Nhưng nếu tôi không có kết nối internet, làm thế nào không gian tên android này sẽ tương tác với các tài nguyên qua mạng?
kavie

29

xmlns đề cập đến không gian tên XML

Khi sử dụng tiền tố trong XML, phải xác định không gian tên gọi cho tiền tố. Không gian tên được xác định bởi thuộc tính xmlns trong thẻ bắt đầu của một phần tử. Khai báo không gian tên có cú pháp sau. xmlns: tiền tố = "URI".

Ghi chú : URI không gian tên không được trình phân tích cú pháp sử dụng để tra cứu thông tin.

Mục đích là để cung cấp cho không gian tên một tên duy nhất. Tuy nhiên, thường các công ty sử dụng không gian tên làm con trỏ đến trang web chứa thông tin không gian tên.


7

Đây chỉ là khai báo không gian tên XML. Chúng tôi sử dụng Không gian tên này để chỉ định rằng các thuộc tính được liệt kê bên dưới, thuộc về Android. Do đó, họ bắt đầu với " android: "

Bạn thực sự có thể tạo các thuộc tính tùy chỉnh của riêng bạn. Vì vậy, để ngăn chặn xung đột tên trong đó 2 thuộc tính được đặt tên giống nhau, nhưng hoạt động khác nhau, chúng tôi thêm tiền tố " android: " để biểu thị rằng đây là các thuộc tính Android.

Do đó, khai báo Không gian tên này phải được bao gồm trong thẻ mở của chế độ xem gốc của tệp XML của bạn.


Đơn giản và rõ ràng. Tôi không biết về các câu trả lời khác nhưng câu trả lời của bạn hoạt động như nam châm cho sự nhầm lẫn của tôi và hiện tại khái niệm của tôi đã rõ ràng.
Chồng tràn


3
  • Xmlns có nghĩa là không gian tên xml.
  • Nó được tạo để tránh xung đột đặt tên trong xml.
  • Để tránh xung đột đặt tên bằng bất kỳ cách nào khác, chúng tôi cần cung cấp cho mỗi phần tử một tiền tố.
  • để tránh việc sử dụng lặp lại tiền tố trong mỗi thẻ xml, chúng tôi sử dụng xmlns ở gốc của xml. Do đó chúng tôi có thẻ xmlns: android =” http://schemas.android.com/apk/res/android
  • Bây giờ android ở đây chỉ đơn giản là chúng ta đang gán không gian tên là http://schemas.android.com/apk/res/androidline cho nó.
  • Không gian tên này không phải là một URL mà là một URI còn được gọi là URN (tên tài nguyên phổ quát) hiếm khi được sử dụng thay cho URI.
  • Do android này sẽ chịu trách nhiệm xác định các yếu tố liên quan đến Android trong tài liệu xml sẽ là android: xxxxxxx, v.v. Nếu không có không gian tên này, android: xxxxxxx sẽ không được nhận dạng.

Để đưa vào nhiệm kỳ của giáo dân:

không có xmlns: android =, http://schemas.android.com/apk/res/android, các thẻ liên quan đến android sẽ không được nhận ra trong tài liệu xml của bố cục của chúng tôi.


2

Trong XML, tên phần tử được xác định bởi nhà phát triển. Điều này thường dẫn đến xung đột khi cố gắng trộn các tài liệu XML từ các ứng dụng XML khác nhau. Người dùng hoặc ứng dụng XML sẽ không biết cách xử lý những khác biệt này. Xung đột tên trong XML có thể dễ dàng tránh được bằng cách sử dụng tiền tố tên. Khi sử dụng tiền tố trong XML, phải xác định không gian tên cho tiền tố. Không gian tên có thể được xác định bởi thuộc tính xmlns trong thẻ bắt đầu của một phần tử. Khai báo không gian tên có cú pháp sau. xmlns: tiền tố = "URI".


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

Đây là hình thức của xmlns: android = "@ + / id". Bây giờ để giới thiệu nó, chúng tôi sử dụng ví dụ

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

Một xmlns khác là

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

ở dạng xmlns: app = "@ + / id" và việc sử dụng nó được đưa ra dưới đây

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

2

Tôi nghĩ rằng nó rõ ràng với không gian tên, vì chúng ta có thể tạo các thuộc tính của riêng mình và nếu thuộc tính do người dùng chỉ định giống với Android, nó sẽ tránh xung đột của không gian tên.


2

xmlns: android Đây là thẻ bắt đầu để xác định không gian tên Android trong Android. Đây là quy ước standerd được xác định bởi nhà phát triển google google. khi bạn đang sử dụng và bố trí mặc định hoặc theo yêu cầu, thì phải sử dụng không gian tên này.

Xác định không gian tên Android. Thuộc tính này phải luôn được đặt thành " http://schemas.android.com/apk/res/android ".

Từ các <manifes>tài liệu yếu tố .


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

xmlns : là không gian tên xml và URL: " http://schemas.android.com/apk/res/android " không là gì ngoài

XSD là [định nghĩa lược đồ XML]: được sử dụng xác định quy tắc cho tệp XML.

Thí dụ :

<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> 

Hãy để tôi giải thích các loại quy tắc? .

  1. Trong tệp XML ở trên, chúng tôi đã xác định layout_creen cho bố cục của chúng tôi bây giờ NẾU bạn sẽ xác định cùng một thuộc tính lần thứ hai, bạn sẽ gặp lỗi.
  2. EditText có ở đó nhưng nếu bạn muốn thêm một EditText khác thì không vấn đề gì.

Loại quy tắc như vậy được định nghĩa trong XML XSD: " http://schemas.android.com/apk/res/android "

hơi muộn nhưng tôi hy vọng điều này sẽ giúp bạn


0

Đó là một khai báo không gian tên XML để chỉ định rằng các thuộc tính nằm trong nhóm khung nhìn mà nó được giảm tốc có liên quan đến Android.


vui lòng giải thích thêm
Pramod S. Nikam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.