On 7 Nov, 2005, at 11:20 AM, Sander Tekelenburg wrote:
<http://www.whatwg.org/specs/web-apps/current-work/#dfn0>
...
The spec needs to indicate to UA developers that users should easily
be able to 'jump' back, instead of just getting lost. This would
require too many words. Thus, I propose to scrap the word "jump"
entirely. (After all, a possible implementation would be tooltips, in
which case there is no jumping at all.)
Tooltips probably wouldn't be a viable implementation, because of a
long-standing and probably unsolvable problem with <dfn>: there is no
programmatic way of telling where the definition begins and ends. Is it
the current clause? The current sentence? (Dotted initialisms make even
sentences impossible for a computer to demarcate reliably.) Two
sentences? The whole paragraph? Two paragraphs? In many school
textbooks you could probably find examples of all of these.
The reason I say the problem is probably unsolvable is that, while a
<def> or similar ancestor element could be introduced to mark the full
definition (for example, "<def>the American term for a crotchet is a
<dfn>quarter note</dfn></def>"), authors wouldn't bother using it
because they wouldn't get any presentational benefit from it. (The
benefit of providing accurate tooltip boundaries probably wouldn't be
obvious enough.)
So I'd expect <dfn> navigation, if it was implemented at all, to work
just the same as navigation to internal anchors in the same document
does currently: functioning as a jump, with the Back button returning
to where you were.
...
Already better would be:
[...] should be presented in such a way that the user can easily
access the first dfn element giving the defining instance of that
term.
I'd prefer something even more explicit, like
[...] should be presented in such a way that the user can easily
access the first dfn element giving the defining instance of that
term, without risking the user can't find his way back.
but I'm not entirely happy with this phrasing. I'm thinking of
something like "[...] easily access within the current view of the
document [...]" or "[...] easily access without losing the current
position in the document [...]", but given that the sentence already
is so long, I don't see how to cram this in :)
...
How about this:
The _dfn_ element allows automatic cross-references. From any
inline-level element that refers to a _dfn_ element, user agents
should make it easy to access the definition provided by that
_dfn_ element without losing one's previous place in the
document. An inline-level element can be considered to refer to
a _dfn_ element in the same document if (a) the inline-level
element has no _dfn_ or interactive elements as ancestors or
descendants, and (b) either its _title_ is equal to the _term_ of
the dfn element or it has no _title_ but its _textContent_ is
equal to the _term_ of the _dfn_ element, and (c) it does not have
an ancestor element that is already referring to a _dfn_
element.
This is also slightly shorter and easier to read than the current text,
and avoids the confusing and unnecessary exclusion of elements like
<em> (for example, "I said <em>font</em>, not <em>typeface</em> ... [a
couple of paragraphs later] ... By <dfn>font</dfn> I mean a combination
of typeface, size, weight, and variant").
One concern I have that is addressed by neither the current text, nor
my suggested text above, is the "in the same document" bit;
cross-references to definitions in different documents aren't just not
automatic, they're not possible at all. It almost seems as if <a> is
being reinvented badly.
--
Matthew Paul Thomas
http://mpt.net.nz/