You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1659 lines
106 KiB
1659 lines
106 KiB
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html lang="en"><head>
|
|
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>XML Linking Language (XLink) Version 1.0</title><style type="text/css">
|
|
code { font-family: monospace; }
|
|
|
|
div.constraint,
|
|
div.issue,
|
|
div.note,
|
|
div.notice { margin-left: 2em; }
|
|
|
|
dt.label { display: run-in; }
|
|
|
|
li p { margin-top: 0.3em;
|
|
margin-bottom: 0.3em; }
|
|
</style><link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/W3C-REC.css"></head><body>
|
|
|
|
<div class="head"><p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" height="48" width="72"></a></p>
|
|
<h1>XML Linking Language (XLink) Version 1.0</h1>
|
|
<h2>W3C Recommendation 27 June 2001</h2>
|
|
<div id="xlink11_notice" style="border: solid black 1px;
|
|
padding: 0.5em; background: #FFB;">
|
|
<p style="margin-top: 0; font-weight: bold;">New Version
|
|
Available: XLink 1.1 <span style="padding-left: 2em;"></span>
|
|
(Document Status Update, 14 September 2010)</p>
|
|
<p style="margin-bottom: 0;">The XML Core Working Group has produced
|
|
a W3C Recommendation for a new version of XLink which adds
|
|
features to this 2001 version while remaining compatible.
|
|
Please see <a href="http://www.w3.org/TR/xlink11/">XLink 1.1</a>
|
|
for the latest version.</p>
|
|
</div>
|
|
<dl><dt>This version:</dt><dd><a href="http://www.w3.org/TR/2001/REC-xlink-20010627/">http://www.w3.org/TR/2000/REC-xlink-20010627/</a>(available in <a href="http://www.w3.org/TR/2001/REC-xlink-20010627/Overview.html">HTML</a>, <a href="http://www.w3.org/TR/2001/REC-xlink-20010627/Overview.xml">XML</a>)</dd><dt>Latest version:</dt><dd><a href="http://www.w3.org/TR/xlink/">http://www.w3.org/TR/xlink/</a></dd><dt>Previous versions:</dt><dd><a href="http://www.w3.org/TR/2000/PR-xlink-20001220/">http://www.w3.org/TR/2000/PR-xlink-20001220/</a></dd><dt>Editors:</dt>
|
|
<dd>Steve DeRose, Brown University Scholarly Technology
|
|
Group</dd>
|
|
<dd>Eve Maler, Sun Microsystems</dd>
|
|
<dd>David Orchard, Jamcracker</dd>
|
|
</dl><p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Copyright">Copyright</a> © 2001 <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="http://www.lcs.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="http://www.inria.fr/"><abbr lang="fr" title="Institut National de Recherche en Informatique et Automatique">INRIA</abbr></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#W3C_Trademarks">trademark</a>, <a href="http://www.w3.org/Consortium/Legal/copyright-documents-19990405">document use</a>, and <a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">software licensing</a> rules apply.</p></div><hr><div>
|
|
<h2><a name="abstract">Abstract</a></h2>
|
|
<p>This specification defines the XML Linking Language (XLink), which allows
|
|
elements to be inserted into XML documents in order to create and describe
|
|
links between resources. It uses XML syntax to create structures that can
|
|
describe links similar to the simple unidirectional hyperlinks of today's
|
|
HTML, as well as more sophisticated links.</p>
|
|
</div><div>
|
|
<h2><a name="status">Status of this Document</a></h2>
|
|
|
|
<p>This document has been reviewed by W3C Members and other
|
|
interested parties and has been endorsed by the Director
|
|
as a W3C Recommendation. It is a stable document and may
|
|
be used as reference material or cited as a normative
|
|
reference from another document.
|
|
W3C's role in making the Recommendation is to draw attention to the
|
|
specification and to promote its widespread deployment. This
|
|
enhances the functionality and interoperability of the Web.
|
|
</p><p>For information about the XPointer language that <a title="Must, May, etc." href="#dt-must">may</a>
|
|
be used with XLink, see <a href="#xptr">[XPTR]</a>.</p>
|
|
<p>This document has been produced by the W3C XML Linking Working
|
|
Group as part of the XML Activity in the W3C Architecture
|
|
Domain. For background on this work, please see the <a href="http://www.w3.org/XML/Activity">XML
|
|
Activity Statement</a>.</p>
|
|
<p>Please report possible errors in this
|
|
document to the public email list <a href="mailto:www-xml-linking-comments@w3.org">www-xml-linking-comments@w3.org</a> (archive
|
|
at
|
|
<a href="http://lists.w3.org/Archives/Public/www-xml-linking-comments/">http://lists.w3.org/Archives/Public/www-xml-linking-comments/</a>). Any
|
|
confirmed errors will be documented in an list of errata available
|
|
at <a href="http://www.w3.org/2001/06/xlink-errata">http://www.w3.org/2001/06/xlink-errata</a>.</p>
|
|
<p>The English version of this specification is the only normative
|
|
version. Information about translations of this document is available
|
|
at <a href="http://www.w3.org/2001/06/xlink-translations">http://www.w3.org/2001/06/xlink-translations</a>.</p>
|
|
<p>See <a href="#xldp">[XLDP]</a> for additional background on the design principles
|
|
informing XLink, and <a href="#xlreq">[XLREQ]</a> for the normative XLink requirements
|
|
that this document attempts to satisfy. XLink does not support all HTML linking
|
|
constructs as they stand; see <a href="#xlink-naming">[XLinkNaming]</a> for a discussion
|
|
of this situation.</p>
|
|
<p>A list of current W3C Recommendations and other technical documents can
|
|
be found at <a href="http://www.w3.org/TR/">http://www.w3.org/TR/</a>.</p>
|
|
</div>
|
|
<div class="toc">
|
|
<h2><a name="contents">Table of Contents</a></h2><p class="toc">1 <a href="#intro">Introduction</a><br> 1.1 <a href="#origin-goals">Origin and Goals</a><br>2 <a href="#N781">XLink Concepts</a><br> 2.1 <a href="#N789">Links and Resources</a><br> 2.2 <a href="#N854">Arcs, Traversal, and Behavior</a><br> 2.3 <a href="#N899">Resources in Relation to the Physical Location of a Linking Element</a><br>3 <a href="#conformance">XLink Processing and Conformance</a><br> 3.1 <a href="#N1022">Processing Dependencies</a><br> 3.2 <a href="#markup-reqs">Markup Conformance</a><br> 3.3 <a href="#app-reqs">Application Conformance</a><br>4 <a href="#att-method">XLink Markup Design</a><br> 4.1 <a href="#N1238">XLink Attribute Usage Patterns</a><br> 4.2 <a href="#N1599">XLink Element Type Relationships</a><br> 4.3 <a href="#defaulting">Attribute Value Defaulting</a><br> 4.4 <a href="#integrating">Integrating XLink Usage with Other Markup</a><br> 4.5 <a href="#legacy">Using XLink with Legacy Markup</a><br>5 <a href="#linking-elements">XLink Elements and Attributes</a><br> 5.1 <a href="#extended-link">Extended Links (extended-Type Element)</a><br> 5.1.1 <a href="#local-resource">Local Resources for an Extended Link (resource-Type Element)</a><br> 5.1.2 <a href="#remote-resource">Remote Resources for an Extended Link (locator-Type Element)</a><br> 5.1.3 <a href="#xlink-arcs">Traversal Rules for an Extended Link (arc-Type Element)</a><br> 5.1.4 <a href="#title-element">Titles for Extended Links, Locators, and Arcs (title-Type Element)</a><br> 5.1.5 <a href="#xlg">Locating Linkbases (Special Arc Role)</a><br> 5.2 <a href="#simple-links">Simple Links (simple-Type Element)</a><br> 5.3 <a href="#link-types">XLink Element Type Attribute (type)</a><br> 5.4 <a href="#link-locators">Locator Attribute (href)</a><br> 5.5 <a href="#link-semantics">Semantic Attributes (role, arcrole, and title)</a><br> 5.6 <a href="#link-behaviors">Behavior Attributes (show and actuate) </a><br> 5.6.1 <a href="#show-att">show Attribute</a><br> 5.6.2 <a href="#actuate-att">actuate Attribute</a><br> 5.7 <a href="#traversal-atts">Traversal Attributes (label, from, and to)</a><br></p>
|
|
<h3>Appendices</h3><p class="toc">A <a href="#references">References</a><br> A.1 <a href="#N3954">Normative References</a><br> A.2 <a href="#N4107">Non-Normative References</a><br>B <a href="#sample-dtd-appx">Sample DTD</a> (Non-Normative)<br>C <a href="#acknowledgements">Working Group Members and Acknowledgments</a> (Non-Normative)<br></p></div><hr><div class="body">
|
|
<div class="div1">
|
|
|
|
<h2><a name="intro"></a>1 Introduction</h2>
|
|
<p>This specification defines the XML Linking Language (XLink), which allows
|
|
elements to be inserted into XML documents in order to create and describe <a title="Link" href="#dt-link">links</a> between resources.</p>
|
|
<p>XLink provides a framework for creating both basic unidirectional links
|
|
and more complex linking structures. It allows XML documents to:</p>
|
|
<ul>
|
|
<li><p>Assert linking relationships among more than two resources</p></li>
|
|
<li><p>Associate metadata with a link</p></li>
|
|
<li><p>Express links that reside in a location separate from the linked
|
|
resources</p></li>
|
|
</ul>
|
|
<p>An important application of XLink is in hypermedia systems that have <a title="Hyperlink" href="#dt-hyperlink">hyperlinks</a>. A simple case of a hyperlink is an
|
|
HTML <code>A</code> element, which has these characteristics:</p>
|
|
<ul>
|
|
<li><p>The hyperlink uses URIs as its locator technology.</p></li>
|
|
<li><p>The hyperlink is expressed at one of its two ends.</p></li>
|
|
<li><p>The hyperlink identifies the other end (although a server may have
|
|
great freedom in finding or dynamically creating that destination).</p></li>
|
|
<li><p>Users can initiate traversal only from the end where the hyperlink
|
|
is expressed to the other end.</p></li>
|
|
<li><p>The hyperlink's effect on windows, frames, go-back lists, style sheets
|
|
in use, and so on is determined by user agents, not by the hyperlink itself.
|
|
For example, traversal of <code>A</code> links normally replaces the current
|
|
view, perhaps with a user option to open a new window.</p></li>
|
|
</ul>
|
|
<p>This set of characteristics is powerful, but the model that underlies them
|
|
limits the range of possible hyperlink functionality. The model defined in
|
|
this specification shares with HTML the use of URI technology, but goes beyond
|
|
HTML in offering features, previously available only in dedicated hypermedia
|
|
systems, that make hyperlinking more scalable and flexible. Along with providing
|
|
linking data structures, XLink provides a minimal link behavior model; higher-level
|
|
applications layered on XLink will often specify alternate or more sophisticated
|
|
rendering and processing treatments.</p>
|
|
<p>Integrated treatment of specialized links used in other technical domains,
|
|
such as foreign keys in relational databases and reference values in programming
|
|
languages, is outside the scope of this specification.</p>
|
|
<div class="div2">
|
|
|
|
<h3><a name="origin-goals"></a>1.1 Origin and Goals</h3>
|
|
<p>The design of XLink has been informed by knowledge of established hypermedia
|
|
systems and standards. The following standards have been especially influential:</p>
|
|
<ul>
|
|
<li><p><em>HTML</em> <a href="#html">[HTML]</a>: Defines several element types
|
|
that represent links.</p></li>
|
|
<li><p><em>HyTime</em> <a href="#iso10744">[ISO/IEC 10744]</a>: Defines inline and
|
|
inbound and third-party link structures and some semantic features, including
|
|
traversal control and presentation of objects.</p></li>
|
|
<li><p><em>Text Encoding Initiative Guidelines</em> <a href="#tei">[TEI]</a>:
|
|
Provides structures for creating links, aggregate objects, and link collections.</p>
|
|
</li>
|
|
</ul>
|
|
<p>Many other linking systems have also informed the design of XLink, especially <a href="#dexter">[Dexter]</a>, <a href="#fress">[FRESS]</a>, <a href="#ohs">[OHS]</a>, <a href="#microcosm">[MicroCosm]</a>,
|
|
and <a href="#intermedia">[Intermedia]</a>.</p>
|
|
<p>See the XLink Requirements Document <a href="#xlreq">[XLREQ]</a> for a thorough
|
|
explanation of requirements for the design of XLink.</p>
|
|
</div>
|
|
</div>
|
|
<div class="div1">
|
|
|
|
<h2><a name="N781"></a>2 XLink Concepts</h2>
|
|
<p>This section describes the terms and concepts that are essential to understanding
|
|
XLink, without discussing the syntax used to create XLink constructs. A few
|
|
additional terms are introduced in later parts of this specification.</p>
|
|
<div class="div2">
|
|
|
|
<h3><a name="N789"></a>2.1 Links and Resources</h3>
|
|
<p>[<a name="dt-link" title="Link">Definition</a>: An XLink <b>link</b> is an explicit
|
|
relationship between resources or portions of resources.] [<a name="dt-linkel" title="Linking element">Definition</a>: It is made explicit by an XLink <b>linking
|
|
element</b>, which is an XLink-conforming XML element that asserts the
|
|
existence of a link.] There are six XLink elements; only two of them
|
|
are considered linking elements. The others provide various pieces of information
|
|
that describe the characteristics of a link. (The term "link"
|
|
as used in this specification refers only to an XLink link, though nothing
|
|
prevents non-XLink constructs from serving as links.)</p>
|
|
<p>The notion of resources is universal to the World Wide Web. [<a name="dt-resource" title="Resource">Definition</a>: As discussed in <a href="#rfc2396">[IETF RFC 2396]</a>, a <b>resource</b>
|
|
is any addressable unit of information or service.] Examples include
|
|
files, images, documents, programs, and query results. The means used for
|
|
addressing a resource is a URI (Uniform Resource Identifier) reference (described
|
|
more in <a href="#link-locators"><b>5.4 Locator Attribute (href)</b></a>). It is possible to address a portion
|
|
of a resource. For example, if the whole resource is an XML document, a useful
|
|
portion of that resource might be a particular element inside the document.
|
|
Following a link to it might result, for example, in highlighting that element
|
|
or scrolling to that point in the document.</p>
|
|
<p>[<a name="dt-particip-resource" title="Participating resource">Definition</a>: When a
|
|
link associates a set of resources, those resources are said to <b>participate</b>
|
|
in the link.] Even though XLink links must appear in XML documents,
|
|
they are able to associate all kinds of resources, not just XML-encoded ones.</p>
|
|
<p>One of the common uses of XLink is to create hyperlinks. [<a name="dt-hyperlink" title="Hyperlink">Definition</a>: A <b>hyperlink</b> is a link that is intended primarily
|
|
for presentation to a human user.] Nothing in XLink's design, however,
|
|
prevents it from being used with links that are intended solely for consumption
|
|
by computers.</p>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="N854"></a>2.2 Arcs, Traversal, and Behavior</h3>
|
|
<p>[<a name="dt-traversal" title="Traversal">Definition</a>: Using or following a link for
|
|
any purpose is called <b>traversal</b>.] Even though some kinds
|
|
of link can associate arbitrary numbers of resources, traversal always involves
|
|
a pair of resources (or portions of them); [<a name="dt-starting-resource" title="Starting resource">Definition</a>: the source from which traversal is begun is the <b>starting
|
|
resource</b>] and [<a name="dt-ending-resource" title="Ending resource">Definition</a>: the
|
|
destination is the <b>ending resource</b>]. Note that the term "resource"
|
|
used in this fashion may at times apply to a resource portion, not a whole
|
|
resource.</p>
|
|
<p>[<a name="dt-arc" title="Arc">Definition</a>: Information about how to traverse a pair
|
|
of resources, including the direction of traversal and possibly application
|
|
behavior information as well, is called an <b>arc</b>]. If
|
|
two arcs in a link specify the same pair of resources, but they switch places
|
|
as starting and ending resources, then the link is multidirectional, which
|
|
is not the same as merely "going back" after traversing a link.</p>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="N899"></a>2.3 Resources in Relation to the Physical Location of a Linking Element</h3>
|
|
<p>[<a name="dt-local-resource" title="Local resource">Definition</a>: A <b>local resource</b>
|
|
is an XML element that participates in a link by virtue of having as its parent,
|
|
or being itself, a linking element]. [<a name="dt-remote-resource" title="Remote resource">Definition</a>: Any resource or resource portion that participates
|
|
in a link by virtue of being addressed with a URI reference is considered
|
|
a <b>remote resource</b>, even if it is in the same XML document as
|
|
the link, or even inside the same linking element.] Put another way,
|
|
a local resource is specified "by value," and a remote resource
|
|
is specified "by reference."</p>
|
|
<p>[<a name="dt-outbound" title="Outbound">Definition</a>: An arc that has a local starting
|
|
resource and a remote ending resource goes <b>outbound</b>, that is,
|
|
away from the linking element.] (Examples of links with such an arc
|
|
are the HTML <code>A</code> element, HyTime "clinks," and Text Encoding
|
|
Initiative <code>XREF</code> elements.) [<a name="dt-inbound" title="Inbound">Definition</a>: If
|
|
an arc's ending resource is local but its starting resource is remote, then
|
|
the arc goes <b>inbound</b>.] [<a name="dt-third-party" title="Third-party">Definition</a>: If neither the starting resource nor the ending resource
|
|
is local, then the arc is a <b>third-party</b> arc.] Though
|
|
it is not required, any one link typically specifies only one kind of arc
|
|
throughout, and thus might be referred to as an inbound, outbound, or third-party
|
|
link.</p>
|
|
<p>To create a link that emanates from a resource to which you do not have
|
|
(or choose not to exercise) write access, or from a resource that offers no
|
|
way to embed linking constructs, it is necessary to use an inbound or third-party
|
|
arc. When such arcs are used, the requirements for discovery of the link are
|
|
greater than for outbound arcs. [<a name="dt-linkbase" title="Linkbase">Definition</a>: Documents
|
|
containing collections of inbound and third-party links are called link databases,
|
|
or <b>linkbases</b>.]</p>
|
|
</div>
|
|
</div>
|
|
<div class="div1">
|
|
|
|
<h2><a name="conformance"></a>3 XLink Processing and Conformance</h2>
|
|
<p>This section details processing and conformance requirements on XLink applications
|
|
and markup.</p>
|
|
<p>[<a name="dt-must" title="Must, May, etc.">Definition</a>: The key words <b>must</b>, <b>must
|
|
not</b>, <b>required</b>, <b>shall</b>, <b>shall not</b>, <b>should</b>, <b>should
|
|
not</b>, <b>recommended</b>, <b>may</b>, and <b>optional</b>
|
|
in this specification are to be interpreted as described in <a href="#rfc2119">[IETF RFC 2119]</a>.]</p>
|
|
<div class="div2">
|
|
|
|
<h3><a name="N1022"></a>3.1 Processing Dependencies</h3>
|
|
<p>XLink processing depends on <a href="#XML">[XML]</a>, <a href="#xname">[XML Names]</a>, <a href="#xbase">[XML Base]</a>, and <a href="#rfc2396">[IETF RFC 2396]</a> (as updated by <a href="#rfc2732">[IETF RFC 2732]</a>).</p>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="markup-reqs"></a>3.2 Markup Conformance</h3>
|
|
<p>An XML element conforms to XLink if:</p>
|
|
<ol>
|
|
<li><p>it has a <code>type</code> attribute from the XLink namespace whose
|
|
value is one of "simple", "extended", "locator", "arc", "resource", "title", or "none", and</p></li>
|
|
<li><p>it adheres to the conformance constraints imposed by the chosen XLink
|
|
element type, as prescribed in this specification.</p></li>
|
|
</ol>
|
|
<p>This specification imposes no particular constraints on DTDs; conformance
|
|
applies only to elements and attributes.</p>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="app-reqs"></a>3.3 Application Conformance</h3>
|
|
<p>An XLink application is any software module that interprets well-formed
|
|
XML documents containing XLink elements and attributes, or XML information
|
|
sets <a href="#infoset">[XIS]</a> containing information items and properties corresponding
|
|
to XLink elements and attributes. (This document refers to elements and attributes,
|
|
but all specifications herein apply to their information set equivalents as
|
|
well.) Such an application is conforming if:</p>
|
|
<ol>
|
|
<li><p>it observes the mandatory conditions for applications ("must")
|
|
set forth in this specification, and</p></li>
|
|
<li><p>for any optional conditions ("should" and "may")
|
|
it chooses to observe, it observes them in the way prescribed, and</p></li>
|
|
<li><p>it performs markup conformance testing according to all the conformance
|
|
constraints appearing in this specification.</p></li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
<div class="div1">
|
|
|
|
<h2><a name="att-method"></a>4 XLink Markup Design</h2>
|
|
<p>This section describes the design of XLink's markup vocabulary.</p>
|
|
<p>Link markup needs to be recognized reliably by XLink applications in order
|
|
to be traversed and handled properly. XLink uses the mechanism described in
|
|
the Namespaces in XML Recommendation <a href="#xname">[XML Names]</a> to accomplish recognition
|
|
of the constructs in the XLink vocabulary.</p>
|
|
<p>The XLink namespace defined by this specification has the following URI:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre>http://www.w3.org/1999/xlink</pre></td></tr></table>
|
|
<p>As dictated by <a href="#xname">[XML Names]</a>, the use of XLink elements and attributes
|
|
requires declaration of the XLink namespace. For example, the following declaration
|
|
would make the prefix <code>xlink</code> available within the <code>myElement</code>
|
|
element to represent the XLink namespace:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><myElement
|
|
xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
...
|
|
</myElement></pre></td></tr></table>
|
|
<div class="note"><p class="prefix"><b>Note:</b></p>
|
|
<p>Most code examples in this specification do not show an XLink namespace
|
|
declaration. The <code>xlink</code> prefix is used throughout to stand for the
|
|
declaration of the XLink namespace on elements in whose scope the so-marked
|
|
attribute appears (on the same element that bears the attribute or on some
|
|
ancestor element), whether or not an XLink namespace declaration is present
|
|
in the example.</p>
|
|
</div>
|
|
<p>XLink's namespace provides <b>global attributes</b> for use on elements
|
|
that are in any arbitrary namespace. The global attributes are <code>type</code>, <code>href</code>, <code>role</code>, <code>arcrole</code>, <code>title</code>, <code>show</code>, <code>actuate</code>, <code>label</code>, <code>from</code>,
|
|
and <code>to</code>. Document creators use the XLink global attributes to make
|
|
the elements in their own namespace, or even in a namespace they do not control,
|
|
recognizable as XLink elements. The <code>type</code> attribute indicates the
|
|
XLink element type (simple, extended, locator, arc, resource, or title); the
|
|
element type dictates the XLink-imposed constraints that such an element <a title="Must, May, etc." href="#dt-must">must</a> follow and the behavior of XLink applications
|
|
on encountering the element.</p>
|
|
<p>Following is an example of a <code>crossReference</code> element from a non-XLink
|
|
namespace that has XLink global attributes:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><my:crossReference
|
|
xmlns:my="http://example.com/"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
xlink:type="simple"
|
|
xlink:href="students.xml"
|
|
xlink:role="http://www.example.com/linkprops/studentlist"
|
|
xlink:title="Student List"
|
|
xlink:show="new"
|
|
xlink:actuate="onRequest">
|
|
Current List of Students
|
|
</my:crossReference></pre></td></tr></table>
|
|
<p>Using global attributes always requires the use of namespace prefixes on
|
|
the individual attributes and the use of the <code>type</code> attribute on
|
|
the element.</p>
|
|
<div class="div2">
|
|
|
|
<h3><a name="N1238"></a>4.1 XLink Attribute Usage Patterns</h3>
|
|
<p>While the XLink attributes are considered global by virtue of their use
|
|
of the namespace mechanism, their allowed combinations on any one XLink element
|
|
type depend greatly on the value of the special <code>type</code> attribute
|
|
(see <a href="#link-types"><b>5.3 XLink Element Type Attribute (type)</b></a> for more information) for the element on
|
|
which they appear. The conformance constraint notes in this specification
|
|
detail their allowed usage patterns. Following is a summary of the element
|
|
types (columns) on which the global attributes (rows) are allowed, with an
|
|
indication of whether a value is required (R) or optional (O):</p>
|
|
<table border="1" frame="border"><thead><tr><th rowspan="1" colspan="1"></th><th rowspan="1" colspan="1"><code>simple</code></th>
|
|
<th rowspan="1" colspan="1"><code>extended</code></th><th rowspan="1" colspan="1"><code>locator</code></th><th rowspan="1" colspan="1"><code>arc</code></th><th rowspan="1" colspan="1"><code>resource</code></th>
|
|
<th rowspan="1" colspan="1"><code>title</code></th></tr></thead><tbody><tr><td rowspan="1" colspan="1"><code>type</code></td><td rowspan="1" colspan="1">R</td>
|
|
<td rowspan="1" colspan="1">R</td><td rowspan="1" colspan="1">R</td><td rowspan="1" colspan="1">R</td><td rowspan="1" colspan="1">R</td><td rowspan="1" colspan="1">R</td></tr><tr><td rowspan="1" colspan="1"><code>href</code></td>
|
|
<td rowspan="1" colspan="1">O </td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">R</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td></tr><tr><td rowspan="1" colspan="1"><code>role</code></td>
|
|
<td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td></tr><tr><td rowspan="1" colspan="1"><code>arcrole</code></td>
|
|
<td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td></tr><tr><td rowspan="1" colspan="1"><code>title</code></td>
|
|
<td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td></tr><tr><td rowspan="1" colspan="1"><code>show</code></td>
|
|
<td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td></tr><tr><td rowspan="1" colspan="1"><code>actuate</code></td>
|
|
<td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td></tr><tr><td rowspan="1" colspan="1"><code>label</code></td>
|
|
<td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td></tr><tr><td rowspan="1" colspan="1"><code>from</code></td>
|
|
<td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td></tr><tr><td rowspan="1" colspan="1"><code>to</code></td>
|
|
<td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1">O</td><td rowspan="1" colspan="1"></td><td rowspan="1" colspan="1"></td></tr></tbody></table>
|
|
<p>(See also <a href="#sample-dtd-appx"><b>B Sample DTD</b></a> for a non-normative DTD that
|
|
illustrates the allowed patterns of attributes.)</p>
|
|
<p>This specification uses the convention "<var>xxx</var>-type element"
|
|
to refer to elements that <a title="Must, May, etc." href="#dt-must">must</a> adhere to
|
|
a named set of constraints associated with an XLink element type, no matter
|
|
what name the element actually has. For example, "<code>locator</code>-type
|
|
element" would refer to all of the following elements:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><locator xlink:type="locator" ... />
|
|
<loc xlink:type="locator" ... />
|
|
<my:pointer xlink:type="locator" ... /></pre></td></tr></table>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="N1599"></a>4.2 XLink Element Type Relationships</h3>
|
|
<p>Various XLink element types have special meanings dictated by this specification
|
|
when they appear as direct children of other XLink element types. Following
|
|
is a summary of the child element types that play a significant role in particular
|
|
parent element types. (Other combinations have no XLink-dictated significance.)</p>
|
|
<table border="1"><thead><tr><th rowspan="1" colspan="1">Parent type</th><th rowspan="1" colspan="1">Significant child types</th>
|
|
</tr></thead><tbody><tr><td rowspan="1" colspan="1"><code>simple</code></td><td rowspan="1" colspan="1">none</td></tr><tr><td rowspan="1" colspan="1"><code>extended</code></td>
|
|
<td rowspan="1" colspan="1"><code>locator</code>, <code>arc</code>, <code>resource</code>, <code>title</code></td>
|
|
</tr><tr><td rowspan="1" colspan="1"><code>locator</code></td><td rowspan="1" colspan="1"><code>title</code></td></tr><tr><td rowspan="1" colspan="1"><code>arc</code></td>
|
|
<td rowspan="1" colspan="1"><code>title</code></td></tr><tr><td rowspan="1" colspan="1"><code>resource</code></td><td rowspan="1" colspan="1">none</td></tr>
|
|
<tr><td rowspan="1" colspan="1"><code>title</code></td><td rowspan="1" colspan="1">none</td></tr></tbody></table></div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="defaulting"></a>4.3 Attribute Value Defaulting</h3>
|
|
<p>Using XLink potentially involves using a large number of attributes for
|
|
supplying important link information. In cases where the values of the desired
|
|
XLink attributes are unchanging across individual instances in all the documents
|
|
of a certain type, attribute value defaults (fixed or not) <a title="Must, May, etc." href="#dt-must">may</a>
|
|
be added to a DTD so that the attributes do not have to appear physically
|
|
on element start-tags. For example, if attribute defaults were provided for
|
|
the <code>xmlns:xlink</code>, <code>xmlns:my</code>, <code>type</code>, <code>show</code>,
|
|
and <code>actuate</code> attributes in the example in the introduction to <a href="#att-method"><b>4 XLink Markup Design</b></a>, the example would look as follows:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><my:crossReference
|
|
xlink:href="students.xml"
|
|
xlink:role="http://www.example.com/linkprops/studentlist"
|
|
xlink:title="Student List">
|
|
Current List of Students
|
|
</my:crossReference></pre></td></tr></table>
|
|
<p>Information sets that have been created under the control of a DTD have
|
|
all attribute values filled in.</p>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="integrating"></a>4.4 Integrating XLink Usage with Other Markup</h3>
|
|
<p>This specification defines only attributes and attribute values in the
|
|
XLink namespace. There is no restriction on using non-XLink attributes alongside
|
|
XLink attributes. In addition, most XLink attributes are optional and the
|
|
choice of simple or extended link is up to the markup designer or document
|
|
creator, so a DTD that uses XLink features need not use or declare the entire
|
|
set of XLink's attributes. Finally, while this specification identifies the
|
|
minimum constraints on XLink markup, DTDs that use XLink are free to tighten
|
|
these constraints. The use of XLink does not absolve a valid document from
|
|
conforming to the constraints expressed in its governing DTD.</p>
|
|
<p>Following is an example of a <code>crossReference</code> element with both
|
|
XLink and non-XLink attributes:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><my:crossReference
|
|
xmlns:my="http://example.com/"
|
|
my:lastEdited="2000-06-10"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
xlink:type="simple"
|
|
xlink:href="students.xml">
|
|
Current List of Students
|
|
</my:crossReference></pre></td></tr></table>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="legacy"></a>4.5 Using XLink with Legacy Markup</h3>
|
|
<p>Because XLink's global attributes require the use of namespace prefixes,
|
|
non-XLink-based links in legacy documents generally do not serve as conforming
|
|
XLink constructs as they stand, even if attribute value defaulting is used.
|
|
For example, XHTML 1.0 has an <code>a</code> element with an <code>href</code> attribute,
|
|
but because the attribute is a local one attached to the <code>a</code> element
|
|
in the XHTML namespace, it is not the same as an <code>xlink:href</code> global
|
|
attribute in the XLink namespace.</p>
|
|
</div>
|
|
</div>
|
|
<div class="div1">
|
|
|
|
<h2><a name="linking-elements"></a>5 XLink Elements and Attributes</h2>
|
|
<p>XLink offers two kinds of links:</p>
|
|
<dl>
|
|
<dt class="label">Extended links</dt>
|
|
<dd>
|
|
<p>Extended links offer full XLink functionality, such as inbound and third-party
|
|
arcs, as well as links that have arbitrary numbers of participating resources.
|
|
As a result, their structure can be fairly complex, including elements for
|
|
pointing to remote resources, elements for containing local resources, elements
|
|
for specifying arc traversal rules, and elements for specifying human-readable
|
|
resource and arc titles.</p>
|
|
<p>XLink defines a way to give an extended link special semantics for finding
|
|
linkbases; used in this fashion, an extended link helps an XLink application
|
|
process other links.</p>
|
|
</dd>
|
|
<dt class="label">Simple links</dt>
|
|
<dd>
|
|
<p>Simple links offer shorthand syntax for a common kind of link, an outbound
|
|
link with exactly two participating resources (into which category HTML-style <code>A</code>
|
|
and <code>IMG</code> links fall). Because simple links offer less functionality
|
|
than extended links, they have no special internal structure.</p>
|
|
<p>While simple links are conceptually a subset of extended links, they are
|
|
syntactically different. For example, to convert a simple link into an extended
|
|
link, several structural changes would be needed.</p>
|
|
</dd>
|
|
</dl>
|
|
<p>The following sections define the XLink elements and attributes.</p>
|
|
<div class="div2">
|
|
|
|
<h3><a name="extended-link"></a>5.1 Extended Links (<code>extended</code>-Type Element)</h3>
|
|
<p>[<a name="dt-extendedlink" title="Extended link">Definition</a>: An <b>extended link</b>
|
|
is a link that associates an arbitrary number of resources. The participating
|
|
resources <a title="Must, May, etc." href="#dt-must">may</a> be any combination of remote
|
|
and local.]</p>
|
|
<p>The only kind of link that is able to have inbound and third-party arcs
|
|
is an extended link. Typically, extended linking elements are stored separately
|
|
from the resources they associate (for example, in entirely different documents).
|
|
Thus, extended links are important for situations where the participating
|
|
resources are read-only, or where it is expensive to modify and update them
|
|
but inexpensive to modify and update a separate linking element, or where
|
|
the resources are in formats with no native support for embedded links (such
|
|
as many multimedia formats).</p>
|
|
<p>The following diagram shows an extended link that associates five remote
|
|
resources. This could represent, for example, information about a student's
|
|
course load: one resource being a description of the student, another being
|
|
a description of the student's academic advisor, two resources representing
|
|
courses that the student is attending, and the last resource representing
|
|
a course that the student is auditing.</p>
|
|
<img src="extended-ool.gif" alt="Stylized Diagram of Out-of-Line Extended Link">
|
|
<p>Without the extended link, the resources might be entirely unrelated; for
|
|
example, they might be in five separate documents. The lines emanating from
|
|
the extended link represent the association it creates among the resources.
|
|
However, notice that the lines do not have directionality. Directionality
|
|
is expressed with traversal rules; without such rules being provided, the
|
|
resources are associated in no particular order, with no implication as to
|
|
whether and how individual resources are accessed.</p>
|
|
<p>The following diagram shows an extended link that associates five remote
|
|
resources and one local resource (a special element inside the extended link
|
|
element). This could represent the same sort of course-load example as described
|
|
above, with the addition of the student's grade point average stored locally.
|
|
Again, the lines represent mere association of the six resources, without
|
|
traversal directions or behaviors implied.</p>
|
|
<img src="extended-inl.gif" alt="Stylized Diagram of Inline Extended Link">
|
|
<p>The XLink element type for extended links is any element with an attribute
|
|
in the XLink namespace called <code>type</code> with a value of "extended".</p>
|
|
<p>The <code>extended</code>-type element <a title="Must, May, etc." href="#dt-must">may</a>
|
|
contain a mixture of the following elements in any order, possibly along with
|
|
other content and markup:</p>
|
|
<ul>
|
|
<li><p><code>locator</code>-type elements that address the remote resources
|
|
participating in the link</p></li>
|
|
<li><p><code>arc</code>-type elements that provide traversal rules among the
|
|
link's participating resources</p></li>
|
|
<li><p><code>title</code>-type elements that provide human-readable labels for
|
|
the link</p></li>
|
|
<li><p><code>resource</code>-type elements that supply local resources that
|
|
participate in the link</p></li>
|
|
</ul>
|
|
<p>It is not an error for an <code>extended</code>-type element to associate fewer
|
|
than two resources. If the link has only one participating resource, or none
|
|
at all, it is simply untraversable. Such a link may still be useful, for example,
|
|
to associate properties with a single resource by means of XLink attributes,
|
|
or to provide a placeholder for link information that will be populated eventually.</p>
|
|
<p>Subelements of the <code>simple</code> or <code>extended</code> type anywhere inside
|
|
a parent <code>extended</code>-type element have no XLink-specified meaning. Subelements of the <code>locator</code>, <code>arc</code>, or <code>resource</code>
|
|
type that are not direct children of an <code>extended</code>-type element have
|
|
no XLink-specified meaning.</p>
|
|
<p>The <code>extended</code>-type element <a title="Must, May, etc." href="#dt-must">may</a>
|
|
have the semantic attributes <code>role</code> and <code>title</code> (see <a href="#link-semantics"><b>5.5 Semantic Attributes (role, arcrole, and title)</b></a>). They supply semantic information about the link as
|
|
a whole; the <code>role</code> attribute indicates a property that the entire
|
|
link has, and the <code>title</code> attribute indicates a human-readable description
|
|
of the entire link. If other XLink attributes are present on the element,
|
|
they have no XLink-specified relationship to the link. If both a <code>title</code>
|
|
attribute and one or more <code>title</code>-type elements are present, they have
|
|
no XLink-specified relationship; a higher-level application built on XLink
|
|
will likely want to specify appropriate treatment (for example, precedence)
|
|
in this case.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>extended</code>-Type Element Declarations and Instance</h5>
|
|
<p>Following is a non-normative set of declarations for an <code>extended</code>-type
|
|
element and its subelements. Parts of this example are reused throughout this
|
|
specification. Note that the <code>type</code> attribute and some other attributes
|
|
are defaulted in the DTD in order to highlight the attributes that are changing
|
|
on a per-instance basis.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ELEMENT courseload ((tooltip|person|course|gpa|go)*)>
|
|
<!ATTLIST courseload
|
|
xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
|
|
xlink:type (extended) #FIXED "extended"
|
|
xlink:role CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED>
|
|
|
|
<!ELEMENT tooltip ANY>
|
|
<!ATTLIST tooltip
|
|
xlink:type (title) #FIXED "title"
|
|
xml:lang CDATA #IMPLIED>
|
|
|
|
<!ELEMENT person EMPTY>
|
|
<!ATTLIST person
|
|
xlink:type (locator) #FIXED "locator"
|
|
xlink:href CDATA #REQUIRED
|
|
xlink:role CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:label NMTOKEN #IMPLIED>
|
|
|
|
<!ELEMENT course EMPTY>
|
|
<!ATTLIST course
|
|
xlink:type (locator) #FIXED "locator"
|
|
xlink:href CDATA #REQUIRED
|
|
xlink:role CDATA #FIXED "http://www.example.com/linkprops/course"
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:label NMTOKEN #IMPLIED>
|
|
|
|
<!-- GPA = "grade point average" -->
|
|
<!ELEMENT gpa ANY>
|
|
<!ATTLIST gpa
|
|
xlink:type (resource) #FIXED "resource"
|
|
xlink:role CDATA #FIXED "http://www.example.com/linkprops/gpa"
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:label NMTOKEN #IMPLIED>
|
|
|
|
<!ELEMENT go EMPTY>
|
|
<!ATTLIST go
|
|
xlink:type (arc) #FIXED "arc"
|
|
xlink:arcrole CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:show (new
|
|
|replace
|
|
|embed
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:actuate (onLoad
|
|
|onRequest
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:from NMTOKEN #IMPLIED
|
|
xlink:to NMTOKEN #IMPLIED></pre></td></tr></table>
|
|
<p>Following is how XML elements using these declarations might look.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><courseload>
|
|
|
|
<tooltip>Course Load for Pat Jones</tooltip>
|
|
|
|
<person
|
|
xlink:href="students/patjones62.xml"
|
|
xlink:label="student62"
|
|
xlink:role="http://www.example.com/linkprops/student"
|
|
xlink:title="Pat Jones" />
|
|
|
|
<person
|
|
xlink:href="profs/jaysmith7.xml"
|
|
xlink:label="prof7"
|
|
xlink:role="http://www.example.com/linkprops/professor"
|
|
xlink:title="Dr. Jay Smith" />
|
|
<!-- more remote resources for professors, teaching assistants, etc. -->
|
|
|
|
<course
|
|
xlink:href="courses/cs101.xml"
|
|
xlink:label="CS-101"
|
|
xlink:title="Computer Science 101" />
|
|
<!-- more remote resources for courses, seminars, etc. -->
|
|
|
|
<gpa xlink:label="PatJonesGPA">3.5</gpa>
|
|
|
|
<go
|
|
xlink:from="student62"
|
|
xlink:to="PatJonesGPA"
|
|
xlink:show="new"
|
|
xlink:actuate="onRequest"
|
|
xlink:title="Pat Jones's GPA" />
|
|
<go
|
|
xlink:from="CS-101"
|
|
xlink:arcrole="http://www.example.com/linkprops/auditor"
|
|
xlink:to="student62"
|
|
xlink:show="replace"
|
|
xlink:actuate="onRequest"
|
|
xlink:title="Pat Jones, auditing the course" />
|
|
<go
|
|
xlink:from="student62"
|
|
xlink:arcrole="http://www.example.com/linkprops/advisor"
|
|
xlink:to="prof7"
|
|
xlink:show="replace"
|
|
xlink:actuate="onRequest"
|
|
xlink:title="Dr. Jay Smith, advisor" />
|
|
|
|
</courseload></pre></td></tr></table>
|
|
</div>
|
|
<div class="div3">
|
|
|
|
<h4><a name="local-resource"></a>5.1.1 Local Resources for an Extended Link (<code>resource</code>-Type Element)</h4>
|
|
<p>An extended link indicates its participating local resources by means of
|
|
special subelements that appear inside the extended link. An entire subelement,
|
|
together with all of its contents, makes up a local resource.</p>
|
|
<p>The XLink element for local resources is any element with an attribute
|
|
in the XLink namespace called <code>type</code> with a value of "resource".</p>
|
|
<p>The <code>resource</code>-type element <a title="Must, May, etc." href="#dt-must">may</a>
|
|
have any content; whatever content is present has no XLink-specified relationship
|
|
to the link. It is possible for a <code>resource</code>-type element to have no
|
|
content; in cases where it serves as a starting resource expected to be traversed
|
|
on request, interactive XLink applications will typically generate some content
|
|
in order to give the user a way to initiate the traversal. If a <code>resource</code>-type element has anything
|
|
other than an <code>extended</code>-type element for a parent, the <code>resource</code>-type
|
|
element has no XLink-specified meaning.</p>
|
|
<p>The <code>resource</code>-type element <a title="Must, May, etc." href="#dt-must">may</a>
|
|
have the semantic attributes <code>role</code> and <code>title</code> (see <a href="#link-semantics"><b>5.5 Semantic Attributes (role, arcrole, and title)</b></a>) and the traversal attribute <code>label</code> (see <a href="#traversal-atts"><b>5.7 Traversal Attributes (label, from, and to)</b></a>). The semantic attributes supply information about
|
|
the resource in generic terms, outside of the context of a particular arc
|
|
that leads to it; the <code>role</code> attribute indicates a property of the
|
|
resource, and the <code>title</code> attribute indicates a human-readable description
|
|
of the resource. The <code>label</code> attribute provides a way for an <code>arc</code>-type
|
|
element to refer to it in creating a traversal arc.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>resource</code>-Type Element Declarations and Instance</h5>
|
|
<p>Following is a non-normative set of declarations for a <code>resource</code>-type
|
|
element.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ELEMENT gpa ANY>
|
|
<!ATTLIST gpa
|
|
xlink:type (resource) #FIXED "resource"
|
|
xlink:role CDATA #FIXED "http://www.example.com/linkprops/gpa"
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:label NMTOKEN #IMPLIED></pre></td></tr></table>
|
|
<p>Following is how an XML element using these declarations might look.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre> <gpa xlink:label="PatJonesGPA">3.5</gpa>
|
|
</pre></td></tr></table>
|
|
</div></div>
|
|
<div class="div3">
|
|
|
|
<h4><a name="remote-resource"></a>5.1.2 Remote Resources for an Extended Link (<code>locator</code>-Type Element)</h4>
|
|
<p>An extended link indicates remote resources that participate in it by means
|
|
of locator elements.</p>
|
|
<p>The XLink element for locators is any element with an attribute in the
|
|
XLink namespace called <code>type</code> with a value of "locator".</p>
|
|
<p>The <code>locator</code>-type element <a title="Must, May, etc." href="#dt-must">may</a>
|
|
have any content. Other than <code>title</code>-type elements that are direct
|
|
children (see <a href="#title-element"><b>5.1.4 Titles for Extended Links, Locators, and Arcs (title-Type Element)</b></a>), whatever content is present
|
|
has no XLink-specified relationship to the link. If a <code>locator</code>-type
|
|
element contains nested XLink elements, such contained elements have no XLink-specified
|
|
relationship to the parent link. If a <code>locator</code>-type element has anything
|
|
other than an <code>extended</code>-type element for a parent, the <code>locator</code>-type
|
|
element has no XLink-specified meaning.</p>
|
|
<div class="constraint">
|
|
<p class="prefix"><a name="cn-locator-atts"></a><b>Constraint: Attributes on Locator Element</b></p>
|
|
<p>The <code>locator</code>-type element <a title="Must, May, etc." href="#dt-must">must</a>
|
|
have the locator attribute (see <a href="#link-locators"><b>5.4 Locator Attribute (href)</b></a>). The locator
|
|
attribute (<code>href</code>) <a title="Must, May, etc." href="#dt-must">must</a> have a value
|
|
supplied.</p>
|
|
</div>
|
|
<p>The <code>locator</code>-type element <a title="Must, May, etc." href="#dt-must">may</a>
|
|
have the semantic attributes <code>role</code> and <code>title</code> (see <a href="#link-semantics"><b>5.5 Semantic Attributes (role, arcrole, and title)</b></a>) and the traversal attribute <code>label</code> (see <a href="#traversal-atts"><b>5.7 Traversal Attributes (label, from, and to)</b></a>). The locator attribute provides a URI reference that
|
|
identifies a remote resource. The semantic attributes supply information about
|
|
the resource in generic terms, outside of the context of a particular arc
|
|
that leads to it; the <code>role</code> attribute indicates a property that
|
|
the resource has, and the <code>title</code> attribute indicates a human-readable
|
|
description of the resource. The <code>label</code> attribute provides a way
|
|
for an <code>arc</code>-type element to refer to it in creating a traversal arc.</p>
|
|
<div class="note"><p class="prefix"><b>Note:</b></p>
|
|
<p>A <code>locator</code>-type element, by itself, does not constitute a link
|
|
just because it has a locator (<code>href</code>) attribute; unlike a <code>simple</code>-type
|
|
element, it does not create an XLink-governed association between itself and
|
|
the referenced resource.</p>
|
|
</div>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>locator</code>-Type Element Declarations and Instance</h5>
|
|
<p>Following is a non-normative set of declarations for a <code>locator</code>-type
|
|
element.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ELEMENT person EMPTY>
|
|
<!ATTLIST person
|
|
xlink:type (locator) #FIXED "locator"
|
|
xlink:href CDATA #REQUIRED
|
|
xlink:role CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:label NMTOKEN #IMPLIED>
|
|
|
|
<!ELEMENT course EMPTY>
|
|
<!ATTLIST course
|
|
xlink:type (locator) #FIXED "locator"
|
|
xlink:href CDATA #REQUIRED
|
|
xlink:role CDATA #FIXED "http://www.example.com/linkprops/course"
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:label NMTOKEN #IMPLIED></pre></td></tr></table>
|
|
<p>Following is how XML elements using these declarations might look.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><person
|
|
xlink:href="students/patjones62.xml"
|
|
xlink:label="student62"
|
|
xlink:role="http://www.example.com/linkprops/student"
|
|
xlink:title="Pat Jones" />
|
|
|
|
<person
|
|
xlink:href="profs/jaysmith7.xml"
|
|
xlink:label="prof7"
|
|
xlink:role="http://www.example.com/linkprops/professor"
|
|
xlink:title="Dr. Jay Smith" />
|
|
|
|
<course
|
|
xlink:href="courses/cs101.xml"
|
|
xlink:label="CS-101"
|
|
xlink:title="Computer Science 101" /></pre></td></tr></table>
|
|
</div></div>
|
|
<div class="div3">
|
|
|
|
<h4><a name="xlink-arcs"></a>5.1.3 Traversal Rules for an Extended Link (<code>arc</code>-Type Element)</h4>
|
|
<p>An extended link <a title="Must, May, etc." href="#dt-must">may</a> indicate rules for
|
|
traversing among its participating resources by means of a series of optional
|
|
arc elements.</p>
|
|
<p>The XLink element for arcs is any element with an attribute in the XLink
|
|
namespace called <code>type</code> with a value of "arc".</p>
|
|
<p>The <code>arc</code>-type element <a title="Must, May, etc." href="#dt-must">may</a> have
|
|
any content. Other than <code>title</code>-type elements that are direct children
|
|
(see <a href="#title-element"><b>5.1.4 Titles for Extended Links, Locators, and Arcs (title-Type Element)</b></a>), whatever content is present has no XLink-specified
|
|
relationship to the link. If an <code>arc</code>-type element has anything other
|
|
than an <code>extended</code>-type element for its parent, the <code>arc</code>-type
|
|
element has no XLink-specified meaning.</p>
|
|
<p>The <code>arc</code>-type element <a title="Must, May, etc." href="#dt-must">may</a> have
|
|
the traversal attributes <code>from</code> and <code>to</code> (see <a href="#traversal-atts"><b>5.7 Traversal Attributes (label, from, and to)</b></a>),
|
|
the behavior attributes <code>show</code> and <code>actuate</code> (see <a href="#link-behaviors"><b>5.6 Behavior Attributes (show and actuate) </b></a>) and the semantic attributes <code>arcrole</code> and <code>title</code>
|
|
(see <a href="#link-semantics"><b>5.5 Semantic Attributes (role, arcrole, and title)</b></a>).</p>
|
|
<p>The traversal attributes define the desired traversal between pairs of
|
|
resources that participate in the same link, where the resources are identified
|
|
by their <code>label</code> attribute values. The <code>from</code> attribute
|
|
defines resources from which traversal <a title="Must, May, etc." href="#dt-must">may</a>
|
|
be initiated, that is, <a title="Starting resource" href="#dt-starting-resource">starting resources</a>,
|
|
while the <code>to</code> attribute defines resources that <a title="Must, May, etc." href="#dt-must">may</a>
|
|
be traversed to, that is, <a title="Ending resource" href="#dt-ending-resource">ending resources</a>.
|
|
The behavior attributes specify the desired behavior for XLink applications
|
|
to use when traversing to the ending resource.</p>
|
|
<p>The semantic attributes describe the meaning of the arc's ending resource
|
|
relative to its starting resource. The <code>arcrole</code> attribute corresponds
|
|
to the <a href="#rdf">[RDF]</a> notion of a property, where the role can be interpreted
|
|
as stating that "<var>starting-resource</var> HAS <var>arc-role</var> <var>ending-resource</var>."
|
|
This contextual role can differ from the meaning of an ending resource when
|
|
taken outside the context of this particular arc. For example, a resource
|
|
might generically represent a "person," but in the context of
|
|
a particular arc it might have the role of "mother" and in the
|
|
context of a different arc it might have the role of "daughter."</p>
|
|
<p>When the same resource serves as a starting resource in several arcs (whether
|
|
in a single link or across many links), traversal-request behavior is unconstrained
|
|
by this specification, but one possibility for interactive applications is
|
|
a pop-up menu that lists the relevant arc or link titles.</p>
|
|
<p>The following diagram shows an extended link that associates five remote
|
|
resources and provides rules for traversal among them. All of the arcs specified
|
|
are third-party arcs; that is, the arcs go exclusively between remote resources.
|
|
The nondirectional solid lines indicate, as before, that the link is associating
|
|
the five resources; the new dotted arrows indicate the traversal rules that
|
|
the link provides. Notice that some resources share the same <code>label</code>
|
|
value.</p>
|
|
<img src="extended-arcs.gif" alt="Stylized Diagram of Out-of-Line Extended Link with Arcs">
|
|
<p>This diagram reflects directional traversal arcs created by the following
|
|
settings, where both As and Cs are allowed to initiate traversal to all Bs.
|
|
Because some labels appear on several resources, each arc specification potentially
|
|
creates several traversal arcs at once:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><go xlink:type="arc" xlink:from="A" xlink:to="B" />
|
|
<go xlink:type="arc" xlink:from="C" xlink:to="B" /></pre></td></tr></table>
|
|
<p>As another example, assume an extended link that contains five locators,
|
|
two with <code>label</code> values of "parent" and three with <code>label</code>
|
|
values of "child":</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><extendedlink xlink:type="extended">
|
|
<loc xlink:type="locator" xlink:href="..." xlink:label="parent" xlink:title="p1" />
|
|
<loc xlink:type="locator" xlink:href="..." xlink:label="parent" xlink:title="p2" />
|
|
<loc xlink:type="locator" xlink:href="..." xlink:label="child" xlink:title="c1" />
|
|
<loc xlink:type="locator" xlink:href="..." xlink:label="child" xlink:title="c2" />
|
|
<loc xlink:type="locator" xlink:href="..." xlink:label="child" xlink:title="c3" />
|
|
... <!-- arc-type elements would go here -->
|
|
</extendedlink></pre></td></tr></table>
|
|
<p>The following specifies traversal from parent resources to child resources,
|
|
which includes all of p1-c1, p1-c2, p1-c3, p2-c1, p2-c2, and p2-c3:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><go xlink:type="arc" xlink:from="parent" xlink:to="child" /></pre></td></tr></table>
|
|
<p>If no value is supplied for a <code>from</code> or <code>to</code> attribute,
|
|
the missing value is interpreted as standing for <em>all</em> the labels
|
|
supplied on <code>locator</code>-type elements in that <code>extended</code>-type
|
|
element. For example, the following specifies traversal from parents to children
|
|
and also from children to children, which includes all of p1-c1, p1-c2, p1-c3,
|
|
p2-c1, p2-c2, p2-c3, c1-c1, c1-c2, c1-c3, c2-c1, c2-c2, c2-c3, c3-c1, c3-c2,
|
|
and c3-c3:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><go xlink:type="arc" xlink:to="child" /></pre></td></tr></table>
|
|
<p>In this case, note that the traversal rules include arcs from some resources
|
|
to other resources with the same label (from children to other children),
|
|
as well as from some resources to themselves (from a child to itself); this
|
|
is not an error.</p>
|
|
<p>If no <code>arc</code>-type elements are provided in an extended link, then
|
|
by extension the missing <code>from</code> and <code>to</code> values are interpreted
|
|
as standing for all the labels in that link. This would be equivalent to the
|
|
following traversal specification:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><go xlink:type="arc" /></pre></td></tr></table>
|
|
<p>When more than one locator has the same label, the set of locators with
|
|
the same label are to be understood as individual locators, rather than as
|
|
referring to an aggregate resource; the traversal behavior of such a link
|
|
might be the same as for a link where all the locators have different roles
|
|
and the appropriate arcs are specified to produce the identical traversal
|
|
pairs.</p>
|
|
<p>If the arc traversal rules for an extended link leave out any possible
|
|
traversal pairs, XLink defines no traversal for these pairs. A higher-level
|
|
application <a title="Must, May, etc." href="#dt-must">may </a>perform non-XLink-directed
|
|
traversals; for example, a link-checking process might traverse all available
|
|
pairs of resources.</p>
|
|
<div class="constraint">
|
|
<p class="prefix"><a name="cn-arc-duplicates"></a><b>Constraint: No Arc Duplication</b></p>
|
|
<p>Each <code>arc</code>-type element <a title="Must, May, etc." href="#dt-must">must</a> have
|
|
a pair of <code>from</code> and <code>to</code> values that does not repeat the <code>from</code>
|
|
and <code>to</code> values (respectively) for any other <code>arc</code>-type element
|
|
in the same extended link; that is, each pair in a link <a title="Must, May, etc." href="#dt-must">must</a>
|
|
be unique.</p>
|
|
</div>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>arc</code>-Type Element Declarations and Instance</h5>
|
|
<p>Following is a non-normative set of declarations for an <code>arc</code>-type
|
|
element.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ELEMENT go EMPTY>
|
|
<!ATTLIST go
|
|
xlink:type (arc) #FIXED "arc"
|
|
xlink:arcrole CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:show (new
|
|
|replace
|
|
|embed
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:actuate (onLoad
|
|
|onRequest
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:from NMTOKEN #IMPLIED
|
|
xlink:to NMTOKEN #IMPLIED></pre></td></tr></table>
|
|
<p>Following is how XML elements using these declarations might look.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><go
|
|
xlink:from="student62"
|
|
xlink:to="PatJonesGPA"
|
|
xlink:show="new"
|
|
xlink:actuate="onRequest"
|
|
xlink:title="Pat Jones's GPA" />
|
|
<go
|
|
xlink:from="CS-101"
|
|
xlink:arcrole="http://www.example.com/linkprops/auditor"
|
|
xlink:to="student62"
|
|
xlink:show="replace"
|
|
xlink:actuate="onRequest"
|
|
xlink:title="Pat Jones, auditing the course" />
|
|
<go
|
|
xlink:from="student62"
|
|
xlink:arcrole="http://www.example.com/linkprops/advisor"
|
|
xlink:to="prof7"
|
|
xlink:show="replace"
|
|
xlink:actuate="onRequest"
|
|
xlink:title="Dr. Jay Smith, advisor" /></pre></td></tr></table>
|
|
</div></div>
|
|
<div class="div3">
|
|
|
|
<h4><a name="title-element"></a>5.1.4 Titles for Extended Links, Locators, and Arcs (<code>title</code>-Type Element)</h4>
|
|
<p>The <code>extended</code>-, <code>locator</code>-, and <code>arc</code>-type elements <a title="Must, May, etc." href="#dt-must">may</a> have the <code>title</code> attribute (more about
|
|
which see <a href="#link-semantics"><b>5.5 Semantic Attributes (role, arcrole, and title)</b></a>). However, they <a title="Must, May, etc." href="#dt-must">may</a>
|
|
also have a series of one or more <code>title</code>-type elements. Such elements
|
|
are useful, for example, for cases where human-readable label information
|
|
needs further element markup, or where multiple titles are necessary. One
|
|
common motivation for using the <code>title</code>-type element is to account
|
|
for internationalization and localization. For example, title markup might
|
|
be necessary for bidirectional contexts or in East Asian languages, and multiple
|
|
titles might be necessary for different natural-language versions of a title.</p>
|
|
<p>The XLink element for titles is any element with an attribute in the XLink
|
|
namespace called <code>type</code> with a value of "title".</p>
|
|
<p>The <code>title</code>-type element <a title="Must, May, etc." href="#dt-must">may</a> have
|
|
any content. If a <code>title</code>-type element contains nested XLink elements,
|
|
such contained elements have no XLink-specified relationship to the parent
|
|
link containing the title. If a <code>title</code>-type element has anything other
|
|
than an <code>extended</code>-, <code>locator</code>-, or <code>arc</code>-type element
|
|
for a parent, the <code>title</code>-type element has no XLink-specified meaning.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>title</code>-Type Element Declarations and Instance</h5>
|
|
<p>Following is a non-normative set of declarations for a <code>title</code>-type
|
|
element. The element has been given the <code>xml:lang</code> attribute, which <a title="Must, May, etc." href="#dt-must">may</a> be used in conjunction with server settings or
|
|
other contextual information in determining which title to present.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ELEMENT advisorname (name)>
|
|
<!ATTLIST advisorname
|
|
xlink:type (title) #FIXED "title"
|
|
xml:lang CDATA #IMPLIED>
|
|
|
|
<!ELEMENT name (honorific?, given, family)>
|
|
<!-- Further subelement declarations for names --></pre></td></tr></table>
|
|
<p>Following is how XML elements using these declarations might look.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><advisor xlink:href="profs/jaysmith7.xml" ...>
|
|
<advisorname xml:lang="en">
|
|
<name>
|
|
<honorific>Dr.</honorific>
|
|
<given>Jay</given>
|
|
<family>Smith</family>
|
|
</name>
|
|
</advisorname>
|
|
</advisor></pre></td></tr></table>
|
|
</div></div>
|
|
<div class="div3">
|
|
|
|
<h4><a name="xlg"></a>5.1.5 Locating Linkbases (Special Arc Role)</h4>
|
|
<p>For an XLink application to traverse from a starting resource to an ending
|
|
resource, it needs to locate both the starting resource and the link. Locating
|
|
the two pieces is not a problem in the case of outbound arcs because the starting
|
|
resource is either the linking element itself or a child of the linking element.
|
|
However, in the case of inbound and third-party arcs, the XLink application
|
|
needs to be able to find both pieces somehow.</p>
|
|
<p>In the course load example, extended links can associate pairs of remote
|
|
resources representing students and courses. In order for the system to load
|
|
and present a "student resource" (such as a description and picture
|
|
of the person) in a way that offers traversal to related information (for
|
|
example, by allowing users to click on the student's name to traverse to information
|
|
about the courses in which she is enrolled), it needs to locate and use the
|
|
extended links that contain the association.</p>
|
|
<p><a title="Linkbase" href="#dt-linkbase">Linkbases</a> are often used to make link
|
|
management easier by gathering together a number of related linking elements.
|
|
XLink provides a way to instruct XLink applications to access potentially
|
|
relevant linkbases. The instruction takes the form of an arc specification
|
|
(whether an explicit one in an extended link, or an implicit one in a simple
|
|
link) that has the following value for its arcrole attribute:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre>http://www.w3.org/1999/xlink/properties/linkbase</pre></td></tr></table>
|
|
<div class="constraint">
|
|
<p class="prefix"><a name="require-xls-xml"></a><b>Constraint: Linkbases Must Be XML</b></p>
|
|
<p>Any linkbase specified as the ending resource of an arc with this special
|
|
value <a title="Must, May, etc." href="#dt-must">must</a> be an XML document.</p>
|
|
</div>
|
|
<p>(XLink applications <a title="Must, May, etc." href="#dt-must">may</a> also use any other
|
|
means to locate and process additional linkbases.)</p>
|
|
<p>The handling of a linkbase arc is much like the handling of a normal arc,
|
|
except that traversal entails loading the ending resource (the linkbase) to
|
|
extract its links for later use, rather than to present it to a user or to
|
|
perform some other processing. Its handling is also special in that XLink
|
|
applications <a title="Must, May, etc." href="#dt-must">must</a> suspend traversal of linkbase
|
|
arcs at user option.</p>
|
|
<p>Specifically, on loading a linkbase arc, an XLink application <a title="Must, May, etc." href="#dt-must">should</a> keep track of what the starting resource is.
|
|
Whenever a document containing that starting resource is loaded and traversal
|
|
of the linkbase arc is actuated, the application <a title="Must, May, etc." href="#dt-must">should</a>
|
|
access the linkbase and extract any extended links found inside it. In the
|
|
case that the extracted resource is a portion of a complete XML document,
|
|
such as a range or a string range, only those extended links completely contained
|
|
in the extracted portion <a title="Must, May, etc." href="#dt-must">should</a> be made available.</p>
|
|
<p>The timing of linkbase arc traversal depends on the value of the <code>actuate</code>
|
|
attribute on the arc. For example, if the value is "onLoad",
|
|
the linkbase is loaded and its links extracted as soon as the starting resource
|
|
is loaded. Any <code>show</code> attribute value on a linkbase arc <a title="Must, May, etc." href="#dt-must">must</a> be ignored, because traversal does not entail
|
|
presentation in this case.</p>
|
|
<p>Linkbases <a title="Must, May, etc." href="#dt-must">may</a> be chained by virtue of
|
|
serving as the starting resource of yet another linkbase arc. The application
|
|
interpreting an initial linkbase arc <a title="Must, May, etc." href="#dt-must">may</a>
|
|
choose to limit the number of steps processed in the chain.</p>
|
|
<p>An application <a title="Must, May, etc." href="#dt-must">should</a> maintain a list
|
|
of extended links retrieved as a result of processing a linkbase, and <a title="Must, May, etc." href="#dt-must">should not</a> retrieve duplicate resources or links in
|
|
the case where a cyclic dependency exists. To ease XLink processing, document
|
|
creators <a title="Must, May, etc." href="#dt-must">may</a> wish to define linkbase arcs
|
|
near the beginning of a document.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Annotating a Specification</h5>
|
|
<p>Following is a non-normative set of declarations for an extended link that
|
|
specializes in providing linkbase arcs:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ELEMENT basesloaded ((startrsrc|linkbase|load)*)>
|
|
<!ATTLIST basesloaded
|
|
xlink:type (extended) #FIXED "extended">
|
|
|
|
<!ELEMENT startrsrc EMPTY>
|
|
<!ATTLIST startrsrc
|
|
xlink:type (locator) #FIXED "locator"
|
|
xlink:href CDATA #REQUIRED
|
|
xlink:label NMTOKEN #IMPLIED>
|
|
|
|
<!ELEMENT linkbase EMPTY>
|
|
<!ATTLIST linkbase
|
|
xlink:type (locator) #FIXED "locator"
|
|
xlink:href CDATA #REQUIRED
|
|
xlink:label NMTOKEN #IMPLIED>
|
|
|
|
<!ELEMENT load EMPTY>
|
|
<!ATTLIST load
|
|
xlink:type (arc) #FIXED "arc"
|
|
xlink:arcrole CDATA #FIXED "http://www.w3.org/1999/xlink/properties/linkbase"
|
|
xlink:actuate (onLoad
|
|
|onRequest
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:from NMTOKEN #IMPLIED
|
|
xlink:to NMTOKEN #IMPLIED></pre></td></tr></table>
|
|
<p>Following is how an XML element using these declarations might look. This
|
|
would indicate that when a specification document is loaded, a linkbase full
|
|
of annotations to it <a title="Must, May, etc." href="#dt-must">should</a> automatically
|
|
be loaded as well, possibly necessitating re-rendering of the entire specification
|
|
document to reveal any regions within it that serve as starting resources
|
|
in the links found in the linkbase.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><basesloaded>
|
|
<startrsrc xlink:label="spec" xlink:href="spec.xml" />
|
|
<linkbase xlink:label="linkbase" xlink:href="linkbase.xml" />
|
|
<load xlink:from="spec" xlink:to="linkbase" actuate="onLoad" />
|
|
</basesloaded></pre></td></tr></table>
|
|
<p>Following is how an XML element using these declarations might look if
|
|
the linkbase loading were on request. This time, the starting resource consists
|
|
of the words "Click here to reveal annotations." If the starting
|
|
resource were the entire document as in the example above, a reasonable behavior
|
|
for allowing a user to actuate traversal would be a confirmation dialog box.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><basesloaded>
|
|
<startrsrc
|
|
xlink:label="spec"
|
|
xlink:href="spec.xml#string-range(//*,'Click here to reveal annotations.')" />
|
|
<linkbase xlink:label="linkbase" xlink:href="linkbase.xml" />
|
|
<load xlink:from="spec" xlink:to="linkbase" actuate="onRequest" />
|
|
</basesloaded></pre></td></tr></table>
|
|
</div></div>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="simple-links"></a>5.2 Simple Links (<code>simple</code>-Type Element)</h3>
|
|
<p>[<a name="dt-simplelink" title="Simple link">Definition</a>: A <b>simple link</b>
|
|
is a link that associates exactly two <a title="Resource" href="#dt-resource">resources</a>,
|
|
one <a title="Local resource" href="#dt-local-resource">local</a> and one <a title="Remote resource" href="#dt-remote-resource">remote</a>,
|
|
with an arc going from the former to the latter. Thus, a simple link is always
|
|
an outbound link.]</p>
|
|
<p>The purpose of a simple link is to be a convenient shorthand for the equivalent
|
|
extended link. A single simple linking element combines the basic functions
|
|
of an <code>extended</code>-type element, a <code>locator</code>-type element, an <code>arc</code>-type
|
|
element, and a <code>resource</code>-type element.</p>
|
|
<p>The following diagram shows the characteristics of a simple link; it associates
|
|
one local and one remote resource, and implicitly provides a single traversal
|
|
arc from the local resource to the remote one. This could represent, for example,
|
|
the name of a student appearing in text which, when clicked, leads to information
|
|
about the student.</p>
|
|
<img src="simple.gif" alt="Stylized Diagram of Simple Link"><div class="example">
|
|
|
|
<h5>Example: Simple Link Functionality Done with an Extended Link</h5>
|
|
<p>A simple link could be represented by an extended link in approximately
|
|
the following way:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><studentlink xlink:type="extended">
|
|
<resource
|
|
xlink:type="resource"
|
|
xlink:label="local">Pat Jones</resource>
|
|
<locator
|
|
xlink:type="locator"
|
|
xlink:href="..."
|
|
xlink:label="remote"
|
|
xlink:role="..."
|
|
xlink:title="..." />
|
|
|
|
<go
|
|
xlink:type="arc"
|
|
xlink:from="local"
|
|
xlink:to="remote"
|
|
xlink:arcrole="..."
|
|
xlink:show="..."
|
|
xlink:actuate="..." />
|
|
</studentlink></pre></td></tr></table>
|
|
</div>
|
|
<p>A simple link combines all the features above (except for the types and
|
|
labels) into a single element. In cases where only this subset of features
|
|
is required, the XLink simple linking element is available as an alternative
|
|
to the extended linking element. The features missing from simple links are
|
|
as follows:</p>
|
|
<ul>
|
|
<li><p>Supplying arbitrary numbers of local and remote resources</p></li>
|
|
<li><p>Specifying an arc from its remote resource to its local resource</p>
|
|
</li>
|
|
<li><p>Associating a title with the single hardwired arc</p></li>
|
|
<li><p>Associating a role or title with the local resource</p></li>
|
|
<li><p>Associating a role or title with the link as a whole</p></li>
|
|
</ul>
|
|
<p>The XLink element for simple links is any element with an attribute in
|
|
the XLink namespace called <code>type</code> with a value of "simple".
|
|
The simple equivalent of the above extended link would be as follows:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><studentlink xlink:href="...">Pat Jones</studentlink></pre></td></tr></table>
|
|
<p>The <code>simple</code>-type element <a title="Must, May, etc." href="#dt-must">may</a> have
|
|
any content. The <code>simple</code>-type element itself, together with all of
|
|
its content, is the local resource of the link, as if the element were a <code>resource</code>-type
|
|
element. If a <code>simple</code>-type element contains nested XLink elements,
|
|
such contained elements have no XLink-specified relationship to the parent
|
|
link. It is possible for a <code>simple</code>-type element to have no content;
|
|
in cases where the link is expected to be traversed on request, interactive
|
|
XLink applications will typically generate some content in order to give the
|
|
user a way to initiate the traversal.</p>
|
|
<p>The <code>simple</code>-type element effectively takes the locator attribute <code>href</code>
|
|
and the semantic attributes <code>role</code> and <code>title</code> from the <code>locator</code>-type
|
|
element, and the behavior attributes <code>show</code> and <code>actuate</code>
|
|
and the single semantic attribute <code>arcrole</code> from the <code>arc</code>-type
|
|
element.</p>
|
|
<p>It is not an error for a <code>simple</code>-type element to have no locator
|
|
(<code>href</code>) attribute value. If a value is not provided, the link is
|
|
simply untraversable. Such a link may still be useful, for example, to associate
|
|
properties with the resource by means of XLink attributes.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>simple</code>-Type Element Declarations and Instance</h5>
|
|
<p>Following is a non-normative set of declarations for a <code>simple</code>-type
|
|
element.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ELEMENT studentlink ANY>
|
|
<!ATTLIST studentlink
|
|
xlink:type (simple) #FIXED "simple"
|
|
xlink:href CDATA #IMPLIED
|
|
xlink:role NMTOKEN #FIXED "http://www.example.com/linkprops/student"
|
|
xlink:arcrole CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:show (new
|
|
|replace
|
|
|embed
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:actuate (onLoad
|
|
|onRequest
|
|
|other
|
|
|none) #IMPLIED></pre></td></tr></table>
|
|
<p>Following is how an XML document might use these declarations.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre>..., and <studentlink xlink:href="students/patjones62.xml">Pat
|
|
Jones</studentlink> is popular around the student union.</pre></td></tr></table>
|
|
</div></div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="link-types"></a>5.3 XLink Element Type Attribute (<code>type</code>)</h3>
|
|
<p>The attribute that identifies XLink element types is <code>type</code>.</p>
|
|
<div class="constraint">
|
|
<p class="prefix"><a name="cn-type-value"></a><b>Constraint: type Value</b></p>
|
|
<p>The value of the <code>type</code> attribute <a title="Must, May, etc." href="#dt-must">must</a>
|
|
be supplied. The value <a title="Must, May, etc." href="#dt-must">must</a> be one of "simple", "extended", "locator", "arc", "resource", "title",
|
|
or "none".</p>
|
|
</div>
|
|
<p>When the value of the <code>type</code> attribute is "none",
|
|
the element has no XLink-specified meaning, and any XLink-related content
|
|
or attributes have no XLink-specified relationship to the element.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>type</code> Attribute Declarations</h5>
|
|
<p>Following is a non-normative attribute-list declaration for <code>type</code>
|
|
on an element intended to be <code>simple</code>-type.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ATTLIST xlink:simple
|
|
xlink:type (simple) #FIXED "simple"
|
|
...></pre></td></tr></table>
|
|
<p>For an element that serves as an XLink element only on some occasions,
|
|
one declaration might be as follows, where the document creator sets the value
|
|
to "simple" in some circumstances and "none"
|
|
in others. The use of "none" might be useful in helping XLink
|
|
applications to avoid checking for the presence of an <code>href</code> value.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ATTLIST commandname
|
|
xlink:type (simple|none) #REQUIRED
|
|
xlink:href CDATA #IMPLIED></pre></td></tr></table>
|
|
</div></div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="link-locators"></a>5.4 Locator Attribute (<code>href</code>)</h3>
|
|
<p>The attribute that supplies the data that allows an XLink application to
|
|
find a remote resource (or resource fragment) is <code>href</code>. It <a title="Must, May, etc." href="#dt-must">may</a> be used on <code>simple</code>-type elements, and <a title="Must, May, etc." href="#dt-must">must</a> be used on <code>locator</code>-type elements.</p>
|
|
<p>The value of the <code>href</code> attribute <a title="Must, May, etc." href="#dt-must">must</a>
|
|
be a URI reference as defined in <a href="#rfc2396">[IETF RFC 2396]</a>, or must result in
|
|
a URI reference after the escaping procedure described below is applied. The
|
|
procedure is applied when passing the URI reference to a URI resolver.</p>
|
|
<p>Some characters are disallowed in URI references, even if they are allowed
|
|
in XML; the disallowed characters include all non-ASCII characters, plus the
|
|
excluded characters listed in Section 2.4 of <a href="#rfc2396">[IETF RFC 2396]</a>, except
|
|
for the number sign (#) and percent sign (%) and the square bracket characters
|
|
re-allowed in <a href="#rfc2732">[IETF RFC 2732]</a>. Disallowed characters <a title="Must, May, etc." href="#dt-must">must</a>
|
|
be escaped as follows:</p>
|
|
<ol>
|
|
<li><p>Each disallowed character is converted to UTF-8 <a href="#rfc2279">[IETF RFC 2279]</a>
|
|
as one or more bytes.</p></li>
|
|
<li><p>Any bytes corresponding to a disallowed character are escaped with
|
|
the URI escaping mechanism (that is, converted to <code>%</code><var>HH</var>,
|
|
where HH is the hexadecimal notation of the byte value).</p></li>
|
|
<li><p>The original character is replaced by the resulting character sequence.</p>
|
|
</li>
|
|
</ol>
|
|
<p>Because it is impractical for any application to check that a value is
|
|
a URI reference, this specification follows the lead of <a href="#rfc2396">[IETF RFC 2396]</a>
|
|
in this matter and imposes no such conformance testing requirement on XLink
|
|
applications.</p>
|
|
<p>If the URI reference is relative, its absolute version <a title="Must, May, etc." href="#dt-must">must</a>
|
|
be computed by the method of <a href="#xbase">[XML Base]</a> before use.</p>
|
|
<p>For locators into XML resources, the format of the fragment identifier
|
|
(if any) used within the URI reference is specified by the XPointer specification <a href="#xptr">[XPTR]</a>.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>href</code> Attribute Declarations</h5>
|
|
<p>Following is a non-normative attribute-list declaration for <code>href</code>
|
|
on an element intended to be <code>simple</code>-type.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ATTLIST simplelink
|
|
xlink:href CDATA #REQUIRED
|
|
...></pre></td></tr></table>
|
|
</div></div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="link-semantics"></a>5.5 Semantic Attributes (<code>role</code>, <code>arcrole</code>, and <code>title</code>)</h3>
|
|
<p>The attributes that describe the meaning of resources within the context
|
|
of a link are <code>role</code>, <code>arcrole</code>, and <code>title</code>. The <code>role</code>
|
|
attribute <a title="Must, May, etc." href="#dt-must">may</a> be used on <code>extended</code>-, <code>simple</code>-, <code>locator-</code>,
|
|
and <code>resource</code>-type elements. The <code>arcrole</code> attribute <a title="Must, May, etc." href="#dt-must">may</a> be used on <code>arc</code>- and <code>simple</code>-type
|
|
elements. The <code>title</code> attribute <a title="Must, May, etc." href="#dt-must">may</a>
|
|
be used on all of these types of elements.</p>
|
|
<p>The value of the <code>role</code> or <code>arcrole</code> attribute <a title="Must, May, etc." href="#dt-must">must</a> be a URI reference as defined in <a href="#rfc2396">[IETF RFC 2396]</a>,
|
|
except that if the URI scheme used is allowed to have absolute and relative
|
|
forms, the URI portion <a title="Must, May, etc." href="#dt-must">must</a> be absolute.
|
|
The URI reference identifies some resource that describes the intended property.
|
|
When no value is supplied, no particular role value is to be inferred. Disallowed
|
|
URI reference characters in these attribute values <a title="Must, May, etc." href="#dt-must">must</a>
|
|
be specially encoded as described in <a href="#link-locators"><b>5.4 Locator Attribute (href)</b></a>.</p>
|
|
<p>The <code>title</code> attribute is used to describe the meaning of a link
|
|
or resource in a human-readable fashion, along the same lines as the <code>role</code>
|
|
or <code>arcrole</code> attribute. (However, see also <a href="#title-element"><b>5.1.4 Titles for Extended Links, Locators, and Arcs (title-Type Element)</b></a>.)
|
|
A value is optional; if a value is supplied, it <a title="Must, May, etc." href="#dt-must">should</a>
|
|
contain a string that describes the resource. The use of this information
|
|
is highly dependent on the type of processing being done. It <a title="Must, May, etc." href="#dt-must">may</a>
|
|
be used, for example, to make titles available to applications used by visually
|
|
impaired users, or to create a table of links, or to present help text that
|
|
appears when a user lets a mouse pointer hover over a starting resource.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>role</code> and <code>title</code> Attribute Declarations</h5>
|
|
<p>Following is a non-normative attribute-list declaration for <code>role</code>
|
|
and <code>title</code> on an element intended to be <code>simple</code>-type.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ATTLIST simplelink
|
|
...
|
|
xlink:role CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
...></pre></td></tr></table>
|
|
<p>Following is a non-normative attribute-list declaration for <code>arcrole</code>
|
|
and <code>title</code> on an element intended to be <code>arc</code>-type.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ATTLIST go
|
|
...
|
|
xlink:arcrole CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
...></pre></td></tr></table>
|
|
</div></div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="link-behaviors"></a>5.6 Behavior Attributes (<code>show</code> and <code>actuate</code>) </h3>
|
|
<p>The behavior attributes are <code>show</code> and <code>actuate</code>. They <a title="Must, May, etc." href="#dt-must">may</a> be used on the <code>simple</code>- and <code>arc</code>-type
|
|
elements. When used on a <code>simple</code>-type element, they signal behavior
|
|
intentions for traversal to that link's single remote ending resource. When
|
|
they are used on an <code>arc</code>-type element, they signal behavior intentions
|
|
for traversal to whatever ending resources (local or remote) are specified
|
|
by that arc.</p>
|
|
<p>The <code>show</code> and <code>actuate</code> attributes are not required.
|
|
When they are used, conforming XLink applications <a title="Must, May, etc." href="#dt-must">should</a>
|
|
give them the treatment specified in this section. There is no hard requirement
|
|
("must") for this treatment because what makes sense for an interactive
|
|
application, such as a browser, is unlikely to make sense for a noninteractive
|
|
application, such as a robot. However, all applications <a title="Must, May, etc." href="#dt-must">should</a>
|
|
take into account the full implications of ignoring the specified behavior
|
|
before choosing a different course.</p>
|
|
<div class="example">
|
|
|
|
<h5>Example: Sample <code>show</code> and <code>actuate</code> Attribute Declarations</h5>
|
|
<p>Following is a non-normative attribute-list declaration for <code>show</code>
|
|
and <code>actuate</code> on an element intended to be <code>simple</code>-type.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ATTLIST simplelink
|
|
xlink:type (simple) #FIXED "simple"
|
|
...
|
|
xlink:show (new
|
|
|replace
|
|
|embed
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:actuate (onLoad
|
|
|onRequest
|
|
|other
|
|
|none) #IMPLIED
|
|
...></pre></td></tr></table>
|
|
</div>
|
|
<p>Applications encountering <code>arc</code>-type elements in linkbase lists <a title="Must, May, etc." href="#dt-must">must</a> treat the behavior attributes as if they were
|
|
specified as <code>show="none"</code> and <code>actuate="onLoad"</code>, even
|
|
if other values were specified.</p>
|
|
<div class="div3">
|
|
|
|
<h4><a name="show-att"></a>5.6.1 <code>show</code> Attribute</h4>
|
|
<p>The <code>show</code> attribute is used to communicate the desired presentation
|
|
of the ending resource on traversal from the starting resource.</p>
|
|
<div class="constraint">
|
|
<p class="prefix"><a name="cn-show-value"></a><b>Constraint: show Value</b></p>
|
|
<p>If a value is supplied for a <code>show</code> attribute, it <a title="Must, May, etc." href="#dt-must">must</a>
|
|
be one of the values "new", "replace", "embed", "other",
|
|
and "none".</p>
|
|
</div>
|
|
<p>Conforming XLink applications <a title="Must, May, etc." href="#dt-must">should</a> apply
|
|
the following treatment for <code>show</code> values:</p>
|
|
<dl>
|
|
<dt class="label">"new"</dt>
|
|
<dd>
|
|
<p>An application traversing to the ending resource <a title="Must, May, etc." href="#dt-must">should</a>
|
|
load it in a new window, frame, pane, or other relevant presentation context.
|
|
This is similar to the effect achieved by the following HTML fragment:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><A HREF="http://www.example.org" target="_blank">...</A></pre></td></tr></table>
|
|
</dd>
|
|
<dt class="label">"replace"</dt>
|
|
<dd>
|
|
<p>An application traversing to the ending resource <a title="Must, May, etc." href="#dt-must">should</a>
|
|
load the resource in the same window, frame, pane, or other relevant presentation
|
|
context in which the starting resource was loaded. This is similar to the
|
|
effect achieved by the following HTML fragment:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><A HREF="http://www.example.org" target="_self">...</A></pre></td></tr></table>
|
|
</dd>
|
|
<dt class="label">"embed"</dt>
|
|
<dd>
|
|
<p>An application traversing to the ending resource <a title="Must, May, etc." href="#dt-must">should</a>
|
|
load its presentation in place of the presentation of the starting resource.
|
|
This is similar to the effect achieved by the following HTML fragment:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><IMG SRC="http://www.example.org/smiley.gif" ALT=":-)"></pre></td></tr></table>
|
|
<p>The presentation of the starting resource typically does not consist of
|
|
an entire document; it would be the entire document only when the root element
|
|
of the document is a simple link. Thus, embedding typically has an effect
|
|
distinct from replacing.</p>
|
|
<p>Just as for the HTML <code>IMG</code> element, embedding affects only the presentation
|
|
of the relevant resources; it does not dictate permanent transformation of
|
|
the starting resource. Put another way, when an embedded XLink is processed,
|
|
the result of styling the ending resource of the link is merged into the result
|
|
of styling the resource into which it is embedded. By contrast, when a construct
|
|
such as an XInclude element <a href="#xinclude">[XInclude]</a> is resolved, the original
|
|
XML is actually transformed to include the referenced content.</p>
|
|
<p>The behavior of conforming XLink applications when embedding XML-based
|
|
(<a href="#rfc2376">[IETF RFC 2376]</a> or <a href="#draft-xmlmediatypes">[IETF I-D XMT]</a>) ending resources
|
|
is not defined in this version of this specification.</p>
|
|
<p>The presentation of embedded resources is application dependent.</p>
|
|
</dd>
|
|
<dt class="label">"other"</dt>
|
|
<dd>
|
|
<p>The behavior of an application traversing to the ending resource is unconstrained
|
|
by this specification. The application <a title="Must, May, etc." href="#dt-must">should</a>
|
|
look for other markup present in the link to determine the appropriate behavior.</p>
|
|
</dd>
|
|
<dt class="label">"none"</dt>
|
|
<dd>
|
|
<p>The behavior of an application traversing to the ending resource is unconstrained
|
|
by this specification. No other markup is present to help the application
|
|
determine the appropriate behavior.</p>
|
|
</dd>
|
|
</dl>
|
|
<p>If the starting or ending resource consists of multiple non-contiguous
|
|
locations, such as a series of string ranges in various locations in the resource,
|
|
then application behavior is unconstrained. (See <a href="#xptr">[XPTR]</a> for
|
|
more information about selecting portions of XML documents.)</p>
|
|
<div class="note"><p class="prefix"><b>Note:</b></p>
|
|
<p>Some possibilities for application behavior with non-contiguous ending
|
|
resources might include highlighting of each location, producing a dialog
|
|
box that allows the reader to choose among the locations as if there were
|
|
separate arcs leading to each one, concatenating the content of all the locations
|
|
for presentation, and so on. Application behavior with non-contiguous starting
|
|
resources might include concatenation and rendering as a single unit, or creating
|
|
one arc emanating from each contiguous portion.</p>
|
|
</div>
|
|
</div>
|
|
<div class="div3">
|
|
|
|
<h4><a name="actuate-att"></a>5.6.2 <code>actuate</code> Attribute</h4>
|
|
<p>The <code>actuate</code> attribute is used to communicate the desired timing
|
|
of traversal from the starting resource to the ending resource..</p>
|
|
<div class="constraint">
|
|
<p class="prefix"><a name="cn-actuate-value"></a><b>Constraint: actuate Value</b></p>
|
|
<p>If a value is supplied for an <code>actuate</code> attribute, it <a title="Must, May, etc." href="#dt-must">must</a> be be one of the values "onLoad", "onRequest", "other",
|
|
and "none".</p>
|
|
</div>
|
|
<p>Conforming XLink applications <a title="Must, May, etc." href="#dt-must">should</a> apply
|
|
the following treatment for <code>actuate</code> values:</p>
|
|
<dl>
|
|
<dt class="label">"onLoad"</dt>
|
|
<dd>
|
|
<p>An application <a title="Must, May, etc." href="#dt-must">should</a> traverse to the
|
|
ending resource immediately on loading the starting resource. This is similar
|
|
to the effect typically achieved by the following HTML fragment, when the
|
|
user agent is configured to display images:</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><IMG SRC="http://www.example.org/smiley.gif" ALT=":-)"></pre></td></tr></table>
|
|
<p>If a single resource contains multiple arcs whose behavior is set to <code>show="replace"
|
|
actuate="onLoad"</code>, application behavior is unconstrained by XLink.</p>
|
|
</dd>
|
|
<dt class="label">"onRequest"</dt>
|
|
<dd>
|
|
<p>An application <a title="Must, May, etc." href="#dt-must">should</a> traverse from the
|
|
starting resource to the ending resource only on a post-loading event triggered
|
|
for the purpose of traversal. An example of such an event might be when a
|
|
user clicks on the presentation of the starting resource, or a software module
|
|
finishes a countdown that precedes a redirect.</p>
|
|
</dd>
|
|
<dt class="label">"other"</dt>
|
|
<dd>
|
|
<p>The behavior of an application traversing to the ending resource is unconstrained
|
|
by this specification. The application <a title="Must, May, etc." href="#dt-must">should</a>
|
|
look for other markup present in the link to determine the appropriate behavior.</p>
|
|
</dd>
|
|
<dt class="label">"none"</dt>
|
|
<dd>
|
|
<p>The behavior of an application traversing to the ending resource is unconstrained
|
|
by this specification. No other markup is present to help the application
|
|
determine the appropriate behavior.</p>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
</div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="traversal-atts"></a>5.7 Traversal Attributes (<code>label</code>, <code>from</code>, and <code>to</code>)</h3>
|
|
<p>The traversal attributes are <code>label</code>, <code>from</code>, and <code>to</code>.
|
|
The <code>label</code> attribute <a title="Must, May, etc." href="#dt-must">may</a> be used
|
|
on the <code>resource</code>- and <code>locator</code>-type elements. The <code>from</code>
|
|
and <code>to</code> attributes <a title="Must, May, etc." href="#dt-must">may</a> be used
|
|
on the <code>arc</code>-type element.</p>
|
|
<div class="constraint">
|
|
<p class="prefix"><a name="cn-fromto-values"></a><b>Constraint: <code>label</code>, <code>from</code>, and <code>to</code> Values</b></p>
|
|
<p>The value of a <code>label</code>, <code>from</code>, or <code>to</code> attribute
|
|
must be an <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a>.
|
|
If a value is supplied for a <code>from</code> or <code>to</code> attribute, it <a title="Must, May, etc." href="#dt-must">must</a> correspond to the same value for some <code>label</code>
|
|
attribute on a <code>locator</code>- or <code>resource</code>-type element that appears
|
|
as a direct child inside the same <code>extended</code>-type element as does the <code>arc</code>-type
|
|
element. </p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div><div class="back">
|
|
<div class="div1">
|
|
|
|
<h2><a name="references"></a>A References</h2>
|
|
<div class="div2">
|
|
|
|
<h3><a name="N3954"></a>A.1 Normative References</h3>
|
|
<dl>
|
|
<dt class="label"><a name="draft-xmlmediatypes"></a>IETF I-D XMT</dt><dd><cite>XML Media Types</cite>. Makoto, M., St. Laurent, S. and D. Kohn, editors.
|
|
Internet Engineering Task Force, 2001. (See <a href="http://www.ietf.org/rfc/rfc3023.txt">http://www.ietf.org/rfc/rfc3023.txt</a>.)</dd>
|
|
<dt class="label"><a name="rfc2396"></a>IETF RFC 2396</dt><dd>IETF
|
|
(Internet Engineering Task Force). <cite>RFC 2396: Uniform Resource Identifiers</cite>.
|
|
1995. (See <a href="http://www.ietf.org/rfc/rfc2396.txt">http://www.ietf.org/rfc/rfc2396.txt</a>.)</dd>
|
|
<dt class="label"><a name="rfc2279"></a>IETF RFC 2279</dt><dd><cite>RFC
|
|
2279: UTF-8, a transformation format of ISO 10646</cite>. Internet Engineering
|
|
Task Force, 1998. (See <a href="http://www.ietf.org/rfc/rfc2279.txt">http://www.ietf.org/rfc/rfc2279.txt</a>.)</dd>
|
|
<dt class="label"><a name="rfc2376"></a>IETF RFC 2376</dt><dd><cite>RFC
|
|
2376: XML Media Types</cite>. Internet Engineering Task Force, 1998. (See <a href="http://www.ietf.org/rfc/rfc2376.txt">http://www.ietf.org/rfc/rfc2376.txt</a>.)</dd>
|
|
<dt class="label"><a name="rfc2732"></a>IETF RFC 2732</dt><dd><cite>RFC
|
|
2732: Format for Literal IPv6 Addresses in URL's</cite>. Internet Engineering
|
|
Task Force, 1999. (See <a href="http://www.ietf.org/rfc/rfc2732.txt">http://www.ietf.org/rfc/rfc2732.txt</a>.)</dd>
|
|
<dt class="label"><a name="XML"></a>XML</dt><dd>Tim Bray, Jean
|
|
Paoli, C.M. Sperberg-McQueen, and Eve Maler, editors. <em>Extensible Markup
|
|
Language (XML) 1.0 (Second Edition).</em> World Wide Web Consortium, 2000. (See <a href="http://www.w3.org/TR/2000/REC-xml-20001006">http://www.w3.org/TR/2000/REC-xml-20001006</a>.)</dd>
|
|
<dt class="label"><a name="rfc2119"></a>IETF RFC 2119</dt><dd>S.
|
|
Bradner, editor. <cite>Key words for use in RFCs to Indicate Requirement
|
|
Levels</cite>. March 1997. (See <a href="http://www.ietf.org/rfc/rfc2119.txt">http://www.ietf.org/rfc/rfc2119.txt</a>.)</dd>
|
|
<dt class="label"><a name="xbase"></a>XML Base</dt><dd>Jonathan Marsh, editor. <cite>XML Base (XBase)</cite>.
|
|
World Wide Web Consortium, 1999. (See <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">http://www.w3.org/TR/2001/REC-xmlbase-20010627/</a>.)</dd>
|
|
<dt class="label"><a name="xname"></a>XML Names</dt><dd>Tim Bray, Dave Hollander, and Andrew Layman, editors. <cite>Namespaces
|
|
in XML</cite>. World Wide
|
|
Web Consortium, 1999. (See <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">http://www.w3.org/TR/1999/REC-xml-names-19990114/</a>.)</dd>
|
|
</dl></div>
|
|
<div class="div2">
|
|
|
|
<h3><a name="N4107"></a>A.2 Non-Normative References</h3>
|
|
<dl>
|
|
<dt class="label"><a name="chum"></a>CHUM</dt><dd>Steven J. DeRose and David G. Durand. 1995. "The
|
|
TEI Hypertext Guidelines." In <cite>Computing and the Humanities</cite>
|
|
29(3). Reprinted in <cite>Text Encoding Initiative: Background and Context</cite>,
|
|
ed. Nancy Ide and Jean Ronis, ISBN 0-7923-3704-2.</dd>
|
|
<dt class="label"><a name="dexter"></a>Dexter</dt><dd>Halasz, Frank. 1994. "The Dexter Hypertext
|
|
Reference Model." In Communications of the Association for Computing
|
|
Machinery 37 (2), February 1994: 30-39.</dd>
|
|
<dt class="label"><a name="fress"></a>FRESS</dt><dd>Steven J. DeRose and Andries van Dam. 1999. "Document
|
|
structure in the FRESS Hypertext System." Markup Languages 1 (1) Winter.
|
|
Cambridge: MIT Press: 7-32. (See also <a href=" http://www.stg.brown.edu/~sjd/fress.html">
|
|
http://www.stg.brown.edu/~sjd/fress.html</a> for more information.)</dd>
|
|
<dt class="label"><a name="html"></a>HTML</dt><dd><cite>HTML
|
|
4.01 Specification</cite>. World Wide Web Consortium, 1999. (See <a href="http://www.w3.org/TR/1999/REC-html401-19991224/">http://www.w3.org/TR/1999/REC-html401-19991224/</a>.)</dd>
|
|
<dt class="label"><a name="intermedia"></a>Intermedia</dt><dd>Yankelovich, Nicole, Bernard J. Haan,
|
|
Norman K. Meyrowitz, and Steven M. Drucker. 1988. "Intermedia: The Concept
|
|
and the Construction of a Seamless Information Environment." IEEE Computer
|
|
21 (January, 1988): 81-96.</dd>
|
|
<dt class="label"><a name="iso10744"></a>ISO/IEC 10744</dt><dd>ISO (International Organization for Standardization). <cite>ISO/IEC
|
|
10744-1992 (E). Information technology-Hypermedia/Time-based Structuring Language
|
|
(HyTime).</cite> [Geneva]: International Organization for Standardization,
|
|
1992. <cite>Extended Facilities Annex.</cite> [Geneva]: International
|
|
Organization for Standardization, 1996. (See <a href="http://www.y12.doe.gov/sgml/wg8/document/1920.htm">http://www.y12.doe.gov/sgml/wg8/document/1920.htm</a>.)</dd>
|
|
<dt class="label"><a name="microcosm"></a>MicroCosm</dt><dd>Hall, Wendy, Hugh Davis, and Gerard Hutchings.
|
|
1996. <cite>Rethinking Hypermedia: The Microcosm Approach.</cite>
|
|
Boston: Kluwer Academic Publishers. ISBN 0-7923-9679-0.</dd>
|
|
<dt class="label"><a name="ohs"></a>OHS</dt><dd>van Ossenbruggen, Jacco, Anton Eliëns and Lloyd Rutledge. "The
|
|
Role of XML in Open Hypermedia Systems." Position paper for the 4th
|
|
Workshop on Open Hypermedia Systems, ACM Hypertext '98. (See <a href="http://aue.auc.dk/~kock/OHS-HT98/Papers/ossenbruggen.html">http://aue.auc.dk/~kock/OHS-HT98/Papers/ossenbruggen.html</a>.)</dd>
|
|
<dt class="label"><a name="rdf"></a>RDF</dt><dd>Ora Lassila and Ralph Swick, editors. <cite>Resource Description
|
|
Framework (RDF) Model and Syntax Specification</cite>. World Wide Web
|
|
Consortium, 1999. (See <a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/">http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/</a>.)</dd>
|
|
<dt class="label"><a name="tei"></a>TEI</dt><dd>C. M. Sperberg-McQueen and Lou Burnard, editors.<cite>Guidelines
|
|
for Electronic Text Encoding and Interchange</cite>. Association for Computers
|
|
and the Humanities (ACH), Association for Computational Linguistics (ACL),
|
|
and Association for Literary and Linguistic Computing (ALLC). Chicago, Oxford:
|
|
Text Encoding Initiative, 1994.</dd>
|
|
<dt class="label"><a name="infoset"></a>XIS</dt><dd>John Cowan
|
|
and Richard Tobin, editors. <cite>XML Information
|
|
Set</cite>. World Wide Web Consortium, 2001. (See <a href="http://www.w3.org/TR/2001/CR-xml-infoset-20010514/">http://www.w3.org/TR/2001/CR-xml-infoset-20010514/</a>.)</dd>
|
|
<dt class="label"><a name="xlink2rdf"></a>XLinkToRDF</dt><dd>Ron Daniel, editor. <cite>Harvesting RDF Statements from
|
|
XLinks</cite>. World Wide Web Consortium, 2000. (See <a href="http://www.w3.org/TR/2000/NOTE-xlink2rdf-20000929/">http://www.w3.org/TR/2000/NOTE-xlink2rdf-20000929/</a>.)</dd>
|
|
<dt class="label"><a name="xlink-naming"></a>XLinkNaming</dt><dd>Eve Maler, Daniel Veillard and Henry S. Thompson, editors. <cite>XLink
|
|
Markup Name Control</cite>. World Wide Web Consortium, 2000. (See <a href="http://www.w3.org/TR/2000/NOTE-xlink-naming-20001220/">http://www.w3.org/TR/2000/NOTE-xlink-naming-20001220/</a>.)</dd>
|
|
<dt class="label"><a name="xinclude"></a>XInclude</dt><dd>Jonathan Marsh and David Orchard, editors. <cite>XML Inclusions
|
|
(XInclude) Version 1.0</cite>. World Wide Web Consortium, 2000. (See <a href="http://www.w3.org/TR/2001/WD-xinclude-20010516/">http://www.w3.org/TR/2001/WD-xinclude-20010516/</a>.)</dd>
|
|
<dt class="label"><a name="xlreq"></a>XLREQ</dt><dd>Steven DeRose, editor. <cite>XML XLink Requirements Version
|
|
1.0</cite>.World Wide Web Consortium, 1999. (See <a href="http://www.w3.org/TR/1999/NOTE-xlink-req-19990224/">http://www.w3.org/TR/1999/NOTE-xlink-req-19990224/</a>.)</dd>
|
|
<dt class="label"><a name="xldp"></a>XLDP</dt><dd>Eve
|
|
Maler and Steve DeRose, editors. <cite>XML Linking Language (XLink) Design
|
|
Principles</cite>.World Wide Web Consortium, 1998. (See <a href="http://www.w3.org/TR/1998/NOTE-xlink-principles-19980303">http://www.w3.org/TR/1998/NOTE-xlink-principles-19980303</a>.)</dd>
|
|
<dt class="label"><a name="xptr"></a>XPTR</dt><dd>Ron Daniel, Steve
|
|
DeRose, and Eve Maler, editors.<cite> XML Pointer Language (XPointer)
|
|
V1.0</cite>.World Wide Web Consortium, 1998. (See <a href="http://www.w3.org/TR/2001/WD-xptr-20010108/">http://www.w3.org/TR/2001/WD-xptr-20010108/</a>.)</dd>
|
|
</dl></div>
|
|
</div>
|
|
<div class="div1">
|
|
|
|
<h2><a name="sample-dtd-appx"></a>B Sample DTD (Non-Normative)</h2>
|
|
<p>The following DTD makes invalid (for purposes of argument) all XLink constructs
|
|
for which this specification does not specify behavior. It is provided only
|
|
as a convenience for application developers; it has no normative status.</p>
|
|
<p>The following assumptions hold for this DTD:</p>
|
|
<ul>
|
|
<li><p>Only constructs that have XLink-defined meaning are allowed.</p>
|
|
</li>
|
|
<li><p>No "foreign" vocabularies are mixed in, since DTDs do
|
|
not work well with namespaces.</p></li>
|
|
<li><p>The use of <b>ANY</b> means there is typically content provided
|
|
in the element that is used by XLink in some way.</p></li>
|
|
<li><p>The use of the <code>(title*)</code> construct means that any non-title
|
|
content provided has no XLink-defined use.</p></li>
|
|
<li><p>Elements are named after the XLink element types they represent.</p>
|
|
</li>
|
|
</ul>
|
|
<p>Other assumptions and conditions appear as comments in the DTD.</p>
|
|
<table class="eg" cellpadding="5" border="1" bgcolor="#99ffff" width="100%" summary="Example"><tr><td><pre><!ELEMENT simple ANY>
|
|
<!ATTLIST simple
|
|
xlink:type (simple) #FIXED "simple"
|
|
xlink:href CDATA #IMPLIED
|
|
xlink:role CDATA #IMPLIED
|
|
xlink:arcrole CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:show (new
|
|
|replace
|
|
|embed
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:actuate (onLoad
|
|
|onRequest
|
|
|other
|
|
|none) #IMPLIED>
|
|
|
|
<!ELEMENT extended ((title|resource|locator|arc)*)>
|
|
<!ATTLIST extended
|
|
xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink"
|
|
xlink:type (extended) #FIXED "extended"
|
|
xlink:role CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED>
|
|
|
|
<!ELEMENT title ANY>
|
|
<!-- xml:lang is not required, but provides much of the motivation
|
|
for title elements in addition to attributes, and so is provided
|
|
here for convenience -->
|
|
<!ATTLIST title
|
|
xlink:type (title) #FIXED "title"
|
|
xml:lang CDATA #IMPLIED>
|
|
|
|
<!ELEMENT resource ANY>
|
|
<!ATTLIST resource
|
|
xlink:type (resource) #FIXED "resource"
|
|
xlink:role CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:label NMTOKEN #IMPLIED>
|
|
|
|
<!ELEMENT locator (title*)>
|
|
<!-- label is not required, but locators have no particular XLink
|
|
function if they are not labeled -->
|
|
<!ATTLIST locator
|
|
xlink:type (locator) #FIXED "locator"
|
|
xlink:href CDATA #REQUIRED
|
|
xlink:role CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:label NMTOKEN #IMPLIED>
|
|
|
|
<!ELEMENT arc (title*)>
|
|
<!-- from and to have default behavior when values are missing -->
|
|
<!ATTLIST arc
|
|
xlink:type (arc) #FIXED "arc"
|
|
xlink:arcrole CDATA #IMPLIED
|
|
xlink:title CDATA #IMPLIED
|
|
xlink:show (new
|
|
|replace
|
|
|embed
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:actuate (onLoad
|
|
|onRequest
|
|
|other
|
|
|none) #IMPLIED
|
|
xlink:from NMTOKEN #IMPLIED
|
|
xlink:to NMTOKEN #IMPLIED>
|
|
</pre></td></tr></table>
|
|
</div>
|
|
<div class="div1">
|
|
|
|
<h2><a name="acknowledgements"></a>C Working Group Members and Acknowledgments (Non-Normative)</h2>
|
|
<p>This specification was produced in the XML Linking Working Group, with
|
|
the following members active at the completion of this specification:</p>
|
|
<ul>
|
|
<li>Peter Chen, LSU, Bootstrap Alliance
|
|
</li>
|
|
<li>Ron Daniel, Interwoven</li>
|
|
<li>Steve DeRose, Brown University Scholarly Technology
|
|
Group (<i>XLink co-editor</i>) </li>
|
|
<li>David Durand, University of Southhampton,
|
|
Dynamic Diagrams</li>
|
|
<li>Masatomo Goto, Fujitsu Laboratories
|
|
</li>
|
|
<li>Paul Grosso, Arbortext</li>
|
|
<li>Chris Maden, Lexica</li>
|
|
<li>Eve Maler, Sun Microsystems
|
|
(<i>co-chair and XLink co-editor</i>) </li>
|
|
<li>Jonathan Marsh, Microsoft</li>
|
|
<li>David Orchard, Jamcracker (<i>XLink
|
|
co-editor</i>) </li>
|
|
<li>Henry S. Thompson, University of
|
|
Edinburgh, W3C</li>
|
|
<li>Daniel Veillard, W3C staff contact
|
|
(<i>co-chair</i>) </li>
|
|
</ul>
|
|
<p>The editors wish to acknowledge substantial contributions from Tim Bray,
|
|
who previously served as co-editor and co-chair, and Ben Trafford, who previously
|
|
served as co-editor. We would also like to acknowledge important contributions
|
|
from Gabe Beged-Dov, who wrote the XArc proposal. Finally, we would like to
|
|
thank the XML Linking Interest Group and Working Group for their support and
|
|
input, and Henry Thompson, for helping chair the group and act as staff
|
|
contact for the last few months before this publication.</p>
|
|
</div>
|
|
</div></body></html>
|