Theo ý hiểu
Đầu tiên, thì một tài liệu xml sẽ bao gồm nhiều elements bên trong nó, element thì có các attributes.
xmlns viết tắt của xml namespace, mục đích đặt namespace để tránh xung đột tên (với những element cùng loại nhưng khác cấu trúc).
VD cùng element <bean>
, bạn khai báo 2 thể loại với cấu trúc khác nhau:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="suffix" value=".jsp" />
</bean>
<!--and-->
<bean className="org.springframework.web.servlet.view.InternalResourceViewResolver">
<attribute fname="suffix" view=".jsp"/>
</bean>
thì, XML parser hoặc cơ chế xử lý XML sẽ ko xử lý được.
Để khai báo namespace cho 1 element dùng cấu trúc: xmlns:prefix="URI"
. Khai báo default namespace xmlns="namespaceURI"
.
cụ thể, xmlns="http://www.springframework.org/schema/beans"
có nghĩa là tất cả bean bạn khai báo đều có namespace là "http://www.springframework.org/schema/beans"
, thay vì khai báo namespace prefix là "http://www.springframework.org/schema/beans"
cho tất cả child element thì bạn dùng default.
Ý nghĩa thứ 2 là sử dụng lại định nghĩa beans sẵn có của spring. Nghĩa là trong beans element, bạn hoàn toàn có thể khai báo bean với namespace khác, nhưng bạn sẽ khai báo một thứ hoàn toàn khác spring bean hoặc định nghĩa lại 1 thứ đã có sẵn.
xmlns:xsi
và xsi:schemaLocation
thì liên quan tới schema instance (XML Schema Instance viết tắt xsi). Ngắn gọn thì schema định nghĩa cấu trúc của một tài liệu xml.
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
: định nghĩa cấu trúc xml chuẩn như syntax, rule, element gì gì đấy, dùng chung cho mọi tài liệu xml
-
xsi:schemaLocation
: cấu trúc gồm 2 phần, phần đầu là namespace, phần 2 là uri refer tới tài liệu schema được sử dụng. Spring dùng xsd schema, bạn bấm vào đường link sẽ thấy, muốn hiểu thì học xsd syntax