multidirectional links with XLINK

W. Eliot Kimber eliot at
Wed Sep 22 05:25:52 BST 1999

Friedhelm Krebs wrote:
> Reading the X-Link-Specification I found the keyword
> multidirectional-link, but I had no idea how to realize it with X-Link.
> What´s the difference to, for instance, two uni-directional links, one
> on each side?

The difference is that in the first case you are asserting one
relationship between the two things and in the second you are asserting
two relationships. The "directionality" of the links is merely a matter
of behavioral style.

In XLink, a hyperlink is an object that asserts a relationship among two
or more things ("resources"). The existence of this relationship can be
used for many purposes, only one of which is to enable navigation within
a browsing environment.

Because all links (simple or extended) assert relationships among
things, they are all inherently multidirectional in the sense that
knowing both ends you can move from one to the other without restriction
in the general case. It doesn't (or shouldn't) matter which end is the
link element itself--one the link is resolved you know where both ends

However, it is often useful or necessary to limit movement to only one
direction across the relationship, either because the semantics of the
link require it or because practicalities of the browsing environment
demand it.

For example, if you are using links to represent connections between
rooms in a roll-playing game (think of the old Zork classic), you could
represent doors that lock behind you with links that only allow
traversal in one direction.

In a Web environment, it is usually not practical to examine every
document to find all the link elements before enabling movement from one
end to the other, so you can only allow traversal from one end, the end
that is the link, to the other in the normal case (this is why HTML
links appear to be so limited--they have to be given the operating
environment they are designed for).

But note that these uni-directional limitations are artificial. In the
abstract, there is no reason you can't always traverse in both

Remember too that given both simple and extended links, there are always
three possible syntactic configurations for the same relationship:

1. Link is resource 1 and points to resource 2 (simple, extended acting
as one of its resources)
2. Link is resource 2 and points to resource 1 (ditto)
3. Link is not a resource and points to resources 1 and 2 (extended not
one of its own resources)

Any one of these three configurations can always be converted to either
of the other two without information loss. Each one of these
configurations will be best suited to a particular use scenario.

If you have two unidirectional links, you have redundant information
because if both links connect the same resources then you have defined
the same relationship twice. Of course, if all you care about is
enabling browsing in a Web environment, that may be all you can do.



xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as: and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at

More information about the Xml-dev mailing list