文章摘自:https://yq.aliyun.com/articles/40353
http://www.cnblogs.com/zhao1949/p/5652167.html
參照教程:http://www.yiibai.com/xml/xml_dtds.html(易百教程)
前部分為原文引用,后部分為個(gè)人項(xiàng)目引例作為補(bǔ)充。
引用開始:
相信很多人和我一樣,在編寫Spring或者M(jìn)aven或者其他需要用到XML文檔的程序時(shí),通常都是將這些XML文檔頭拷貝過來,并沒有理解其中元素(比如xmlns,xmlns:xsi,xsi:schemaLocation)的真正含義,不知道哪些元素是多余的,也不知道為什么要加那些元素。這樣當(dāng)有時(shí)候網(wǎng)上Copy的XML頭有錯(cuò)的時(shí)候自己卻不知道怎么下手。我也是這樣的,于是今天花了點(diǎn)時(shí)間好好的理解了一下這些元素及其用法,現(xiàn)整理與此,在此謝謝各位前輩的經(jīng)驗(yàn),如有總結(jié)的不對(duì)或者不好的地方,歡迎留言提出各位的寶貴意見。
話不多說,先來一段Spring的XML樣本,相信大家都很眼熟:
這個(gè)文檔中,根元素<beans/>就不用說了,接下來是xmlns。那么什么是xmlns呢?xmlns其實(shí)是XML Namespace的縮寫,可譯為“XML命名空間”,但個(gè)人覺得,翻譯后的名字反而不好理解,所以我們就叫它為XML Namespace吧。
為什么需要xmlns?
考慮這樣兩個(gè)XML文檔:表示HTML表格元素的<table/>:
和描述一張桌子的<table/>:
假如這兩個(gè) XML 文檔被一起使用,由于兩個(gè)文檔都包含帶有不同內(nèi)容和定義的 <table> 元素,就會(huì)發(fā)生命名沖突。XML 解析器是無法確定如何處理這類沖突。為了解決上述問題,xmlns就產(chǎn)生了。