(A) exclusion

Ref: XHTML 1.0, Appendix B. Element Prohibitions

That section expresses HTML prohibitions that cannot be expressed in XML,
including "a cannot contain other a elements." Since XHTML 1.0 is to be as
backward compatible as at all possible, that restriction is reasonable. But
are there real implemention issues to keep this restriction in the future?


What Appendix B prevents is code like this:
<a href="here" id="outer">some data including an <a href="there"
id="inner">inner</a> and an outer href link</a>

The reasonable interpretation is that the inner href will fire if the
"inner" data was activated, overriding the outer href. An alternative
interpretion would be a rule like in CSS, where the inner will override the
outer if they are in conflict, otherwise they will enhance each other. The
second interpretation will be more complex to implement and probably to use.


The whole issue can be avoided with recoding: <a href="here"
id="outer-1">some data including an </a><a href="there"
id="inner">inner</a><a href="here" id="outer-2"> and an outer href link</a>

But apart from making the code (and the tree) more complex and harder to
maintain, the integrity of the outer link is lost. 


TWO USER INTERFACE EXAMPLES

A and B are here two overlapping hypertextual rectangles. (I use the visual
(WIMP) interface as example, this can be extended to other interactive
interfaces too.)

+------------+
|A           |
|     +----+ |
|     |B   | |
|     +----+ |
|            |
+------------+

This would be the normal case with B being the inner anchor. The expected
behaviour would be that if someone clicked inside B, B and not A would be
activated, and if someone clicked inside A minus B, A would be activated,
and if the click was anywhere else, neither would be activated.

+-------+
|A      |
|    +-------+
|    |B      |
+----|       |
     |       |
     +-------+

This example applies primarily to visual interfaces. Here neither rectangle
contain the other, but one will be seen as nearer (above) the other, and
the one the user will interact with. The first example can be seen as a
special case of this, as the B rectangle would be hidden from view if A had
been closer than B.

Any two elements can be put in this relation using CSS positioning whether
or not the A elements are in proximity or being contained by one other. The
responsibility will ultimately rest with the designer, but my point is that
this is something a UA will have to consider in any case. 

Received on Thursday, 3 February 2000 04:27:47 UTC