Because that's all it's asked to do. But it could also use its built-in knowledge about headings to generate an automatic table of contents (some screen readers can do this, I believe). The point is that it 'knows' a closed set of element types and there is no way, except plug-ins and similar, to extend that set.
Sir Tim's dream about a semantic web relies on user agents 'understanding' the markup. Homegrown tag names will not make that possible.
Without semantics a web page is nothing more than a picture to look at. It has no meaning for applications which cannot interpret the visual information.
It isn't necessarily an address, but it is – at least it's supposed to be – contact information. Browsers 'know' this and could – in the ideal world where web authors knew what they were doing – use this to provide a means for getting in touch with the author. They couldn't do that if you chose to call it
<postadress> and I chose to call it
<contact> and Gary chose to call it
Element types must be pre-defined and known to be useful. Web semantics is about making information meaningful to software, not about using markup that is human-readable.
Yes, that's exactly the problem: we'd have to tell the application what
<street> means. To a general-purpose UA, such as a browser, it's nonsense. If we use
class attributes, however, we give even browsers at least a hint about what it is.
Microformats is a way to add something approaching semantic meaning in a way that doesn't break backwards compatibility, which adding new element types would do.
<city> has no semantics to a browser because it's completely unknown. It could equally well be
<span class="city"> at least tells the browser that it's a span of characters that has some sort of special meaning.
Yes, but semantics is not about making markup easy to read for people!.
Now you're being silly, Gary. The UA style sheet is an integral part of the browser. Even Lynx has one, after a fashion.
So tell me how an XHTML-supporting browser (plus a search engine 'bot and a screen reader) would be able to understand arbitrary homegrown markup. You can't specify semantics in a DTD, only grammar.
That is where you are wrong, Gary. The markup tells user agents what the content is; not human users.
<city> isn't semantic because an English-speaking person understands the word.
I'll say it again, since it seems that this is a point that a lot of people are missing:
Web semantics is about conveying meaning to software, not about writing markup that is self-documenting for human beings.
I know it's hard to believe for us professionals, but most users out there actually don't even look at the source code of most sites they visit! :eek: