Remember when we were worried about the semantic purity of our HTML.
Semantics in HTML is about exposing the meaning of content through the DOM. Adding data-binding via attributes doesn't change that at all.
<label>Name <input type="text" [(ng-model)]="model.name"></label>
<label>Name <input type="text"></label>
<input type="text" ng-model="model.name">
<input type="text" [(ng-model)]="model.name">
Granted, it isn't necessarily what I'd expect to be legal, but it doesn't look illegal either. We may just need to add some logic to HTML colorizing syntax checkers in our IDEs is all.
I trust the spec more than an implementation.
If true I'm not sure it matters if every browser throws an exception.
<input type="text" bindon-ng-model="model.name">
<input type="text" bind-myprop="model.foo" on-myevent="bar()">
People react (heh) strongly to React's JSX when they first come across it but at the end of the day I find React far more honest in its approach. Your Angular templates don't really gain anything from looking like they're just HTML templates -- instead you end up either serializing your data into some kind of string format or faffing about with magical nested "scope" objects (as if JS scoping wasn't enough to keep in your head).
But in order to maintain that illusion you also have to buy into these huge layers of added complexity when writing your own directives. I'd rather go all the way back to steamrolling the DOM with Backbone templates than these pretend-semantical lumps of custom elements and attributes.
Sorry for ranting. I'm still sore about being burned by Angular.