URI格式與XML的關(guān)系
表示指定的 URI,要使用涵蓋全部必要信息的絕對(duì) URI、絕對(duì) URL 以及相對(duì) URL。相對(duì) URL,是指從瀏覽器中基本 URI 處指定的 URL,形如 /image/logo.gif。URI格式由URI協(xié)議名(例如http、ftp、mailto、file),一個(gè)冒號(hào),和協(xié)議對(duì)應(yīng)的內(nèi)容所構(gòu)成。特定的協(xié)議定義了協(xié)議內(nèi)容的語(yǔ)法和語(yǔ)義,而所有的協(xié)議都必須遵循一定的URI文法通用規(guī)則,亦即為某些專(zhuān)門(mén)目的保留部分特殊字符。URI文法同時(shí)也就各種原因?qū)f(xié)議內(nèi)容加以其他的限制,例如,保證各種分層協(xié)議之間的協(xié)同性。百分號(hào)編碼也為URI提供附加信息。URL的格式由下列三部分組成:,第一部分是協(xié)議(或稱(chēng)為服務(wù)方式);第二部分是存有該資源的主機(jī)IP地址(有時(shí)也包括端口號(hào));第三部分是主機(jī)資源的具體地址。具體URI的格式如下:[協(xié)議名]://[用戶(hù)名]:[密碼]@[服務(wù)器地址]:[服務(wù)器端口號(hào)]/[路徑]?[查詢(xún)字符串]#[片段ID]。
服務(wù)器地址使用絕對(duì) URI 必須指定待訪(fǎng)問(wèn)的服務(wù)器地址。地址可以是類(lèi)似 hackr.jp 這種 DNS 可解析的名稱(chēng),或是 192.168.1.1 這類(lèi) IPv4 地址 名,還可以是 [0:0:0:0:0:0:0:1] 這樣用方括號(hào)括起來(lái)的 IPv6 地址名。
服務(wù)器端口號(hào)指定服務(wù)器連接的網(wǎng)絡(luò)端口號(hào)。此項(xiàng)也是可選項(xiàng),若用戶(hù)省略則自動(dòng)使用默認(rèn)端口號(hào)。
帶層次的文件路徑指定服務(wù)器上的文件路徑來(lái)定位特指的資源。這與 UNIX 系統(tǒng)的文件目錄結(jié)構(gòu)相似。
查詢(xún)字符串針對(duì)已指定的文件路徑內(nèi)的資源,可以使用查詢(xún)字符串傳入任意參數(shù)。此項(xiàng)可選。
片段標(biāo)識(shí)符使用片段標(biāo)識(shí)符通??蓸?biāo)記出已獲取資源中的子資源(文檔內(nèi)的某個(gè)位置)。但在 RFC 中并沒(méi)有明確規(guī)定其使用方法。該項(xiàng)也為可選項(xiàng)。
XML擁有一個(gè)叫命名空間的,一個(gè)可包含元素集和屬性名稱(chēng)的抽象域的概念。命名空間的名稱(chēng)(一個(gè)必須遵守通用URI文法的字符串)用于標(biāo)識(shí)一個(gè)XML命名空間。但是,命名空間的名稱(chēng)一般不被認(rèn)為是一個(gè)URI,因?yàn)閁RI規(guī)范定義了字符串的“URI性”是根據(jù)其目的而不是其詞法組成決定的。一個(gè)命名空間名稱(chēng)同時(shí)也并不一定暗示任何URI協(xié)議的語(yǔ)義;例如,一個(gè)以”http:”開(kāi)頭的命名空間名稱(chēng)很可能與HTTP協(xié)議沒(méi)有任何關(guān)系。XML專(zhuān)家們就這一問(wèn)題在XML開(kāi)發(fā)電子郵件列表上進(jìn)行了深入的辯論;一部分人認(rèn)為命名空間名稱(chēng)可以是URI,由于包含一個(gè)具體命名空間的名稱(chēng)集可以被看作是一個(gè)被標(biāo)識(shí)的資源,也由于“XML中的命名空間”規(guī)范的一個(gè)版本指出過(guò)命名空間名稱(chēng)“是”一個(gè)URI引用。但是,集體共識(shí)似乎指出一個(gè)命名空間名稱(chēng)只是一個(gè)湊巧看起來(lái)像URI的字符串,僅此而已。早先,命名空間名稱(chēng)是可以匹配任何非空URI引用的語(yǔ)法的,但后來(lái)的一個(gè)對(duì)于“XML命名空間建議”的訂正廢棄了相對(duì)URI引用的使用。一個(gè)獨(dú)立的、針對(duì)XML 1.1的命名空間的規(guī)范允許使用IRI引用作為命名空間名稱(chēng)的基準(zhǔn),而不僅是URI引用。為了消除XML新人中產(chǎn)生的對(duì)于URI(尤其是HTTP URL)的使用的困惑,一個(gè)被稱(chēng)為RDDL(資源目錄描述語(yǔ)言)的描述語(yǔ)言被建立了,雖然RDDL的規(guī)范并沒(méi)有正式地位,也并沒(méi)有獲得任何相關(guān)組織(例如W3C)的檢查和支持。一個(gè)RDDL文檔可以提供關(guān)于一個(gè)特定命名空間和使用它的XML文檔的,機(jī)器與人類(lèi)都能讀懂的信息。XML文檔的作者鼓勵(lì)使用RDDL文檔,這樣一旦文檔中的命名空間名稱(chēng)被索引,(系統(tǒng))就會(huì)取得一個(gè)RDDL文檔。這樣,許多開(kāi)發(fā)者對(duì)于讓命名空間名稱(chēng)指向網(wǎng)絡(luò)可達(dá)資源的需求就能得到滿(mǎn)足。