----- Original Message ----- From: "Matthew Raymond" <[EMAIL PROTECTED]>
To: "Andrew Fedoniouk" <[EMAIL PROTECTED]>
Cc: "WHATWG" <[EMAIL PROTECTED]>
Sent: Saturday, March 10, 2007 7:17 PM
Subject: Re: [whatwg] href attribute


Andrew Fedoniouk wrote:
Back to basics:

"A hyperlink is a relationship between two anchors,
called the head and the tail of the hyperlink[DEXTER]. " [1]

  This is not a definition of the <a> element. In fact, <a> is defined
as a anchor, not a hyperlink.

I think "hyperlink" is better in any sense than "anchor" as a designation of this entity.


  By contrast, the |href| attribute "specifies the location of a Web
resource". Thus, using |href| for hyperlinks on other elements is an
alteration of the attribute's semantics, because the element you put
them on doesn't have the semantics of a source anchor.

Any element is allowed to be a tail of the hyperlink:

"The id attribute may be used to create an anchor at the start tag
of any element (including the A element)." [2]

  While one could argue that the |id| element give anchor semantics to
an element, it is clear that in this context the text implicitly refers
to the semantics of a DESTINATION anchor, not a source anchor. Even if
you were to ignore this context, it would mean that using |href| as a
global attribute would ALWAYS require you to include an |id| attribute
on the element.

But I do not understand why we have such a limitation for
the head of the hyperlink.

  The definition of <a> as inline is the only limitation in HTML I'm
aware of. Everything else is a CSS issue, and we should generally avoid
making fundamental alterations to HTML purely to achieve presentational
ends.

There are multiple semantically correct cases when
block elements like <li>, <option>, <address> , <img> etc.
*are* hyperlinks.

  Actually, by the definition you quoted, they're not hyperlinks and
can never be hyperlinks because a hyperlink is a relationship. In HTML
4.01, they can't even be source anchors. The HTML 4.01 version of |href|
doesn't have the semantics to make them source anchors even if you made
the attribute global.

  So let's be clear that what you're talking about is making every
element semantically an <a> element. In other words, every element would
automatically be a source anchor. Thus, you have taken semantics that
were explicitly represented by an element and made them implicit and
invisible in the markup. This is a poor way of dealing with semantics
that are at the very heart of the World Wide Web, and I would certainly
not call it "semantically correct".

But designers are forced to use
weird tricks to fight with inline nature of <a>s.

  That issue can be addressed without getting rid of <a>, by either
allowing <a> to contain block-levels, or by creating a new block-level
container with equivalent semantics.


I beleive that you and me have different interpretation of the term 'semantic'. For my semantic any HTML element that has "href" attribute is not anyhow different from the <a> element with href. If I see <li href="..."> I recognize that this is a list item that leads somewhere. Exactly (and even better) as <li><a href="...">...</a></li>
For different tools it also does not matter what to use:

getElementsBySelector(":link") or getElementsBySelector("a:link") or getElementsBySelector("[href]") or whatever.

In any case not all <a>'s are hyperlinks so for your meaning of semantic they should also not be automatically hyperlinks (or anchors if you wish). I am pretty sure that existence of 'href' attribute is what creates semantic meaning of <a> for you. So why <a> cannot be <b href> or <c href>?

Andrew Fedoniouk.
http://terrainformatica.com


Reply via email to