- From: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- Date: Wed, 16 Dec 2009 18:08:31 +0100
- To: Toby Inkster <tai@g5n.co.uk>
- Cc: Paul Cotton <Paul.Cotton@microsoft.com>, "public-html@w3.org" <public-html@w3.org>, Mark Nottingham <mnot@mnot.net>
Toby Inkster, Wed, 16 Dec 2009 12:23:17 +0000: >> http://www.mnot.net/drafts/draft-nottingham-http-link-header-07.txt >> http://www.mnot.net/drafts/draft-nottingham-http-link-header-07-from-6.diff.html > > Your new explanation on @rev in HTML4 states: > >> some hold that rev reverses >> the direction of the link, while others that it reverses the >> semantics of the relation itself Firstly: This description only creates more confusion. For example, the readers will wonder (as I do): What's the difference between reversing the link and reversing the semantics of the relation itself? Secondly: It misinforms. @rev doesn't "reverse" anymore than @rel "relates". Neither @rev nor @rel affect the direction of the link. Both @rel and @rev only _informs_. @rel informs about the relationship that "the source resource" has to "the destination resource". While @rev does the opposite: it inform about what kind of relationship "the destination resource" has to "the source resource". In HTML 4.01, source, destination and direction is the first thing that is explained about links in general: [1] ]] A link has two ends -- called anchors -- and a direction. The link starts at the "source" anchor and points to the "destination" anchor, which may be any Web resource (e.g., an image, a video clip, a sound bite, a program, an HTML document, an element within an HTML document, etc.). [[ And about the anchor element it is said: [2] ]] 2. The name attribute names the anchor so that it may be the destination of zero or more links (see also anchors with id). 3. The href attribute makes this anchor the source anchor of exactly one link. [[ The HTML 5 draft shows very little interest in anything related to direction w.r.t. links. E.g. it fails to say that an anchor with a @name or @id can be the destination anchor of link. And also, it doesn't include @rev. Thus, the literal meaning of @rev - reverse - plays on the important concept in HTML 4, that each link as a source anchor and a destination anchor. Now, if we apply @rev to anchor tag, such as in the following example, <a href="albumpage" rev="image" name="image-1" id="image-1"> <img src="image" alt="description" /> </a> then this does not change the fact that it is the anchor's @name/@id which represents the "destination anchor" or that it is the anchor's @href which creates a "source anchor". What @rev does is that it informs about what kind of relationship the destination resource of the a@href has to the source resource of the a@name. > The HTML 4.01 Recommendation defines @rel as: > > "the relationship from the current document to > the anchor specified by the href attribute" > <http://www.w3.org/TR/html4/struct/links.html#adef-rel> > > And @rev as: > > "a reverse link from the anchor specified by the > href attribute to the current document" > <http://www.w3.org/TR/html4/struct/links.html#adef-rev> Note the use of the word "relationship" about @rel, and "reverse link" about @rev. In isolation this could make it seem as if @rel defines semantics ("relationship") while @rev defines "a reverse link", which supposedly is something other than a relationship. However, HTML 4 also says: [3] ]] The rel and rev attributes play complementary roles -- the rel attribute specifies a forward link and the rev attribute specifies a reverse link. [[ Since @rel and @rev can be used simultaneously in the same <link> or <a>, then "specifies" should of course not be interpreted to mean "relate" or "reverse" or "create" or any other thing that could make anyone think that @rev affects the link in any way. I think the above could have been reworded to say that "the rel attribute specifies the link relationship forwards, while the rev attribute specifies the link relationship in the reverse direction". The point is: @rel and @rev does the same thing, except in opposite direction. They do not change anything, however. They only add information. > Further it illustrates this with an example [ I replaced with a full quote:] ]] Document A: <LINK href="docB" rel="foo"> Has exactly the same meaning as: Document B: <LINK href="docA" rev="foo"> [[ Again, the text speaks about "meaning". It is simplest to see with a real example, such as "next": Document A: <LINK href="docB" rel="next"> Has exactly the same meaning as: Document B: <LINK href="docA" rev="next"> When it is said that they both have "the same meaning", then it is meant that they both speak about the same oneway relationship between Document A and Document B - more correctly: from A to B. None of them informs about whether Document B has a reciprocal relationship to Document A. Document B could in theory appear in another web site - another context - than Document A. It could be without any link to Document A, except for the link that Document A itself "feels" that i has to Document B. > The earlier 4.0 Recommendation has word-for-word identical definitions > and examples. 3.2 is similar <http://www.w3.org/TR/REC-html32#link>. > > I don't doubt that some people are confused by @rev. (If you look hard > enough, you can find people confused about almost anything.) But given > that all the relevant recommendations are quite clear in stating that > @rev reverses the *direction* of the link, it seems disingenuous to > present them as two equally valid interpretations of the definition of > @rev. I, again, take exception to the claims that whether @rel or @rev changes whether the direction or the semantics. What they both do is that they _inform_ about the semantics of the link. It is just a fact of life that a link has a direction, and that semantic information is applied to either the source-to-destination relationship (@rel). Or to the destination-to-source relationship. The use of @rev or @rel informs about the direction the semantics is applied. > I'd suggest changing the wording to something like: > > while rev is defined to reverse the direction of > the link, some have implemented it as if it reversed > the semantics of the link type I don't know who has implemented this. I would like to see it so I can understand what is meant. A more relevant rewording could be: While rev is defined to inform about the reverse relationship of the link". However, I think much more info need to be added, yes, indeed that the @rev specification of HTML 4 should be included and, eventually, clarified. Who needs to know that some are confused? > Though, that having been said, although I've seen a handful of examples > where people have mistakenly used @rev instead of @rel, either through > ignorance or the slip of a finger, I can't remember seeing any which > *rely* on the mistaken interpretation of it reversing the semantics of > the link type. For example, I've never seen a page which used, say, > rel="author" to link to the author and rev="author" to link to people > who did not contribute to the document. +1 [1] http://www.w3.org/TR/html4/struct/links.html#h-12.1 [2] http://www.w3.org/TR/html4/struct/links.html#h-12.2 [3] http://www.w3.org/TR/html4/struct/links.html#h-12.3.1 -- leif halvard silli
Received on Wednesday, 16 December 2009 17:09:16 UTC