ERB decisions on linking element recognition

The ERB met Sat. Feb. 22.  Present: all but Clark and DeRose.  Discussion
was on the subject of recognition of linking elements.  The decisions
we have apparently taken do leave us with some fairly serious concerns,
so we are submitting both the decisions and the concerns to the WG on
the theory that someone may convince us either that the concerns are
overblown, or that they are understated and that we should proceed to
a fallback position. 

I. Recognizing linking elements via attributes

With respect to recognition of linking elements, the ERB has consensus 
that the best way to do this is with reserved attributes.  The attribute
name should probably be "XML-LINK".  There is, however, a consequence 
which could lead to direct conflict between the desire for operational
simplicity and that for document validity.

The problem is, how to declare and provide a default value for the 
XML-LINK attribute?  

1. The case where no markup declarations are provided:
   plan A: supply the attribute for each element that is a 
           linking element.

2. The case where only the internal subset is to be provided:
   plan B: declare the attribute with a #FIXED default value
           in an <!ATTLIST in the internal subset.

Both of these are perfectly viable; plan A might be sensible
even with an internal subset, if the number of linking attributes
is small.

3. The case where there is an external DTD subset:

   plan A: same as above
   plan B: same as above
   plan C: declare the default in the external subset

But plan C means the client has to fetch the external subset in order 
to get the necessary declaration.  Which is a violation, we think, of
our axioms.  To avoid that, stick it in the internal subset.  Oops,
then either 

  plan C1: you remove it from the external subset, or
  plan C2: you provide invalid documents to the client; 8879 makes it
           illegal to have multiple <!ATTLIST declarations for the
           same element.

Plan C1 is operationally infeasible.  C2 violates another of our 
axioms, that XML should support operations on valid documents.

Of course, the problem goes away if 8879 is modified to remove the
current prohibition on multiple <!ATTLIST declarations; and we hope 
that this will happen in the not-too-distant future.

However, the ERB is convinced that for Web viability, there *must be* a 
signaling mechanism that's within the document instance that gets sent
down the pipe.  So, if it seems that the conflict with 8879 doesn't go 
away, we will avail ourselves of an escape hatch; at the moment there 
seem to be four options:
  e1: Steve Pepper's elegant <!LINKTYPE proposal
  e2: A PI-based signal
  e3: A special XML-LINKMAP element that sits at the front of
      the instance.
  e4: A special XML-LINKMAP element that goes in an external document
      (stylesheet or something found by analogous means), as proposed
      by Terry Allen and Alex Milowski

There was sharp dissension in the ERB on what to do given the 
uncertainty on what WG8 will do.  Several members, while respecting the 
integrity and appropriateness of the <!LINKTYPE technique, find the 
syntax, and the prospect of explaining it, repellent.  Nonetheless, the 
<!LINKTYPE technique, if only as an interim measure, remains the choice 
of at least one member.  The PI technique is nicer looking and easier to 
explain, but requires extra implementation.  It also (I think) remains 
the first choice of one or more ERB members.  Some feel that the 
<!ATTLIST in the subset has the advantage of requiring no extra syntax 
beyond that in base XML, and the problem of the conflict between 
manageability and maintaining SGML validity would be a non-issue, 
operationally.  There is also concern on the part of ERB members about 
adopting interim measures at all, especially while there is active work 
going on among WG8 members in an effort to address the concerns raised 
by the XML work.

By a vote of 8 to 1 (Sperberg-McQueen dissenting), the ERB tentatively
decided to
- specify that linking elements are to be recognized using the value
  of a reserved attribute
- include in the XML Link spec some application notes as to the 
  operational techniques for such signalling, including providing
  it on each element and using <!ATTLIST in either internal or
  external subsets
- point out that it is not possible to duplicate external subset
  markup declarations in the internal subset without compromising
  SGML validity
- promise, in the draft, that if the multiple-ATTLIST method does
  not become legal in SGML, one of the other feasible methods which 
  provide compatibility with SGML will be substituted for the 
  multiple-ATTLIST method (but not to decide until then which option 
  will be chosen)

II. Recognizing linking elements via GI

The ERB voted as follows: In favor of allowing recognition via GI:
Bray, Magliery, Maler, Kimber.  Against: Bosak, Hollander, Paoli,
Sharpe, Sperberg-McQueen.  Thus the measure fails.

The arguments here are simple.  In favor of doing this are the facts
that it's easy to explain, and that this is the specified default
behavior for an architecture anyhow.  Against it are the benefits of
having only one way to do things, with the accompanying desirable 
shrinkage and simplification in the specification.  Given the closeness 
of the vote, I *think* I can speak for most of us in saying that it
was a pretty close call, and most of the ERB, regardless of the way 
they voted, probably could have lived with it going either way;
the arguments on both sides are palpably good, and the consequences
of a wrong choice don't seem that severe.

Cheers, Tim Bray
tbray@textuality.com http://www.textuality.com/ +1-604-708-9592