Let's compare to JSX then: https://news.ycombinator.com/item?id=29194287
Special attributes, events, etc. are React specific and not related to JSX.
Basically it's a clean way to represent nested function calls, that's it. It has nothing to do with React nor does it need React.
<tag prop="value"/> gets turned into React.createElement('tag', {prop: "value"})
That's all. Period. The special props React introduces has nothing to do with JSX.
Also you can customize JSX to change the functions it generates. (i.e. swapping out React.createElement)