URI
URI -表示一个统一资源标识符 (URI) 引用。
URI 语法和组成部分
在最高级别上,字符串形式的 URI 引用(以下简写为 "URI")语法如下
[scheme:]scheme-specific-part[#fragment]
其中,方括号 [...] 用于描述可选组成部分,字符 : 和 # 代表它们自身。
绝对 URI 指定了方案 (scheme);
非绝对的 URI 称为相对 URI。
URI 还可以根据其是否为不透明的 或分层的进行分类。
不透明 URI 为绝对 URI,其特定于方案的部分不是以斜线字符 ('/') 开始。不透明 URI 无法进行进一步解析。下面是不透明 URI 的一些示例:
mailto:java-net@java.sun.com
news:comp.lang.java
urn:isbn:096139210x
分层 URI 或者为绝对 URI(其特定于方案的部分以斜线字符开始),或者为相对 URI,即不指定方案的 URI。下面是分层 URI 的一些示例:
http://java.sun.com/j2se/1.3/
docs/guide/collections/designfaq.html#28
http://www.cnblogs.com/../demo/jfc/SwingSet2/src/SwingSet2.java
file:///~/calendar
分层 URI 还要按照下面的语法进行进一步的解析
[scheme:][//authority][path][?query][#fragment]
其中,:、/、? 和 # 代表它们自身。分层 URI 的特定于方案的部分包含方案和片段部分之间的字符。
分层 URI 的授权组成部分(如果指定)为基于服务器的 或基于注册表的。基于服务器的授权按照如下众所周知的语法进行解析:
[user-info@]host[:port]
其中,字符 @ 和 : 代表它们自身。几乎当前使用的所有 URI 方案都是基于服务器的。不能采用这种方式解析的授权组成部分被视为基于注册表的。
如果分层 URI 的路径组成部分以斜线字符 ('/') 开始,则称此 URI 本身为绝对的;否则它为相对的。分层 URI 或者为绝对的,或者指定了授权的路径,它始终为绝对的。
URI的解析:
假定基底URI为A,需要解析的为B
如果B是绝对路径,那么解析完后,还是B
如果A,B都是相对路径,那么解析完后,还是B
如果A是绝对路径,B是相对路径,那么:
B有authority,那么只取A的scheme部分即可
B从path部分开始(且以/开头),那么取A的scheme和authority部分
B从path部分开始(不从/开头),那么取A中最右边的/之前的部分(包含/),后面跟上B的内容即可
URI的标准化:
先取得完整的分层URI
对于有/./或者/.的,直接删除之
对于有/../或者/..的,删除它们,并删除直到上一个/为止的全部内容(也就是删除父目录)
进一步学习URI:
http://www.docin.com/p-56501746.html
浙公网安备 33010602011771号