- Fragment identifier
In computer
hypertext , a fragment identifier is a short string of characters that refers to a resource that is subordinate to another, primary resource. The primary resource is identified by aUniform Resource Identifier (URI), and the fragment identifier points to the subordinate resource. Typically, the fragment identifier is appended to theUniform Resource Locator (URL —a type of URI) for ahypertext document and is meant to identify a portion of that document.A fragment identifier is defined by RFC 3986 as an optional component of a "URI reference", and it must conform to a certain syntax. The syntax requires that the fragment identifier be separated from the rest of the URI reference by a
#
(number sign ) character. The separator is not considered part of the fragment identifier.Examples
In HTML applications,
refers to the element with thehttp://www.foo.org/foo.html #fragment-identifierid
attribute that has the valuefragment-identifier
(i.e.,id="fragment-identifier"
) in the document identified by the URI
, which is typically the location from which the document would be obtained via the Internet. The deprecatedhttp://www.foo.org/foo.html name
attribute can also be used for this purpose in the same manner.If the targeted element is located in the current document, a user agent (e.g., Web browser) may simply focus the targeted element (e.g., by scrolling the document view to it) without having to reload it. Otherwise, the user agent will need to first retrieve the document and load the relevant element before it can focus the element.
Graphical Web browsers typically position pages so that the top of the element identified by the fragment id is aligned with the top of the viewport; thus fragment identifiers are often used in tables of content and in permalinks. The appearance of the identified element can also be changed through the
:target
CSS pseudoclass;Wikipedia uses this to highlight the selected reference.With the rise of
AJAX , some websites use fragment identifiers to emulate the back button behavior of browsers for page changes that do not require a reload, or to emulate subpages. (For example,GMail uses a single URL for almost every interface – mail boxes, individual mails, search results, settings – the fragment is used to make these interfaces directly linkable. [ [http://blogoscoped.com/archive/2007-11-17-n25.html Link to Specific Content in Gmail] , Google Blogoscoped, November 17, 2007] ) Other websites use the fragment part to pass some extra information to scripts running on them – for example,Google Video understands permalinks in the format of#01h25m30s
to start playing at the specified position [ [http://googlevideo.blogspot.com/2006/07/new-feature-link-within-video_19.html New Feature: Link within a Video] , Official Google Video Blog, July 19, 2006] .In XML applications, fragment identifiers in a certain syntax can be
XPointer s; for example, the fragment identifier in the URI
refers to all XML elements named "Rube" in the document identified by the URIhttp://www.foo.org/foo.xml #xpointer(//Rube)http://www.foo.org/foo.xml . An XPointer processor, given that URI, would obtain a representation of the document (such as by requesting it from the Internet) and would return a representation of the document's "Rube" elements.In RDF vocabularies, such as RDFS, OWL, or
SKOS , fragment identifiers are used to identify resources in the same XML Namespace, but are not necessarily corresponding to a specific part of a document. For example
identifies the concept "broader" in SKOS Core vocabulary, but it does not refer to a specific part of the resource identified byhttp://www.w3.org/2004/02/skos/core #broader
, a complete RDF file in which semantics of this specific concept is declared, along with other concepts in the same vocabulary.http://www.w3.org/2004/02/skos/core
Processing
The fragment identifier functions differently than the rest of the URI: namely, its processing is exclusively client-side with no participation from the server. When an agent (such as a
Web browser ) requests a resource from aWeb server , the agent sends the URI to the server, but does not send the fragment. Instead, the agent waits for the server to send the resource, and then the agent processes the resource according to the fragment value. In the most common case, the agent scrolls a Web page down to the anchor element which has anattribute string equal to the fragment value. [http://www.w3.org/TR/webarch/#media-type-fragid Other client behaviors are possible] .As a consequence, in some circumstances of
URL redirection or display of intermediate pages (e.g., login screens) by the server, the browser may not be able to apply the fragment to the resource it ultimately receives from the server. This can be remedied by replacing#
in the URL to be redirected with%23
, the percent-encoded value of#
. Also, applications running on the server do not normally receive the fragment value with the rest of the URI, and are thus unable to take it into account when processing a request.References
External links
* [http://www.w3.org/TR/webarch/#media-type-fragid Architecture of the World Wide Web, Volume One] 3.2.1. Representation types and fragment identifier semantics
*RFC 2396 4.1. Fragment Identifier
*RFC 3986 3.5. Fragment
Wikimedia Foundation. 2010.