let’s take, for example, other languages… like human languages.
now, semantic is delivered by using certain language elements: verbs, nouns, adjectives, using certain rules. and this doesn’t restrict one’s vocabulary not a single bit, you can always add new words to it.
xhtml, on the other hand, it’s not doing that at all, with it’s extensibility: you can use new constructs, like <city>, but where is the generally accepted definition that classify it’s use and it’s place in the language? having none of those, it lacks semantics.
but in html, you can always build any number of new “words” by using any combination of the existing elements, words that will have semantic written all over them.
going further with the analogy between human languages and xhtml, if we were to open the dam, and permit everyone to use constructs that only he/she&family co. can understand and decipher, semantic would become obsolete. but, then, it will only make thing worse, because, as it is,
Le langage est source de malentendus. (Language is the source of misunderstandings.)
Antoine de Saint Exupéry - Le Petit Prince (1943) (The Little Prince)
the world would be full of dialects, like in the times when tribes were the most advanced human social structures, and no google translate could ever help us understand one another.