Re: anchors

"Hoyt, Phil" <Phil.Hoyt@globeinteractive.com> wrote:

> I think it's common practice to link using href="#name" to an anchor within
> the same document. I've been unable, though, to find a way either in the
> real world or in the html spec to use a similar syntax to link to an anchor
> within the same document as the link when <base href="http://www.url.com">
> is being used. Instead, such a link refers to an anchor on the base
> document.

Actually such a behavoir is wrong, RFC 2396, "4.2. Same-document
References" says:

   A URI reference that does not contain a URI is a reference to the
   current document.  In other words, an empty URI reference within a
   document is interpreted as a reference to the start of that document,
   and a reference containing only a fragment identifier is a reference
   to the identified fragment of that document.  Traversal of such a
   reference should not result in an additional retrieval action.
		<snip/>

And "5.2. Resolving Relative References to Absolute Form" further says:

   For each URI reference, the following steps are performed in order:

   1) The URI reference is parsed into the potential four components and
      fragment identifier, as described in Section 4.3.

   2) If the path component is empty and the scheme, authority, and
      query components are undefined, then it is a reference to the
      current document and we are done.  Otherwise, the reference URI's
      query and fragment components are defined as found (or not found)
      within the URI reference and not inherited from the base URI.

So a fragment identifier should be interpreted as a reference within
the current document, regardless of the base URI.  Unfortunately,
as you noticed, many user agents do it wrong.

[RFC 2396] http://www.rfc-editor.org/rfc/rfc2396.txt

Regards,
-- 
Masayasu Ishikawa / mimasa@w3.org
W3C - World Wide Web Consortium

Received on Sunday, 2 December 2001 23:08:35 UTC