Related
s
DOM
HTML
HTML5
MSXML
NAMESPACES
NOT SGML
SAX
SCHEMA
SGML
SVG
TEX
UNICODE
XML CHINESE
XML CONDENSED
XML DUTCH
XSL
C.18 How will XML affect my document links?
The linking abilities of XML systems are potentially
much more powerful than those of HTML, so you'll be able to
do much more with them. Existing href-style links will remain
usable, but the new linking technology is based on the
lessons learned in the development of other standards
involving hypertext, such as TEI and HyTime,
which let you manage bidirectional and multi-way links, as
well as links to a whole element or span of text (within
your own or other documents) rather than to a single point.
These features have been available to SGML users for many
years, so there is considerable experience and expertise
available in using them. Currently only Mozilla Firefox
implements XLink.
The XML Linking Specification (XLink) and the XML Extended Pointer Specification (XPointer) documents contain the details. An XLink can be either a URI or a TEI-style Extended Pointer (XPointer), or both. A URI on its own is assumed to be a resource; if an XPointer follows it, it is assumed to be a sub-resource of that URI; an XPointer on its own is assumed to apply to the current document (all exactly as with HTML).
An XLink may use one of #, ?, or |. The # and ? mean the same as in HTML applications; the | means the sub-resource can be found by applying the link to the resource, but the method of doing this is left to the application. An XPointer can only follow a #.
The TEI Extended Pointer Notation (EPN) is much more powerful than the fragment address on the end of some URIs, as it allows you to specify the location of a link end using the structure of the document as well as (or in addition to) known, fixed points like IDs. For example, the linked second occurrence of the word ‘XPointer’ two paragraphs back could be referred to with the URI (shown here with linebreaks and spaces for clarity: in practice it would of course be all one long string):
http://xml.silmaril.ie/faq.xml#ID(hypertext)
.child(1,#element,'answer')
.child(2,#element,'para')
.child(1,#element,'link')
This means the first link element
within the second paragraph within the
answer in the element whose ID is
hypertext (this
question). Count the objects from the start of this question
(which has the ID hypertext) in the XML
source:
the first child object is the element containing the
question (quandaentry);
the second child object is the answer (the
answer element);
within this element go to the second paragraph;
find the first link
element.
Eve Maler explained the relationship of XLink and XPointer as follows:
XLink governs how you insert links into your XML document, where the link might point to anything (eg a GIF file); XPointer governs the fragment identifier that can go on a URL when you're linking to an XML document, from anywhere (eg from an HTML file).
[Or indeed from an XML file, a URI in a mail message, etc…Ed.]
David Megginson has produced an xpointer function for Emacs/psgml which will deduce an XPointer for any location in an XML document. XML Spy has a similar function.