URI
URI(uniform resource identifier)在计算机术语中,是以一种用来标识在某一互联网上的资源字符串。这种标识允许用户对万维网中的资源通过某一特定的协议进行交互的操作。URI的定义是由包括确定的语法和相关协议的方案决定。网络上可以利用的每一种资源,如:图像、视屏片段、HTML文档、程序等都是由这个通用资源标识符来进行准确定位。URI文法由URI协议名(例如“http”,“ftp”,“mailto”或“file”),一个冒号,和协议对应的内容所构成。特定的协议定义了协议内容的语法和语义,而所有的协议都必须遵循一定的URI文法通用规则,亦即为某些专门目的保留部分特殊字符。URI文法同时也就各种原因对协议内容加以其他的限制,例如,保证各种分层协议之间的协同性。百分号编码也为URI提供附加信息。
URI的组成[ ]
- 存放资源的主机名。
标示资源自身的名称,由路径表示。下面的URI表示了当前的HTML4.0的规范: http://www.webmonkey.com.cn/html/html40/
这是一个可通过HTTP协议访问的资源,位于主机www.webmonkey.com.cn上,通过路径“/html/html40”访问。在HTML文档中其它资源包括"mailto"(收发email)和"ftp"(FTP访问)。
URI的另一个例子,指向一个用户的邮箱:mailto:joe@someplace.com
URL是URI命名机制的一个子集。
- 片段标志符
有的URI只是指向一个资源的内部。这种URI以"#"结束,并跟着一个anchor标志符(称为片段标志符)。例如,下面是一个指向section_2的URI: http://somesite.com/html/top.htm#section_2
- 相对URI
相对URI不包含任何命名规范信息。它的路径通常指同一台机器上的资源。相对URI可能含有相对路径(如,“..”表示上一层路径),还可能包含片段标志符。
顾名思义我们知道,相对URI是针对在路径通常指向同一台机器上的资源地址,它不包含任何命名规范信息。当然相对URI也就很有可能对应着相对路径的概念,通常用“..”来进行标识,也有可能包含片段标志符。
当我们有了一个基本的URI地址之后,如:http://www.zzbaike.com/index.php 就如下面的相对地址:admin , 把它扩展成为完整的URI地址就是:http://www.zzbaike.com/admin.php
再举一个图片地址的例子:<IMG src="../icons/logo.jpg" alt="logo"> ,把它扩展成为完全的URI就是:http://www.zzbaike.com/mainpage/images/logo.jpg
URI在HTML中的作用[ ]
在HTML中,URI通常被用来完成以下工作:
- 链接到另一个文档或资源,通常用A和LINK元素来实现。
- 链接到一个外部样式表或脚本,通常用LINK和SCRIPT元素来实现。
- 在页内包含图像、对象或applet,通常用IMAG、OBJECT、APPLET和INPUT元素来实现。
- 提交一个表单,通常用FORM标签来实现。
- 建立图像映射,通常用MAP和AREA元素来实现。
- 建立一个框架文档,通常用FRAME和IFRAME元素来实现。
- 引用一个外部参考,通常用Q、BLOCKQUOTE, INS和DEL元素来实现。
- 指向一个描述文档的metadata,通常在HEAD元素里实现。
URI的使用[ ]
URL是Uniform Resource Location的缩写,译为“统一资源定位符”。通俗地说主要用在各种WWW客户程序和服务器程序上来描述资源信息,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
- URL的格式
URL的格式主要是由下列三部分组成:
第一部分是协议(或称为服务方式);
第三部分是主机资源的具体地址。,如目录和文件名等。
第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/”符号隔开。第一部分和第二部分是不可缺少的,第三部分有时可以省略。
- URL示例
- 文件的URL:
用URL表示文件时,服务器方式用file表示,后面要有主机IP地址、文件的存取路径(即目录)和文件名等信息。有时可以省略目录和文件名,但“/”符号不能省略。
- 网络新闻的URL:
利用URL表示网络新闻组时,如果是usenet的话只要指定出新闻组的名字即可。例如:news:rec.baike 表示usenet上的rec.baike新闻组(百科)。
- HTTP的URL:
使用超级文本传输协议HTTP,提供超级文本信息服务的资源。
例一: http://www.peopledaily避开[[百度]].com.避开百度cn/channel/welcome.htm
其计算机域名为www.peopledaily.避开百度com.避开百度cn。超级文本文件(文件类型为.html)是在目录/channel下的welcome.htm。这是中国人民日报的一台计算机。
URI的引用[ ]
- 标记语言中URI引用的使用
- 在HTML中,img元素的src属性值是URI引用,a或link元素的href属性值亦如是。
- 在XML中,在一个DTD中的SYSTEM关键字之后出现的系统描述符是一个无片段的URI引用。
- 在XSLT中,xsl:import元素/指令的href属性值是一个URI引用,document()函数的第一个参数与之相仿。
- 绝对URI的例子
- http://example.org/absolute/URI/with/absolute/path/to/zzbaike.txt
- ftp://example.org/zzbaike.txt
- urn:issn:1535-3613
- URI引用的例子
- http://en.wikipedia.org/wiki/URI#Examples_of_URI_references ("http" 指定协议名, "en.wikipedia.org"是“典据”, "/wiki/URI"是指向英文维基页面的“路径”,而"#Examples_of_URI_references"是指向英文维基页面相应片段的“片段”。)
- http://example.org/absolute/URI/with/absolute/path/to/[[zzbaike]].txt
- //example.org/scheme-relative/URI/with/absolute/path/to/zzbaike.txt
- /relative/URI/with/absolute/path/to/zzbaike.txt
- relative/path/to/zzbaike.txt
- ../../../zzbaike.txt
- ./zzbaike.txt#frag01
- zzbaike.txt
- #frag01
- (空字符串)
URI的解析[ ]
- “解析”一个URI意味着将一个相对URI引用转换为绝对形式,或者通过尝试获取一个可解引URI或一个URI引用所代表的资源来解引用这个URI。文档处理软件的“解析”部分通常同时提供这两种功能。
- 一个URI引用可以是一个同文档引用:一个指向包含URI引用自身的文档的引用。文档处理软件可有效地使用其当前的文档资源来完成对于同文档引用的解析而不需要重新取得一份资源。这只是一个建议——文档处理软件自然可以选用另外的方法来决定是否获取新资源。
- 当前截至[update]的URI规范,RFC 3986,将一个同文档引用的URI定义为“当解析为绝对形式时与引用的基文档地址完全一致的文档”。一般来说,基文档URI就是包含引用的文档的URI。例如,XSLT 1.0包括document()函数以实现这一功能。RFC 3986同时也正式定义了URI等效性,一个可以被用来判断一个与基URI不同的URI是否表示同一个资源,并因此可以被认为是同文档引用。
- RFC 2396给出了一个不同的判断同文档引用的方法;RFC 3986替代了RFC 2396,但RFC 2396仍旧作为许多规范和实现的基础而存在。这一规范将一个空字符串或仅包括#字符和可选的片段标识符组成的URI引用定义为同文档引用。
URI与URL、URN的关系[ ]
- 概念比较
URI:Uniform Resource Identifier,统一资源标识符;
URL:Uniform Resource Locator,统一资源定位符;
URN:Uniform Resource Name,统一资源名称。
其中,URL,URN是URI的子集。
- Web上地址的基本形式URI,有两种形式代表统一资源标识符:
URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器。
URN:URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)不依赖于位置,并且有可能减少失效连接的个数。相比之下它需要更精密软件的支持。
- URI是以某种统一的方式标识资源的简单字符串
语法如下:[scheme:] scheme-specific-part
URI以scheme和冒号开头。Scheme用大写/小写字母开头,后面为空或者跟着更多的大写/小写字母、数字、加号、减号和点号。冒号把scheme与scheme-specific-part分开了,并且scheme-specific-part的语法和语义(意思)由URI的名字空间决定。
- 另外,URI有绝对和相对之分,绝对的URI指以“scheme:”开头的URI。前面提到的http://www.cnn避开百度.com就是绝对的URI的一个例子,其它的例子还有mailto:jeff@j避开百度avajeff避开百度.com、news避开百度:comp.lang避开百度.java.help和xyz://whatever。 你可以把绝对的URI看作是以某种方式引用某种资源,而这种方式对标识符出现的环境没有依赖。如果使用文件系统作类比,绝对的URI类似于从根目录开始的某个文件的径。
- 与绝对的URI不同的,相对的URI不是以“scheme:”开始的URI。 它的一个例子是articles/articles.html。可以把相对的URI看作是以某种方式引用某种资源,而这种方式依赖于标识符出现的环境。如果用文件系统作类比,相对的URI类似于从当前目录开始的文件路径。
- URL是Uniform Resource Location的缩写,译为"统一资源定位符"。通俗地说,URL是Internet上用来描述信息资源的字符串,主要用在各种WWW客户程序和服务器程序上,特别是著名的Mosaic。采用URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。
- 目前最大的缺点是当信息资源的存放地点发生变化时,必须对URL作相应的改变。因此人们正在研究新的信息资源表示方法,例如:URI(Universal Resource Identifier)即"通用资源标识"(参见RFC 1630)、URN(Uniform Resource Name)即"统一资源名"和URC(Uniform Resource Citation)即"统一资源引用符"等。
与XML命名空间的关系[ ]
XML拥有一个叫命名空间的一个可包含元素集和属性名称的抽象域的概念。命名空间的名称(一个必须遵守通用URI文法的字符串)用于标识一个XML命名空间。但是,命名空间的名称一般不被认为是一个URI,因为URI规范定义了字符串的“URI性”是根据其目的而不是其词法组成决定的。一个命名空间名称同时也并不一定暗示任何URI协议的语义;
例如,一个以”http:”开头的命名空间名称很可能与HTTP协议没有任何关系。XML专家们就这一问题在XML开发电子邮件列表上进行了深入的辩论;
一部分人认为命名空间名称可以是URI,由于包含一个具体命名空间的名称集可以被看作是一个被标识的资源,也由于“XML中的命名空间”规范的一个版本指出过命名空间名称“是”一个URI引用。但是,集体共识似乎指出一个命名空间名称只是一个凑巧看起来像URI的字符串,仅此而已。