Too bad not everyone out there is using a modern browser! I also wouldn't bank on that given the tendency towards regressions in FF and the incomplete implementations of a specification that's still in DRAFT!
Which makes assumptions based on it's rules that may not match up with the developers intent! That's still making assumptions; the spec just says what those assumptions are -- it still means invalid nesting is rubbish code that should be fixed.
This one REALLY pisses me off when people say it -- Uses blocks of instructions to tell a computer how to process the data in a sequential order... Sounds like a programming language to me... a high high high level one, but still a programming language.
The "its not a programming language" nonsense is like the opposite of the die hard XML whackjobs who call XML "machine readable"... does it store the numbers in binary? Does it store the strings as null terminated or run length delimited? Is it easily accessed via fixed width at the machine language level without running through a complex parser first? No? Then it's NOT machine readable. That's like calling C 'machine readable'.
Of course if HTML worked more like real programming languages problems like the OP's wouldn't even get past the parser. Biggest mistake in the creation of HTML was letting errors just slide by so people can be sleazy, lazy, or stupid. Validation was supposed to help fix that, but naturally with that giant steaming pile of manure known as HTML 5 they've done a wonderful job of pitching all that in the trash, alongside all the other improvements we were given in the previous decade.