統(tǒng)一資源標(biāo)志符
與URL和URN的關(guān)系
![統(tǒng)一資源標(biāo)志符](https://imgs0.zupu.cn/news/2020/10/19/374/02c395a9-67c2-4649-bbc8-7a94d38bb8cf.jpg)
URL方案分類(lèi)圖。URL(定位符)和URN(名稱(chēng))方案屬于URI的子類(lèi),URI可以為URL或URN兩者之一或同時(shí)是URI和URN。技術(shù)上講,URL和URN屬于資源ID;但是,人們往往無(wú)法將某種方案歸類(lèi)于兩者中的某一個(gè):所有的URI都可被作為名稱(chēng)看待,而某些方案同時(shí)體現(xiàn)了兩者中的不同部分。
URI可被視為定位符(URL),名稱(chēng)(URN)或兩者兼?zhèn)洹=y(tǒng)一資源名(URN)如同一個(gè)人的名稱(chēng),而統(tǒng)一資源定位符(URL)代表一個(gè)人的住址。換言之,URN定義某事物的身份,而URL提供查找該事物的方法。
用于標(biāo)識(shí)唯一書(shū)目的ISBN系統(tǒng)是一個(gè)典型的URN使用范例。例如,ISBN 0-486-27557-4(urn:isbn:0-486-27557-4)無(wú)二義性地標(biāo)識(shí)出莎士比亞的戲劇《羅密歐與朱麗葉》的某一特定版本。為獲得該資源并閱讀該書(shū),人們需要它的位置,也就是一個(gè)URL地址。在類(lèi)Unix操作系統(tǒng)中,一個(gè)典型的URL地址可能是一個(gè)文件目錄,例如fileername/RomeoAndJuliet.pdf。該URL標(biāo)識(shí)出存儲(chǔ)于本地硬盤(pán)中的電子書(shū)文件。因此,URL和URN有著互補(bǔ)的作用。
技術(shù)觀點(diǎn)
URL是一種URI,它標(biāo)識(shí)一個(gè)互聯(lián)網(wǎng)資源,并指定對(duì)其進(jìn)行操作或獲取該資源的方法??赡芡ㄟ^(guò)對(duì)主要訪問(wèn)手段的描述,也可能通過(guò)網(wǎng)絡(luò)“位置”進(jìn)行標(biāo)識(shí)。例如,/這個(gè)URL,標(biāo)識(shí)一個(gè)特定資源(首頁(yè))并表示該資源的某種形式(例如以編碼字符表示的,首頁(yè)的HTML代碼)是可以通過(guò)HTTP協(xié)議從www.wikipedia.org這個(gè)網(wǎng)絡(luò)主機(jī)獲得的。URN是基于某命名空間通過(guò)名稱(chēng)指定資源的URI。人們可以通過(guò)URN來(lái)指出某個(gè)資源,而無(wú)需指出其位置和獲得方式。資源無(wú)需是基于互聯(lián)網(wǎng)的。例如,URNurn:isbn:0-395-36341-1指定標(biāo)識(shí)系統(tǒng)(即國(guó)際標(biāo)準(zhǔn)書(shū)號(hào)ISBN)和某資源在該系統(tǒng)中的唯一表示的URI。它可以允許人們?cè)诓恢赋銎湮恢煤瞳@得方式的情況下談?wù)撨@本書(shū)。
技術(shù)刊物,特別是IETF和W3C發(fā)布的標(biāo)準(zhǔn)中,通常不再使用“URL”這一術(shù)語(yǔ),因?yàn)楹苌傩枰獏^(qū)別URL和URI。 但是,在非技術(shù)文獻(xiàn)和萬(wàn)維網(wǎng)軟件中,URL這一術(shù)語(yǔ)仍被廣泛使用。此外,術(shù)語(yǔ)“網(wǎng)址”(沒(méi)有正式定義)在非技術(shù)文獻(xiàn)中時(shí)常作為URL或URI的同義詞出現(xiàn),雖然往往其指代的只是“http”和“https”協(xié)議。
RFC 3305
關(guān)于URI的討論多源于題目為《W3C/IETF URI規(guī)劃聯(lián)合小組報(bào)告:統(tǒng)一標(biāo)識(shí)資源符(URI),URL和統(tǒng)一資源名(URN):闡明與建議》的RFC3305文件。這一RFC文件描述了一個(gè),以統(tǒng)一W3C和IETF內(nèi)部對(duì)于各種“UR*”術(shù)語(yǔ)之間關(guān)系的不同看法為目的而設(shè)立的,W3C/IETF聯(lián)合工作小組的工作。雖然未作為標(biāo)準(zhǔn)被這兩個(gè)組織所發(fā)布,但該文件確立了上述種種共識(shí),并就此催生了許多標(biāo)準(zhǔn)的誕生。
文法
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提供附加信息。
例子
下圖展示了兩個(gè) URI 例子及它們的組成部分。
歷史
命名、定位與標(biāo)識(shí)資源
URI與URL有著共同的歷史。在1990年,蒂姆·伯納斯-李的關(guān)于超文本的提案 間接地引入了使用URL作為一個(gè)表示超鏈接目標(biāo)資源的短字符串的概念。當(dāng)時(shí),人們稱(chēng)之為“超文本名” 或“文檔名”。
在之后的三年半中,由于萬(wàn)維網(wǎng)的HTML(超文本標(biāo)記語(yǔ)言)核心技術(shù)、HTTP與瀏覽器都得到了發(fā)展,區(qū)別提供資源訪問(wèn)和資源標(biāo)記的兩種字符串的必要性開(kāi)始顯現(xiàn)。雖然其時(shí)尚未被正式定義,但“統(tǒng)一資源定位符”這一術(shù)語(yǔ)開(kāi)始被用于代表前者,而后者則由“統(tǒng)一資源名稱(chēng)”所表示。
在關(guān)于定義URL和URN的爭(zhēng)論中,人們注意到兩者事實(shí)上基于同一個(gè)基礎(chǔ)的“資源標(biāo)識(shí)”的概念。在1994年6月,IETF發(fā)布了Berners-Lee的RFC 1630,(非正式地)指出了URL和URN的存在,并進(jìn)一步定義了“通用資源標(biāo)識(shí)符”——語(yǔ)義和語(yǔ)法由具體協(xié)議規(guī)定的類(lèi)URL字符串的規(guī)范文法。此外,該RFC文檔亦嘗試定義了其時(shí)正被使用著的URL協(xié)議的文法,同時(shí)指出(但并未標(biāo)準(zhǔn)化)了相對(duì)URL和片段標(biāo)識(shí)符的存在。
標(biāo)準(zhǔn)改良
1994年12月,RFC 1738 正式定義了絕對(duì)和相對(duì)URL,改進(jìn)了URL文法,定義了如何解析URL為絕對(duì)形式,并更加完善地列舉了其時(shí)正處于使用中的URL協(xié)議。而URN定義和文法直到1997年5月RFC 2141公布后才正式統(tǒng)一。
1998年8月,隨著RFC 2396的發(fā)表,URI文法形成了獨(dú)立的標(biāo)準(zhǔn) ,同時(shí)RFC 1630和1738中關(guān)于URI和URL的許多部分也得到了修訂和增補(bǔ)。。新RFC修改了“URI”中“U”的含義:它開(kāi)始代表統(tǒng)一(Uniform)而不再是通用(Universal)。RFC 1738中總結(jié)了既存URL協(xié)議的部分被移至另外一篇獨(dú)立文檔中。 IANA保留著這些協(xié)議的注冊(cè)信息 ,而RFC 2717首次描述了注冊(cè)它們的流程。
在1999年12月,RFC 2732對(duì)RFC 2396進(jìn)行了小幅更新,開(kāi)始允許URI包括IPv6地址。一段時(shí)間以后,在兩個(gè)標(biāo)準(zhǔn)中暴露出的一些問(wèn)題促使了一系列的修訂草案的發(fā)展,這些草案被統(tǒng)稱(chēng)為rfc2396bis。這一由RFC 2396的共同作者Roy Fielding引導(dǎo)協(xié)調(diào)的集體努力,由2005年1月RFC 3986的發(fā)布推至了頂峰。該RFC文檔成為了現(xiàn)今(2009年)于互聯(lián)網(wǎng)上被推薦使用的URI文法版本,并使得RFC 2396成為了歷史。然而,它卻并未替代現(xiàn)有的URL協(xié)議細(xì)節(jié);RFC 1738繼續(xù)管轄著大多數(shù)協(xié)議,除了某些已被它取而代之的場(chǎng)合——例如被RFC 2616改良的”HTTP”協(xié)議等。與此同時(shí),IETF發(fā)布了RFC 3986,亦即完整的STD 66標(biāo)準(zhǔn),標(biāo)識(shí)著URI通用文法正式成官方因特網(wǎng)協(xié)議。
在2002年8月,RFC 3305指出,雖然術(shù)語(yǔ)“URL”仍被廣泛地用于日常用語(yǔ)之中,但其本身已幾乎被廢棄。其現(xiàn)在的功用,僅是作為對(duì)于某些URI因包含某種指示著網(wǎng)絡(luò)可達(dá)性的協(xié)議而作為地址存在的提醒而已?;赨RI的眾多標(biāo)準(zhǔn),例如資源描述框架等,已經(jīng)清楚地表明,資源標(biāo)識(shí)本無(wú)需指出通過(guò)互聯(lián)網(wǎng)獲得資源副本的方法,亦無(wú)須指出資源是否基于網(wǎng)絡(luò)。
URI引用
另一種類(lèi)型的字符串——“URI引用”——代表一個(gè)URI并(相應(yīng)地)代表被該URI所標(biāo)識(shí)的資源。非正式使用中,URI和URI引用的區(qū)別少有被提及,但協(xié)議文檔自然不應(yīng)允許歧義的存在。
URI引用可取用的格式包括完整URI,URI中協(xié)議特定的部分,或其后附部分——甚至是空字符串。一個(gè)可選的片段標(biāo)識(shí)符以#開(kāi)頭,可出現(xiàn)在URI引用的結(jié)尾。引用中,#之前的部分間接標(biāo)識(shí)一個(gè)資源,而片段標(biāo)識(shí)符則標(biāo)識(shí)資源的某個(gè)部分。
為從URI引用獲得URI,軟件將URI引用與一個(gè)絕對(duì)“基址”基于一個(gè)固定算法合并,并轉(zhuǎn)換為“絕對(duì)”形式。系統(tǒng)將URI引用視作相對(duì)于基址URI,雖然在絕對(duì)引用的情況下基址并無(wú)意義?;稶RI一般標(biāo)識(shí)包含URI引用的文檔,但仍可被文檔內(nèi)包含的聲明,或外部數(shù)據(jù)傳輸協(xié)議所包括的聲明改寫(xiě)。若基址URI包括一個(gè)片段標(biāo)識(shí)符,則該標(biāo)識(shí)符在合并過(guò)程中被忽略。如果在URI引用現(xiàn)片段標(biāo)識(shí)符,則在合并過(guò)程中被保留。
網(wǎng)絡(luò)文檔標(biāo)記語(yǔ)言時(shí)常使用URI引用指向其它資源,如外部文檔或同一邏輯文檔的其他部分等。
標(biāo)記語(yǔ)言中URI引用的使用
在HTML中, img 元素的 src 屬性值是URI引用, a 或 link 元素的 href 屬性值亦如是。
在XML中,在一個(gè)DTD中的 SYSTEM 關(guān)鍵字之后出現(xiàn)的系統(tǒng)描述符是一個(gè)無(wú)片段的URI引用。
在XSLT中, xsl:import 元素/指令的 href 屬性值是一個(gè)URI引用, document() 函數(shù)的第一個(gè)參數(shù)與之相仿。
絕對(duì)URI的例子
source.txt
ftpsource.txt
urn:issn:1535-3613
URI引用的例子
/wiki/URI#Examples_of_URI_references (" http " 指定協(xié)議名, " en.wikipedia.org "是“典據(jù)”, " /wiki/URI "是指向英文維基頁(yè)面的“路徑”,而" #Examples_of_URI_references "是指向英文維基頁(yè)面相應(yīng)片段的“片段”。)
source.txt
//example.org/scheme-relative/URI/with/absolute/path/to/resource.txt
/relative/URI/with/absolute/path/to/resource.txt
relative/path/to/resource.txt
../../../resource.txt
./resource.txt#frag01
resource.txt
#frag01
(空字符串)
URI解析
“解析”一個(gè)URI意味著將一個(gè)相對(duì)URI引用轉(zhuǎn)換為絕對(duì)形式,或者通過(guò)嘗試獲取一個(gè)可解引URI或一個(gè)URI引用所代表的資源來(lái)解引用這個(gè)URI。文檔處理軟件的“解析”部分通常同時(shí)提供這兩種功能。
一個(gè)URI引用可以是一個(gè)同文檔引用:一個(gè)指向包含URI引用自身的文檔的引用。文檔處理軟件可有效地使用其當(dāng)前的文檔資源來(lái)完成對(duì)于同文檔引用的解析而不需要重新獲取一份資源。這只是一個(gè)建議——文檔處理軟件自然可以選用另外的方法來(lái)決定是否獲取新資源。
當(dāng)前截至2009 年 ( 2009 -Missing required parameter 1= month ! ) 的URI規(guī)范,RFC 3986,將一個(gè)同文檔引用的URI定義為“當(dāng)解析為絕對(duì)形式時(shí)與引用的基文檔地址完全一致的文檔”。一般來(lái)說(shuō),基文檔URI就是包含引用的文檔的URI。例如,XSLT 1.0包括 document() 函數(shù)以實(shí)現(xiàn)這一功能。RFC 3986同時(shí)也正式定義了URI等效性,一個(gè)可以被用來(lái)判斷一個(gè)與基URI不同的URI是否表示同一個(gè)資源,并因此可以被認(rèn)為是同文檔引用。
RFC 2396給出了一個(gè)不同的判斷同文檔引用的方法;RFC 3986替代了RFC 2396,但RFC 2396仍舊作為許多規(guī)范和實(shí)現(xiàn)的基礎(chǔ)而存在。這一規(guī)范將一個(gè)空字符串或僅包括#字符和可選的片段標(biāo)識(shí)符組成的URI引用定義為同文檔引用。
與XML命名空間的關(guān)系
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ǔ)言被創(chuàng)建了,雖然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á)資源的需求就能得到滿足。
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫(xiě)的作者,感謝每一位的分享。
![](https://imgs1.zupu.cn/static/web/img/toplogin.png)
相關(guān)資料
![](https://imgs0.zupu.cn/photos/common/20210831/36a51b47-97ba-403b-9d73-1089700f3c78.png)
- 有價(jià)值
- 一般般
- 沒(méi)價(jià)值
![](https://imgs0.zupu.cn/photos/common/20210831/5f77025c-05aa-4528-8ff4-390397a5720d.png)
![](https://imgs0.zupu.cn/photos/common/20210831/fc60bb85-0172-4554-b1b5-84e226beefd2.png)
![](https://imgs0.zupu.cn/photos/common/20210831/77b1b221-2263-4a50-a438-3fe70c458147.png)
![](https://imgs0.zupu.cn/photos/common/20210901/bf46d3b7-c6b5-4a58-ae45-919cadfc8f58.png)
![](https://imgs0.zupu.cn/photos/common/20210903/71ed74ca-9551-4d33-913e-aed4f1956e48.jpg)
![](https://imgs0.zupu.cn/photos/common/20210901/bf46d3b7-c6b5-4a58-ae45-919cadfc8f58.png)
![](https://imgs0.zupu.cn/photos/common/20210901/106cf47a-2bf9-43b3-8b6f-76bb2958edd9.png)
![](https://imgs0.zupu.cn/photos/common/20210903/71ed74ca-9551-4d33-913e-aed4f1956e48.jpg)
24小時(shí)熱門(mén)
推薦閱讀
![](https://imgs0.zupu.cn/news/2020/10/19/870/d4cdd30f-523f-4f1e-a510-2a5664189de8.jpg)
![](https://imgs0.zupu.cn/news/2020/10/19/976/17246b3f-91ea-4b92-a38c-f540200825b8.jpg)
知識(shí)互答
關(guān)于我們
![](https://imgs0.zupu.cn/photos/common/20210901/fc6ee093-f219-47fc-90da-21bd9721b53d.jpg)
APP下載
![](https://imgs0.zupu.cn/photos/common/20210901/ea3c7971-1e11-4045-b81c-880d962d4986.png)
![](https://imgs0.zupu.cn/photos/common/20201105/f86bb195-6306-4041-b306-d17003e00182.png)
{{item.time}} {{item.replyListShow ? '收起' : '展開(kāi)'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.time}}