/[suikacvs]/webroot/www/2004/id/draft-ietf-uri-relative-url-01.txt
Suika

Contents of /webroot/www/2004/id/draft-ietf-uri-relative-url-01.txt

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations) (download)
Tue Jun 15 08:04:06 2004 UTC (20 years, 10 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
File MIME type: text/plain
New

1 wakaba 1.1 Uniform Resource Identifiers Working Group R.T. Fielding
2     INTERNET-DRAFT UC Irvine
3     Expires April 28, 1995 October 28, 1994
4    
5    
6     Relative Uniform Resource Locators
7     <draft-ietf-uri-relative-url-01.txt>
8    
9    
10     Status of this Memo
11    
12     This document is an Internet-Draft. Internet-Drafts are working
13     documents of the Internet Engineering Task Force (IETF), its areas,
14     and its working groups. Note that other groups may also distribute
15     working documents as Internet-Drafts.
16    
17     Internet-Drafts are draft documents valid for a maximum of six
18     months and may be updated, replaced, or obsoleted by other
19     documents at any time. It is inappropriate to use Internet-
20     Drafts as reference material or to cite them other than as
21     ``work in progress.''
22    
23     To learn the current status of any Internet-Draft, please check
24     the ``1id-abstracts.txt'' listing contained in the Internet-
25     Drafts Shadow Directories on ds.internic.net (US East Coast),
26     nic.nordu.net (Europe), ftp.isi.edu (US West Coast), or
27     munnari.oz.au (Pacific Rim).
28    
29     Distribution of this document is unlimited. Please send comments
30     to the editor, Roy T. Fielding <fielding@ics.uci.edu>, or to the
31     URI working group (URI-WG) of the Internet Engineering Task Force
32     (IETF) at <uri@bunyip.com>. Discussions of the group are archived at
33     <URL:http://www.acl.lanl.gov/URI/archive/uri-archive.index.html>.
34    
35    
36     Abstract
37    
38     Uniform Resource Locators (URLs) are a compact representation of the
39     location and access method for a resource available via the Internet.
40     When embedded within a base document, a URL in its absolute form may
41     contain a great deal of information which is already known from the
42     context of that base document's retrieval, including the access
43     scheme, network location, and parts of the url-path. In situations
44     where the base URL is well-defined and known to the parser (human or
45     machine), it is useful to be able to embed URL references which
46     inherit that context rather than re-specifying it in every instance.
47     This document defines the syntax and semantics for such Relative
48     Uniform Resource Locators.
49    
50    
51     1. Introduction
52    
53     This work is derived from concepts introduced by the World-Wide Web
54     global information initiative, whose use of such objects dates from
55     1990 and is described in "Universal Resource Identifiers in WWW",
56     RFC 1630 [1]. This document is a companion to the Internet-Draft
57     "Uniform Resource Locators (URL)" [2], which specifies the
58     syntax and semantics of absolute URLs. A URL is "absolute" if it
59     can be interpreted consistently and unambiguously, with global scope,
60     independent of any other URL.
61    
62     This document describes the syntax and semantics for "relative"
63     Uniform Resource Locators (relative URLs): a compact representation
64     of the location and access method for a resource available via the
65     Internet relative to an absolute base URL. The name space of
66     relative URLs is a superset of that defined in [2] for Uniform
67     Resource Locators, in that all absolute URLs can be interpreted
68     consistently relative to any Internet-accessible resource. For the
69     sake of clarity, however, this document will only term "relative"
70     those URLs which obtain global scope only when interpreted relative
71     to a separate base URL.
72    
73     A primary use for Uniform Resource Locators is to embed them within
74     a document (referred to as the "base" document) for the purpose of
75     identifying other Internet-accessible resources. This is
76     particularly true of hypertext documents, where URLs can serve as
77     the identifiers for hypertext link destinations.
78    
79     It is often the case that, where a group or "tree" of documents
80     serves a common purpose, the vast majority of URLs within those
81     documents point to locations within that tree rather than outside
82     of it. Similarly, documents located at a particular Internet site
83     are much more likely to refer to other resources at that site than
84     to resources at remote sites.
85    
86     Absolute URLs contain a great deal of information which may already
87     be known from the context of the base document's retrieval,
88     including the access scheme, network location, and parts of the
89     URL path. In situations where the base URL is well-defined and
90     known to the parser (human or machine), it is useful to be able to
91     embed a URL reference which inherits that context rather than
92     re-specifying it within each instance.
93    
94     In addition to the space saved, relative addressing of URLs allows
95     document trees to be partially independent of their location and/or
96     access scheme. For instance, if they refer to each other using
97     relative URLs, it is possible for a single set of documents to be
98     simultaneously accessible and, if hypertext, traversable via each
99     of the "file", "http", and "ftp" access schemes. Furthermore,
100     document trees can be moved, as a whole, without changing any of
101     the embedded URLs. Experience within the World-Wide Web has
102     demonstrated that the ability to perform relative referencing is
103     necessary for the long-term usability of embedded URLs.
104    
105     2. Relative URL Syntax
106    
107     The syntax for relative URLs is the same as that for absolute URLs
108     [2], with the exception that portions of the URL may be missing, and
109     certain path components ("." and "..") have a special meaning when
110     interpreting a relative URL path. Although this document does not
111     seek to define the overall URL syntax, some discussion of it is
112     necessary in order to describe the parsing of relative URLs.
113    
114     2.1. URL Syntactic Components
115    
116     The relative form relies on a property of the URL syntax that
117     certain characters ("/") and certain path segments ("..", ".") have
118     a significance reserved for representing a hierarchical space.
119     Additional reserved characters are sometimes used to separate the
120     URL path from other components, including object parameters (";"),
121     query information ("?"), and fragment identifiers ("#").
122    
123     Like absolute URLs, relative URL syntax is dependent upon the access
124     scheme. Some schemes use "?" and ";" to indicate special reserved
125     components, while others just consider them to be part of the path.
126     However, there is enough uniformity in the syntax to allow a parser
127     to resolve relative URLs based upon a few syntactic categories.
128     These categories are described in Section 2.3.
129    
130     In general, the relative URL syntax consists of six components:
131    
132     <scheme>://<net_loc>/<path>;<params>?<query>#<fragment>
133    
134     each of which may be absent or may be disallowed by a particular
135     scheme. They are defined as follows (a complete BNF is provided in
136     Section 2.2):
137    
138     scheme ":" ::= access scheme name, as per Section 2.1 of [2].
139    
140     "//" net_loc ::= network location and login information, as per
141     Section 3.1 of [2].
142    
143     "/" path ::= URL path, as per Section 3.1 of [2].
144    
145     ";" params ::= object parameters (e.g. ";type=a" as in
146     Section 3.2.2 of [2]).
147    
148     "?" query ::= query information, as per Section 3.3 of [2].
149    
150     "#" fragment ::= fragment identifier (currently only used within
151     the World-Wide Web initiative).
152    
153     The order of the components is important. If both <params> and
154     <query> are present, the <query> information must occur after the
155     <params>. Relative components are resolved from left-to-right,
156     according to the rules given in Section 4.
157    
158     2.2. BNF for Relative URLs
159    
160     This is a BNF-like description of the Relative Uniform Resource
161     Locator syntax, using the conventions of RFC 822 [7], except that
162     "|" is used to designate alternatives, and brackets "[]" are used
163     around optional or repeated elements. Briefly, literals are quoted
164     with "", optional elements are enclosed in [brackets], and elements
165     may be preceded with <n>* to designate n or more repetitions of the
166     following element; n defaults to 0.
167    
168     Because relative URLs are parsed within the context of the base URL,
169     this BNF is not sufficient to completely specify the allowed syntax
170     within any given context. Section 2.4 describes a context-sensitive
171     parsing algorithm which disambiguates the grammar.
172    
173    
174     relativeURL = [ absoluteURL | location | abs_path | rel_path ]
175     [ "#" fragment ]
176    
177     absoluteURL = scheme ":" [ location | abs_path | rel_path ]
178     location = "//" net_loc [ "/" rel_path ]
179     abs_path = "/" rel_path
180     rel_path = [ path ] [ ";" params ] [ "?" query ]
181    
182     path = segment *[ "/" segment ]
183     segment = *[ pchar | ";" ]
184    
185     params = param *[ ";" param ]
186     param = *[ pchar | "/" ]
187    
188     scheme = 1*[ alpha | digit | "+" | "-" | "." ]
189     net_loc = *[ pchar | ";" ]
190     query = *[ uchar | reserved | "#" ]
191     fragment = *[ uchar | reserved ]
192    
193     pchar = [ uchar | "?" | ":" | "@" | "&" | "=" | "#" ]
194     uchar = unreserved | escape
195     unreserved = alpha | digit | safe | extra | national
196    
197     escape = "%" hex hex
198     hex = digit | "A" | "B" | "C" | "D" | "E" | "F" |
199     "a" | "b" | "c" | "d" | "e" | "f"
200    
201     alpha = lowalpha | hialpha
202     lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |
203     "j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" |
204     "s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
205     hialpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |
206     "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
207     "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"
208    
209     digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
210     "8" | "9"
211    
212     safe = "$" | "-" | "_" | "." | "+"
213     extra = "!" | "*" | "'" | "(" | ")" | ","
214     national = "{" | "}" | "|" | "\" | "^" | "~" | "[" | "]" | "`"
215     reserved = ";" | "/" | "?" | ":" | "@" | "&" | "="
216     punctuation = "<" | ">" | "#" | "%" | <">
217    
218    
219     2.3. Specific Schemes and their Syntactic Categories
220    
221     Each URL access scheme has its own rules regarding the presence or
222     absence of the syntactic components described in Section 2.1 and 2.2.
223     However, there is enough commonality among the schemes to be able
224     to group them into just a few categories. These categories are
225     sufficiently general to allow new schemes to be added without
226     substantial changes to the algorithm for resolving relative URLs.
227    
228     Within this section, we include as examples only those schemes
229     which have a defined URL syntax in [2]. This includes:
230    
231     ftp File Transfer Protocol [3]
232     http Hypertext Transfer Protocol [4]
233     gopher Gopher and Gopher+ Protocols [5, 6]
234     mailto Electronic Mail [7]
235     news USENET news [8]
236     nntp USENET news using NNTP access [9]
237     telnet TELNET Protocol for Interactive Sessions [10]
238     wais Wide Area Information Servers Protocol [11,12]
239     file Host-specific Files
240     prospero Prospero Directory Service [13]
241    
242     It is recommended that new schemes include a description of their
243     membership in the following categories when they are registered,
244     as per Section 4 of [2]. Membership in the five categories is
245     described in terms of named sets: Uses-Netloc, Non-Hierarchical,
246     Uses-Params, Uses-Query, and Uses-Fragment.
247    
248     2.3.1 The Uses-Netloc Set
249    
250     The Uses-Netloc set includes those access schemes which use the
251     Common Internet Scheme Syntax described in Section 3.1 of [2], where
252     the network location and/or login information starts with a
253     double-slash "//" to indicate its presence, and continues until the
254     following slash "/", if any.
255    
256     Uses-Netloc = {ftp, http, gopher, nntp, telnet, wais,
257     file, prospero}
258    
259     2.3.2 The Non-Hierarchical Set
260    
261     The Non-Hierarchical set includes those access schemes which do not
262     use "/" to indicate hierarchical segments in the URL path.
263    
264     Non-Hierarchical = {gopher, wais, mailto, news, telnet, prospero}
265    
266     When resolving relative paths for schemes not in the Non-Hierarchical
267     set, the complete path segments ".." and "." have a significance
268     reserved for representing the path hierarchy, indicating up-one-level
269     and current-level, respectively.
270    
271     2.3.3 The Uses-Params Set
272    
273     The Uses-Params set includes those access schemes which allow the
274     semicolon ";" character to separate object parameters from the
275     URL path. There may be more than one parameter, each being
276     separated by a semicolon ";".
277    
278     Uses-Params = {ftp, http, prospero}
279    
280     2.3.4 The Uses-Query Set
281    
282     The Uses-Query set includes those access schemes which allow the
283     question mark "?" character to separate query information from the
284     URL path.
285    
286     Uses-Query = {http, wais}
287    
288     2.3.5 The Uses-Fragment Set
289    
290     The Uses-Fragment set includes those access schemes which allow the
291     crosshatch "#" character to separate a fragment identifier from
292     the rest of the URL. Within systems that use fragment identifiers,
293    
294     Uses-Fragment = {ftp, http, gopher, news, nntp, wais,
295     file, prospero}
296    
297     Unlike the other sets, however, the fragment identifier is only
298     reserved within systems which use it. Outside of those systems,
299     Uses-Fragment is equal to the empty set.
300    
301     2.3.6. Summary of Categories by Scheme
302    
303     Uses- Non-Hier Uses- Uses- Uses-
304     Netloc archical Params Query Fragment
305     .--------------------------------------------.
306     ftp | XXXX | | XXXX | | XXXX |
307     http | XXXX | | XXXX | XXXX | XXXX |
308     gopher | XXXX | XXXX | | | XXXX |
309     mailto | | XXXX | | | |
310     news | | XXXX | | | XXXX |
311     nntp | XXXX | | | | XXXX |
312     telnet | XXXX | XXXX | | | |
313     wais | XXXX | XXXX | | XXXX | XXXX |
314     file | XXXX | | | | XXXX |
315     prospero | XXXX | XXXX | XXXX | | XXXX |
316     `--------------------------------------------'
317    
318     2.4. Parsing a URL
319    
320     An accepted method for parsing URLs is necessary to disambiguate the
321     relative URL syntax of Section 2.2 and to describe the algorithm for
322     resolving relative URLs presented in Section 4. This section
323     describes the parsing rules for breaking down a URL (relative or
324     absolute) into the component parts described in Section 2.1. The
325     rules assume that the URL has already been separated from any
326     surrounding text and copied to a "parse string". The rules are
327     listed in the order in which they must be applied by the parser.
328    
329     2.4.1. Parsing the Scheme
330    
331     If the parse string contains a colon ":" after the first character
332     and before any characters not allowed as part of a scheme name
333     (i.e. any not an alphanumeric, plus "+", period ".", or hyphen "-"),
334     the scheme of the URL is the substring of characters up to but not
335     including the first colon. These characters and the colon are then
336     removed from the parse string before continuing.
337    
338     2.4.2. Parsing the Fragment Identifier
339    
340     If the scheme is not a member of the Uses-Fragment set, this section
341     is skipped.
342    
343     If the parse string contains a crosshatch "#" character, then the
344     substring after the last (right-most) crosshatch "#" and up to the
345     end of the parse string is the fragment identifier. If the
346     crosshatch is the last character, or no crosshatch is present, then
347     the fragment identifier is empty. The matched substring, including
348     the crosshatch character, is removed from the parse string before
349     continuing.
350    
351     Note that the fragment identifier is not considered part of the URL.
352     However, since it is often attached to the URL, parsers must be able
353     to recognize and set aside fragment identifiers as part of the
354     process.
355    
356     2.4.3. Parsing the Network Location/Login
357    
358     If the scheme is not a member of the Uses-Netloc set, this section
359     is skipped.
360    
361     If the parse string begins with a double-slash "//", then the
362     substring of characters after the double-slash and up to, but not
363     including, the next slash "/" character is the network location/login
364     (<net_loc>) of the URL. If no trailing slash "/" is present, the
365     entire remaining parse string is assigned to <net_loc>. The
366     double-slash and <net_loc> are removed from the parse string before
367     continuing.
368    
369     2.4.4. Parsing the Query Information
370    
371     If the scheme is not a member of the Uses-Query set, this section
372     is skipped.
373    
374     If the parse string contains a question mark "?" character, then the
375     substring after the first (left-most) question mark "?" and up to the
376     end of the parse string is the query information. If the question
377     mark is the last character, or no question mark is present, then the
378     query information is empty. The matched substring, including the
379     question mark character, is removed from the parse string before
380     continuing.
381    
382     2.4.5. Parsing the Parameters
383    
384     If the scheme is not a member of the Uses-Params set, this section
385     is skipped.
386    
387     If the parse string contains a semicolon ";" character, then the
388     substring after the first (left-most) semicolon ";" and up to the
389     end of the parse string is the parameters (<params>). If the
390     semicolon is the last character, or no semicolon is present, then
391     <params> is empty. The matched substring, including the semicolon
392     character, is removed from the parse string before continuing.
393    
394     2.4.6. Parsing the Path
395    
396     After the above steps, all that is left of the parse string is
397     the URL path and the slash "/" that may precede it. Even though
398     the initial slash is not part of the URL path, the parser must
399     remember whether or not it was present so that later processes
400     can differentiate between relative and absolute paths. Often this
401     is done by simply storing the preceding slash along with the path.
402    
403     3. Establishing a Base URL
404    
405     In order for relative URLs to be usable within a base document,
406     the absolute "base URL" of that document must be known to the
407     parser. There are three methods for obtaining the base URL of
408     a document, listed here in order of precedence.
409    
410     3.1. Base URL within Document Content
411    
412     Within certain document content-types, the base URL of the document
413     can be embedded within the content itself such that it can be
414     readily obtained by a parser. This can be useful for descriptive
415     documents, such as tables of content, which may be transmitted to
416     others through schemes which do not support relative addressing
417     (e.g. E-Mail or USENET news).
418    
419     It is beyond the scope of this document to specify how, for each
420     content-type, the base URL can be embedded. However, an example of
421     how this is done for the Hypertext Markup Language (HTML) [14] is
422     provided in an Appendix (Section 10).
423    
424     3.2. Base URL within Message Headers
425    
426     For access schemes which make use of message headers like those
427     described in RFC 822 [7], a second method for identifying the base
428     URL of a document is to include that URL in the message headers.
429     It is recommended that the format of this header be:
430    
431     Base-URL: absoluteURL
432    
433     where "Base-URL" is case-insensitive. For example,
434    
435     Base-URL: http://www.ics.uci.edu/Test/a/b/c
436    
437     would indicate that any relative URLs found within the document
438     should be parsed relative to <URL:http://www.ics.uci.edu/Test/a/b/c>.
439     In situations where both an embedded base URL (as described in
440     Section 3.1) and a "Base-URL" message header are present, the
441     embedded base URL takes precedence.
442    
443     3.3. Base URL from the Retrieval Context
444    
445     If neither an embedded base URL nor a "Base-URL" message header
446     is present, then, if a URL was used to retrieve the base document,
447     that URL shall be considered the base URL. Note that if the
448     retrieval was the result of a redirected request, the last URL used
449     (i.e., that which resulted in the actual retrieval of the document)
450     is the base URL.
451    
452     3.4. Default Base URL
453    
454     If none of the conditions described in Sections 3.1 -- 3.3 apply,
455     then the base URL is considered to be the empty string and all
456     embedded URLs within that document shall be interpreted as absolute.
457     It is the responsibility of the distributor(s) of a document
458     containing relative URLs to ensure that the base URL for that
459     document can be established. It must be emphasized that relative
460     URLs cannot be used reliably in situations where the object's base
461     URL is not well-defined.
462    
463     4. Resolving Relative URLs
464    
465     This section describes an example algorithm for resolving URLs
466     within a context in which the URLs may be relative, such that the
467     result is always a URL in absolute form. Although this algorithm
468     cannot guarantee that the resulting URL will equal that intended
469     by the original author, it does guarantee that any valid URL
470     (relative or absolute) can be consistently transformed to an
471     absolute form given a valid base URL.
472    
473     The following steps are performed in order:
474    
475     Step 1: The base URL is established according to the rules of
476     Section 3.
477    
478     Step 2: If the base URL is the empty string (unknown), the embedded
479     URL is interpreted as an absolute URL and we are done.
480    
481     Step 3: Both the base and embedded URLs are parsed into their
482     component parts as described in Section 2.4.
483    
484     a) If the embedded URL starts with a scheme name, it is
485     interpreted as an absolute URL and we are done.
486    
487     b) Otherwise, the embedded URL inherits the scheme of
488     the base URL.
489    
490     Step 4: If the scheme is a member of the Uses-Netloc set
491     (Section 2.3.1), then
492    
493     a) If the embedded URL's <net_loc> is non-empty, we skip to
494     Step 8.
495    
496     b) Otherwise, the embedded URL inherits the <net_loc> of the
497     base URL.
498    
499     Step 5: If the embedded URL path is preceded by a slash "/", the
500     path is not relative and we skip to Step 8.
501    
502     Step 6: If the embedded URL path is empty (and not preceded by a
503     slash), then
504    
505     a) The embedded URL inherits the base URL path; and,
506    
507     b) If the embedded URL's <params> is empty, it
508     inherits the <params> of the base URL (if any); and,
509    
510     c) If the embedded URL's <query> is empty, it inherits
511     the <query> of the base URL (if any); and,
512    
513     d) We skip to Step 8.
514    
515     Step 7: The last path segment of the base URL's path (anything
516     following the rightmost slash "/", or the entire path if no
517     slash is present) is removed and the embedded URL's path is
518     appended in its place. The following operations are
519     then applied, in order, to the new URL path:
520    
521     a) All occurrences of "./", where "." is a complete path
522     segment, are removed.
523    
524     b) If the URL path ends with "." as a complete path segment,
525     that "." is removed.
526    
527     c) All occurrences of "<segment>/../", where <segment> and
528     ".." are complete path segments, are removed. Removal of
529     these path segments is performed iteratively, removing the
530     leftmost matching pattern on each iteration, until no
531     matching pattern remains.
532    
533     d) If the URL path ends with "<segment>/..", that
534     "<segment>/.." is removed.
535    
536     Step 8: The resulting URL components, including any inherited from
537     the base URL, are recombined to give the absolute form of
538     the embedded URL.
539    
540     Parameters, regardless of their purpose, do not form a part of the
541     URL path and thus have no effect on the resolving of relative paths.
542     In particular, the presence or absence of the ";type=d" parameter
543     on an ftp URL has no effect on the interpretation of paths relative
544     to that URL. Fragment identifiers are never inherited from the
545     base URL.
546    
547     5. Examples and Recommended Practice
548    
549     Within an object with a well-defined base URL of
550    
551     <URL:http://a/b/c/d>
552    
553     the relative URLs would be resolved as follows:
554    
555     5.1. Normal Examples
556    
557     g:h = <URL:g:h>
558     g = <URL:http://a/b/c/g>
559     ./g = <URL:http://a/b/c/g>
560     g/ = <URL:http://a/b/c/g/>
561     /g = <URL:http://a/g>
562     //g = <URL:http://g>
563     ?y = <URL:http://a/b/c/d?y>
564     g?y = <URL:http://a/b/c/g?y>
565     g?y/./x = <URL:http://a/b/c/g?y/./x>
566     . = <URL:http://a/b/c/>
567     ./ = <URL:http://a/b/c/>
568     .. = <URL:http://a/b/>
569     ../ = <URL:http://a/b/>
570     ../g = <URL:http://a/b/g>
571     ../.. = <URL:http://a/>
572     ../../g = <URL:http://a/g>
573    
574     5.2. Abnormal Examples
575    
576     ../../../g = <URL:http://a/../g>
577     ./../g = <URL:http://a/b/g>
578     ./g/. = <URL:http://a/b/c/g/>
579     /./g = <URL:http://a/./g>
580     g/./h = <URL:http://a/b/c/g/h>
581     g/../h = <URL:http://a/b/c/h>
582     http:g = <URL:http:g>
583     http: = <URL:http:>
584    
585     Note that, although the abnormal examples are not likely to occur
586     for a normal relative URL, all URL parsers should be capable of
587     resolving them consistently.
588    
589     5.3. Recommended Practice
590    
591     Authors should be aware that path names which contain a colon
592     ":" character cannot be used as the first component of a relative
593     URL path (e.g. "this:that") because they will likely be mistaken for
594     a scheme name. It is therefore necessary to precede such cases with
595     other components (e.g., "./this:that"), or to escape the colon
596     character (e.g., "this%3Athat"), in order for them to be correctly
597     parsed. The former solution is preferred because it has no effect
598     on the absolute form of the URL.
599    
600     6. Security Considerations
601    
602     None.
603    
604     7. Acknowledgements
605    
606     This work is derived from concepts introduced by Tim Berners-Lee and
607     the World-Wide Web global information initiative. Relative URLs are
608     described as "Partial URLs" in RFC 1630 [1]. That description was
609     expanded for inclusion as an appendix for the Internet-Draft
610     "Uniform Resource Locators (URL)" [2]. However, after further
611     discussion, the URI-WG decided to specify Relative URLs separately
612     from the primary URL draft.
613    
614     This document is intended to fulfill the requirements for Internet
615     Resource Locators as stated in [15]. It has benefited greatly from
616     the comments of all those participating in the URI-WG. Particular
617     thanks go to Larry Masinter, Michael A. Dolan, Guido van Rossum, and
618     Dave Kristol for identifying problems/deficiencies in earlier drafts.
619    
620     8. References
621    
622     [1] Berners-Lee, T., "Universal Resource Identifiers in WWW:
623     A Unifying Syntax for the Expression of Names and Addresses of
624     Objects on the Network as used in the World-Wide Web", RFC 1630,
625     <URL:ftp://ds.internic.net/rfc/rfc1630.txt>, June 1994.
626    
627     [2] Berners-Lee, T., Masinter, L., and McCahill, M., Editors,
628     "Uniform Resource Locators (URL)", Internet-Draft (work in
629     progress), <URL:ftp://ds.internic.net/internet-drafts/
630     draft-ietf-uri-url-08.txt>, October 1994.
631    
632     [3] Postel, J. and Reynolds, J.K., "File Transfer Protocol (FTP)",
633     RFC 959, <URL:ftp://ds.internic.net/rfc/rfc959.txt>, October 1985.
634    
635     [4] Berners-Lee, T ., "Hypertext Transfer Protocol (HTTP)" ,
636     CERN, <URL:ftp://info.cern.ch/pub/www/doc/http-spec.txt.Z>,
637     November 1993.
638    
639     [5] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D.,
640     Torrey, D., and Alberti, B., "The Internet Gopher Protocol:
641     A distributed document search and retrieval protocol",
642     RFC 1436, <URL:ftp://ds.internic.net/rfc/rfc1436.txt>,
643     March 1993.
644    
645     [6] Anklesaria, F., Lindner, P., McCahill, M., Torrey, D.,
646     Johnson, D., and Alberti, B., "Gopher+: Upward compatible
647     enhancements to the Internet Gopher protocol",
648     University of Minnesota, <URL:ftp://boombox.micro.umn.edu
649     /pub/gopher/gopher_protocol/Gopher+/Gopher+.txt>, July 1993.
650    
651     [7] Crocker, D. H., "Standard for the Format of ARPA Internet Text
652     Messages", RFC 822, <URL:ftp://ds.internic.net/rfc/rfc822.txt>,
653     April 1982.
654    
655     [8] Horton, M. and Adams, R., "Standard For Interchange of USENET
656     messages", RFC 1036, <URL:ftp://ds.internic.net/rfc/rfc1036.txt>,
657     December 1987.
658    
659     [9] Kantor, B. and Lapsley, P., "Network News Transfer Protocol:
660     A Proposed Standard for the Stream-Based Transmission of News",
661     RFC977, <URL:ftp://ds.internic.net/rfc/rfc977.txt>,
662     February 1986.
663    
664     [10] Postel, J. and Reynolds, J., "TELNET Protocol Specification",
665     RFC 854, <URL:ftp://ds.internic.net/rfc/rfc854.txt>, May 1983.
666    
667     [11] Davis, F., Kahle, B., Morris, H., Salem, J., Shen, T., Wang, R.,
668     Sui, J., and Grinbaum, M., "WAIS Interface Protocol Prototype
669     Functional Specification", (v1.5), Thinking Machines Corporation,
670     <URL:ftp://quake.think.com/pub/wais/doc/protspec.txt>,
671     April 1990.
672    
673     [12] St. Pierre, M, Fullton, J., Gamiel, K., Goldman, J., Kahle, B.,
674     Kunze, J., Morris, H., and Schiettecatte, F.,
675     "WAIS over Z39.50-1988", RFC 1625,
676     <URL:ftp://ds.internic.net/rfc/rfc1625.txt>, June 1994.
677    
678     [13] Neuman, B.C., and Augart, S. "The Prospero Protocol",
679     USC Information Sciences Institute, <URL:
680     ftp://prospero.isi.edu/pub/prospero/doc/prospero-protocol.PS.Z>,
681     June 1993.
682    
683     [14] Berners-Lee, T., Connolly, D., et al. "HyperText Markup Language
684     Specification -- 2.0", HTML-WG draft (work in progress),
685     <URL:ftp://www.ics.uci.edu/pub/ietf/html/>, October 1994.
686    
687     [15] Kunze, J., "Functional Requirements for Internet Resource
688     Locators", Internet-Draft (work in progress),
689     <URL:ftp://ds.internic.net/internet-drafts/
690     draft-ietf-uri-irl-fun-req-01.txt>, July 1994.
691    
692     9. Author's Address
693    
694     Roy T. Fielding
695     Department of Information and Computer Science
696     University of California
697     Irvine, CA 92717-3425
698     U.S.A.
699    
700     Tel: +1 (714) 824-4049
701     Fax: +1 (714) 824-4056
702     Email: fielding@ics.uci.edu
703    
704     This Internet-Draft expires April 28, 1995.
705    
706    
707     10. Appendix - Embedding the Base URL in HTML documents.
708    
709     It is useful to consider an example of how the base URL of a
710     document can be embedded within the document's content. In this
711     appendix, we describe how documents written in the Hypertext Markup
712     Language (HTML) [14] can include an embedded base URL. This appendix
713     does not form a part of the relative URL specification and should not
714     be considered as anything more than a descriptive example.
715    
716     HTML defines a special element "BASE" which, when present in the
717     "HEAD" portion of a document, signals that the parser should use
718     the BASE element's "HREF" attribute as the base URL for resolving
719     any relative URLs. The "HREF" attribute must be an absolute URL.
720     Note that, in HTML, element and attribute names are case-insensitive.
721     For example:
722    
723     <!doctype html public "-//IETF//DTD HTML//EN">
724     <HTML><HEAD>
725     <TITLE>An example HTML document</TITLE>
726     <BASE href="http://www.ics.uci.edu/Test/a/b/c">
727     </HEAD><BODY>
728     ... <A href="../x">a hypertext anchor</A> ...
729     </BODY></HTML>
730    
731     A parser reading the example document should interpret the given
732     relative URL "../x" as representing the absolute URL
733    
734     <URL:http://www.ics.uci.edu/Test/a/x>
735    
736     regardless of the context in which the example document was obtained.
737    

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24