Base URIs
Relative URL references such as sark.jpg,
../pi1/sark.jpg, and
turing/pi1/sark.jpg must be resolved relative to
an absolute base URI before being retrieved. When relative URLs are
found in XLinks, xml-stylesheet
processing instructions, system identifiers, and other locations in
XML documents, they are normally resolved relative to the absolute
base URL of the document or entity that contains them. For instance,
if you find the element <image
xlink:type="simple"
xlink:href="pi1/sark.jpg
" />
in a document at the URL http://www.turing.org.uk/turing/index.html, you would
expect to find the file sark.jpg at the URL
http://www.turing.org.uk/turing/p1/sark.jpg.
This isn’t a surprise. It’s pretty much how links have worked in HTML
for over a decade.
However, XML does add a couple of new wrinkles to this procedure. First, an XML document may be composed of multiple entities loaded from multiple different URLs, even on different servers. If this is the case, then a relative URL is resolved relative to the base URL of the specific entity in which it appears, not the base URL of the entire document.
Secondly, the base URL may be reset or changed from within the
document by using xml:base
attributes. Such an attribute may appear on the XLink element itself
or on any ancestor element in the same entity. For example, this XLink
points to ftp://ftp.knowtion.net/pub/mirrors/gutenberg/etext93/wizoz10.txt:
<novel xmlns:xlink = "http://www.w3.org/1999/xlink" xml:base="ftp://ftp.knowtion.net/pub/mirrors/gutenberg/etext93/" ...
Get XML in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.