From the charter of the Working Group:
The XML Linking WG continues the effort begun in the XML WG in January 1997.
The objective of the XML Linking WG is to design advanced, scalable, and maintainable hyperlinking and addressing functionality for XML. Such functionality includes the hyperlinking abilities of HTML, but extends them to include at least the following:
XLink defines the following:
http://wwww.w3.org/1999/xlink/namespace/
An XLink processor expected to detects those contructs so they are handled at the application level.
However XLink does not enforce behaviour, this is application dependant with hints defined on the link elements.
The core properties (attributes):
xlink:type
attribute indicates the type of the link:
simple
simple linkextended
extended linkxlink:href
this is the only locator attribute, and its
value is an URI-Reference [RFC
2396].xlink:locator
are elements contained in extended links and
defining resources paritcipating in the link. Each locator holds an
xlink:role
attribute allwoing to reference it.xlink:arc
are elements contained in extended links and
defining traversal behaviour using the following attributes:
xlink:from
the source of the arc, the attribute value
target a locator referenced by its xlink:role
namexlink:to
the destination of the arcThose are attribute holding behaviour related informations:
xlink:show
indicate expected behaviour on traversal effect:
embed
the link target should be included like
<IMG>new
the link target should create a new
rendering, like opening a new window.replace
the link target should replace the
resource containing the link, like <A> in most cases.xlink:actuate
indicate expected triggering of link:
auto
indicate at link detection time, like
<IMG> if autoloading of images is turned on.onRequest
indicate activation at user's request,
like <A>Those are placeholders for application semantic:
xlink:title
is designed to provide human-readable text
describing the links, simple links must use an attribute while extended
links must use an element.xlink:role
is an attribute containing a qualified name
used to describe the function of the link's or locator's content.
for example XLink uses role="xlink:external-linkset"
to
distinguish Links Sets from Extended links.
Here are the limitations on simple links:
But they benefit from a lighter syntax
this can be as simple as:
<students xlink:href="students.xml"> The list of
students.</students>
assuming the following element declaration:
<!ELEMENT student ANY> <!ATTLIST student xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink/namespace/" xlink:type CDATA #FIXED "simple" xlink:href CDATA #REQUIRED xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED xlink:show (new|embed|replace) "replace" xlink:actuate (onRequest|auto) "onRequest" >
Here is a set of "advanced" features:
xlink:locator
elementsxlink:arc
elementsxlink:title
elements (I18N)
<element xmlns:xlink="http://www.w3.org/1999/xlink/namespace/" xlink:type="extended"> <xlink:locator href="Source" role="role1"/> <xlink:locator href="Target" role="role2"/> <xlink:arc from="role1" to="role2" show="embed" actuate="auto"/> <xlink:title>The link title<xlink:title/> <xlink:title xml:lang="fr">Description du lien<xlink:title/> ... </element>pre>Extended Link Sets
This construct allows to reference an external set of links
xlink:extended
but with
xlink:role="xlink:external-linkset"
<xlink:extended xmlns:xlink="http://www.w3.org/1999/xlink/namespace/" role="xlink:external-linkset"> <xlink:title>DV's Links</xlink:title> <xlink:locator href="http://rpmfind.net/veillard/linkset.xml"/> </xlink:extended>pre>Issue List
There is still some issues left like:
But the core is now stable.
May the mission complete sucessfully...
<element xmlns:xlink="http://www.w3.org/1999/xlink/namespace/" xlink:href="target" xlink:type="simple" xlink:show="embed" xlink:actuate="auto" xlink:role="The link role" xlink:title="The link title"> ... </element> translates to <element> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"> <rdf:Description about="#xptr(../..)"> <xlink:href rdf:resource="target"/> <xlink:type rdf:resource="xlink:simple"/> <xlink:show rdf:resource="xlink:embed"/> <xlink:actuate rdf:resource="xlink:auto"/> <xlink:role>The link role</xlink:role> <xlink:title>The link title</xlink:title> </rdf:Description> </rdf:RDF> ... </element>
<element xmlns:xlink="http://www.w3.org/1999/xlink/namespace/" xlink:type="extended"> <xlink:locator href="Source" role="role1"/> <xlink:locator href="Target" role="role2"/> <xlink:arc from="role1" to="role2" show="embed" actuate="auto"/> <xlink:title="The link title"/> ... </element> translates to <element> <rdf:rdf xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink/namespace/"> <rdf:description about="#xptr(../..)"> <xlink:type rdf:resource="xlink:extended"/> <xlink:locator rdf:about="source" rdf:id="role1"/> <xlink:locator rdf:about="target" rdf:id="role2"/> <xlink:arc> <xlink:from rdf:resource="#role1"> <xlink:to rdf:resource="#role2"> <xlink:show rdf:resource="xlink:embed"/> <xlink:actuate rdf:resource="xlink:auto"/> </xlink:arc> <xlink:title>the link title</xlink:title> </rdf:description> </rdf:rdf> ... </element>