Leaving href empty would link to the same page the link is located on. So if on index.php, <a href="">test</a> will link to index.php. With "?" set as a href attribute, it'll link to index.php? - having no (useful) effect at all, except maybe reloading page

Avram is correct in that it links you to the page you are currently on. However there IS a difference between "" and "?". Linking with "" will reload the current URL with the same GET variables attached. Linking with "?" will remove all GET (query-string) variables from the URL.

So if you're on index.php?members=me, and click a link with href="", you'll go to "index.php?members=me". If you click on a link with href="?", you'll go to "index.php?"

If the a element has no href attribute, then the element represents a placeholder for where a link might otherwise have been placed, if it had been relevant, consisting of just the element's contents.Right near the top. Haven't read the whole thing, but using <a name="foo"> is the traditional way to link to a part of the page. I believe it may be deprecated in favour of linking directly to an id on a non-anchor element

A) I didn't mean content-less, I just didn't enter the content or closing tag, so it would be <a name="foo">Foo</a>B) Yours is XHTML, which IMHO should never be used unless you need to parse the content with an XML parser anyway

XHTML is considered malformed HTML by most browsers unless you also use the correct MIME type, ie application/xhtml+xml. But if you used that in early IE versions you would see an XML DOM, and not a rendered web page. So if you were sending XHTML code, the browser was treating it as HTML anyway. There's no harm in using XHTML, and it's important to use it if you need to process it using an XML parser of some kind (don't forget that XML is strict, compared to HTML), but it wouldn't validate correctly.