It passes the W3.org validator, which is a good sign.
Javascript's dataset
and jQuery's data
functions seem to know the difference between the attribute there or missing - but the value is an empty string when it's there, and either undefined or null when it's not. To avoid confusion, I don't think I'd use that personally - I'd probably instead opt for
instead.