::before { content: attr(x|y) "pass or fail?" }
It's not clearly defined what should happen here. But Firefox (which supports namespaces within attr(); WebKit and Blink do not) treats it as not invalidating the entire rule (whereas invalid namespaces within selectors are treated as invalidating the rule). Seems reasonable to define it as "can't find the attribute" rather than "invalidates declaration", so probably we should just spec what Firefox does here.