XML Linking:
An introduction by Steven J. DeRose

NOTE: This file has been updated, but not closely proofed for the latest changes. Recent working drafts have significantly changed the syntax, and somewhat changed the semantics, of XLinks (as well as introduced new co-editors). XPointer has been largely unified with the XSL pattern language, and most of the features of both are now in a joint specification known as XPath. See the W3C site for up-to-date details on this and all other W3C work. I have been busy working on the spec, and have not been able to update this introduction fully yet.

What is XML Linking?

XML Linking, formerly known as XLink and 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 is now an independent Working Group, but its projects were started under the main XML Working Group, and progressed to solid Working Drafts there before being handed off to the new XML Linking Working Group.

The work of this WG 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. XPointer is now a layer on top of XPath, a joint specification from the Linking and XSL working groups, that provides a common system for specification location that are entire nodes or lists of nodes; the XPointer layer provides for locating other data, such as general user selections, which are not whole nodes and correspond closely to the DOM "range" construct.

Either of XPointer and XLink can be used without the other; the most obvious example is that XLinks of course can connect many kinds of data besides XML (audio, video, VRML, program code, whatever); likewise XPointer can be used to specify locations regardless of whether those locations are formal link-ends. Yet they are especially valuable in combination, and of course in combination with XML itself.

XLink is edited by Steve DeRose. Eve Maler and Tim Bray have served as co-editors with me previously. The other co-editors are now: James Clark (XPath); Ron Daniel (XPointer); David Orchard and Ben Trafford (XLink).

Relevant documents can be found on the Web Consortium site.

XLink adds these kinds of advanced hypertext linking functionality to the Web (and other environments where it may be used):

XPointer provides better location specifications. It doesn't "return" things; it is simply an abstract language that specifies locations; obviously XLink can use it as part of specifying where its link-ends reside. Some added capabilities of XPointer (beyond HTML's rudimenary use of fragment identifiers on the end of URLs) include:

XPointers are largely based on TEI extended pointers, a proven and multiply-implemented technology for the same purpose, developed by the Text Encoding Initiative.

XPointer builds on XPath, a joint specification of XSL and XML Linking. XPath provides generic pointing expressions that can locate any node or set of nodes in an XML document structure. It does so using combinations of various axes and predicates. In short, axes pick out a set of candidate nodes somehow related to a starting node (such as all its ancestors, siblings, children, descendants, attributes, etc), and predicates then pick from among those candidates.

What XPointer brings to the table beyond XPath, includes:

See the W3C documents for more details, and to be sure your information is up to date.