名前空間プレフィックス(接頭辞)付きの属性名をCSSの属性セレクターで使うときは、:を\でエスケープする必要があるけど、CSSスタイルシートで使うときと、JavaScriptでセレクターを使用してDOM要素を特定するときとで書き方が異なる。
- CSSスタイルシートで使うとき
\でエスケープする。\が1つ
例:p[xml\:lang="en"] - JavaScriptでセレクターを使用してDOM要素を特定するとき
\\でエスケープする。\が2つ、1つ目がJavaScriptの文字列として、2つ目が属性セレクターとして
例:document.querySelectorAll('p[xml\\:lang="en"]')
以上、MDNに丁寧な説明が書いてありました。
See the Pen Untitled by Taku Yamaguchi (@yamahige) on CodePen.