[This local archive copy mirrored from the canonical site: http://www.stg.brown.edu/~sjd/xlinkintro.html; links may not have complete integrity, so use the canonical document at this URL if possible.]
XLink, formerly known as XLL (the eXtensible Linking Language), is a work in progress of the Web Consortium. It is closely related to the XML Recommendation, but adds functionality for high-function hypertext and hypermedia. It has two parts: XLink proper provide advanced linking capabilities such as multidirectional and external linking, while the separate XPointer spec provides a convenient and easily-understood way of describing locations in XML documents.
XLink is co-edited by Eve Maler and Steve DeRose.
Relevant documents can be found on the Web Consortium site soon:
XLink adds these kinds of advanced hypertext linking functionality to the Web (and other environments where it may be used):
Links that lead to multiple destinations.
Bi-directional links (note that "go back" is not at all the same thing: a bidirectional links can be traversed either direction regardless of whether you went the other way first.
Links that annotate read-only documents. That is, you can create links that will show up when people view a document even though you don't own the document. Of course, this involves a process of deciding whose links you do and don't want to view in this way; but this also makes it possible to build a valuable infrastructure of annotation, commentary, and communal evaluation and discussion on the Web.
Links with certain special behaviors, such as expand-in-place, new window vs. replacement, automatic follows, and so on. Although these behaviors can be programmed now with Java or other tools, providing the specific semantics means that the behaviors exist as first-class objects themselves, and can be processed in turn (which is not true of general computer programs).
Link databases, with all the consequent possibilities for filtering, sorting, analyzing, and processing link collections.
XPointer provides better location specifications:
Links that point to specific places inside of documents, even when the author of those documents didn't already provide an ID at just the right place.
Fine-grained addressing to elements, character strings, and spans inside documents.
A clear syntax for talking about locations and relationships in hierarchies (such as the structure of XML documents), so that locations are human-readable and writable, rather than mere hash.
XPointers are based on TEI extended pointers, a proven and multiply- implemented technology for the same purpose, developed by the Text Encoding Initiative.
An XPointer is a sequence of "location terms" that, when interpreted left to right, specify a location in terms of the tree structure that XML markup expresses (See DOM). For example,
ID(foo).CHILD(4,SEC).CHILD(1,ABSTRACT)would address the first XML ABSTRACT element within the fourth SEC element within the element with ID attribute "foo" in some document. The document itself would be specified in the usual Web way, by a URL or other form of URI. You just put the XPointer on the end, separated by "#" or "?" (which you choose depends on the behavior you want, as specified in XLink).
So for example, an HTML browser that also supported XPointers would be happy with something like:
There is lots more you can do with XPointers. See the full spec (which, remember, is still a Working Draft!) for more details.
Back to home page of Steve DeRose
Or, contact me via email.