<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet href="/style/browser.xsl" type="text/xsl"?>
<essay xmlns="http://docbook.org/ns/docbook"
       xmlns:xlink="http://www.w3.org/1999/xlink"
       xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
       xmlns:dc='http://purl.org/dc/elements/1.1/'
       xmlns:dcterms="http://purl.org/dc/terms/"
       xmlns:gal='http://norman.walsh.name/rdf/gallery#'
       version="pto">
<info>
<title>Proposed XLink Improvements</title>
<volumenum>8</volumenum>
<issuenum>14</issuenum>
<pubdate>2005-01-31T17:03:33-05:00</pubdate>
<date>$Date: 2005-09-11 10:27:02 -0400 (Sun, 11 Sep 2005) $</date>
<author><personname>
<firstname>Norman</firstname><surname>Walsh</surname>
</personname></author>
<copyright><year>2005</year><holder>Norman Walsh</holder></copyright>
<abstract>
<para>The W3C XML Core Working Group has proposed a few
modest improvements to make XLink more usable.</para>
</abstract>
</info>

<para xml:id='p1'>Despite some controversy, and while hardly setting the world on fire,
XLink has seen some implementation
(<link xlink:href="http://www.w3.org/TR/SVG11/linking.html">SVG</link>,
<link xlink:href="http://www.topicmaps.org/xtm/1.0/">XML Topic Maps</link>,
<link xlink:href="http://www.xbrl.org/">XBRL</link>, etc. See
<personname><firstname>Robin</firstname>
<surname>Cover</surname></personname>’s
excellent (as always)
<link xlink:href="http://xml.coverpages.org/xll.html">summary</link>
for more details). What's more, I think there's plenty of
hope for continued adoption. I'm currently using it in
<link xlink:href="http://docbook.org/docbook-ng/">DocBook NG</link> and I
hope to extend the stylesheets to provide at least some support for
extended links.</para>

<para xml:id='p2'>But this essay is not intended to spark controversy. I've had enough
of that recently. You like XLink, you hate it, you haven't made up your mind;
it's all good to me.</para>

<para xml:id='p3'>Even the proponents of XLink, I think, will grant that it has
at least one significant usability flaw. In order to define a simple
link, you must specify not only the hypertext reference, but also the
link type:</para>

<screen>&lt;myLink xlink:href="someURI" xlink:type="simple">hot text&lt;/myLink></screen>

<para xml:id='p4'>XLink was designed in the age of DTDs and the idea of relying on
the DTD to provide default attribute values to work around this
inconvenience didn't seem unreasonable. But it sure does now, especially
in an age of well-formed documents validated by many different
schemas. The honest truth is, I don't think it was even a good answer
in the DTD days, not really, but I didn't notice at the time (I won't
attempt to speak for others).</para>

<para xml:id='p5'>Recently, the
<link xlink:href="http://www.w3.org/XML/Core">XML Core Working Group</link>
published a very short note,
<citetitle><link xlink:href="http://www.w3.org/TR/xlink10-ext/">Extending XLink 1.0</link></citetitle>,
that describes a few small changes that could be made to XLink to improve
it's usability.</para>

<para xml:id='p6'>The chief proposal is that the XLink link type should be an
<emphasis>application</emphasis> default. In other words, an application
that sees</para>

<screen>&lt;myLink xlink:href="someURI">hot text&lt;/myLink></screen>

<para xml:id='p7'>should infer that <tag>myLink</tag> is an XLink simple link
(in the absence of any other declaration that provides a value for
the <tag class="attribute">xlink:type</tag> attribute). That single
change will significantly simplify the authoring process and separate
XLink from any particular schema requirements.</para>

<para xml:id='p8'>Because that construction is not valid now, this change cannot break
any existing, valid documents. Any existing documents that don't specify
a link type will go from being invalid to being valid simple links, and
I can't imagine that answer being wrong in any but the most pathological
cases.</para>

<para xml:id='p9'>The other changes, explicitly reserving other attributes in the
XLink namespace, explicitly allowing IRIs, and providing some additional
non-normative schemas, are all nearly trivial.</para>

<para xml:id='p10'>I hope the community can come to consensus that these are small
and reasonable changes that can be made without harm irrespective of
anyone's position on the merits, or lack thereof, of XLink as a whole.</para>

</essay>
