少し前から、当方のブログサイトの HTML に埋め込んでいる Facebook 連携用(OGP:Open Graph Protocol) meta
タグ部分で、 W3C Validation が “Invalid” になるようになりました。
ちなみに、当記事執筆当初の7月8日は Invalid 判定でしたが、当記事公開時(7月20日)現在は Valid 判定が出るようになりました。
以下、Invalid になっていた時の、その原因と現象確認についての記録です。
0. 前提条件
- 当然、HMTL のバージョンは “HTML5” である。("HTML4.01" や “XHTML1.0” 等ではない)
- HTML に Facebook 連携用(OGP)
meta
タグを埋め込んでいる。 - 今まで W3C Validation チェックで正当(Valid)な HTML として判定されていたのに、6月24日くらいから不正(Invalid)な HTML と判定されるようになった。
1. 現象
ブログサイトの HTML5 に対して W3C Validation チェックを実行すると、今まで(2013年6月24日くらいまで)問題なかった部分でも以下のようなエラーが発生し、Invalid と判定されるようになった。
HTML に埋め込んでいる Facebook 連携用の meta
タグ(og: Open Graph protocol)で発生している。(同じエラーが9個の meta
タグで)
2. 原因
メッセージを見てみると、「必要な name
属性が無い」と言っているようだ。
ちなみに、"meta" のリンク先の説明を確認してみると、
meta
要素を指定する際には、name
,http-equiv
,charset
,itemprop
属性のうち、少なくとも一つを指定する必要があり、name
,http-equiv
,itemprop
属性のどれかを指定する際には、必ずcontent
属性とセットで使用しなければならない。
のようだ。今までチェックが少し寛大だったのが、少しシビアになったようだ。
3. 調査
以下は、ある日のブログ記事の HTML に埋め込まれていた OGP 関連の meta
タグ部分。
これは、HTML ソースから抜粋したものだが、Octopress(Ruby 製静的ブログシステム) なので、実際にはテンプレートを変更している。
1 2 3 4 5 6 7 8 9 10 |
|
ちなみに、meta
で og
, fb
を使用するために head
タグに以下のような設定もしている。(今は設定しなくてもよいようだが)
1
|
|
まず、meta
タグについて HTML 5.1 Nightly でも確認してみた。
name
属性に指定できる値は、application-name
, author
, description
, generator
, keywords
のほか、MetaExtensions - WHATWG Wikiで提案され、かつ、拒絶されてない値でなければならいようだ。
そこで、MetaExtensions - WHATWG Wiki を確認してみると、og:title
等のキーワードは、"Registered Extensions" という一覧(登録済み meta 拡張?)に掲載されている
しかし、"Proposals that don’t meet the requirements for a registration" という一覧(登録条件を満たしていない提案?)にも og:title
等のキーワードが掲載されている。
どうやら、これから対応させるもののリストには登録済みだが、条件を満たしていないために現在調整中という意味であろう。
将来 property
という属性が廃止されて name
属性で og:*
キーワードが指定できるようになるのではないでしょうか?
4. 対応
現在のところ、Facebook 連携(OGP)用 meta
タグ部分については、W3C Validation チェックでで正当(Valid)に判定されるようにする術はないようだ。
対応されるのを待つのみ?
ただ、W3C Validation とは別のバリデーションチェックサイトを利用してチェックする方法もあるようだが、それでは本末転倒になってしまう。(「W3C でチェックしたいのに W3C 以外でチェックしろ」というのは答えになっていない)
参考サイト
というわけで、Facebook 連携(OGP)部分については対応されるのを待つことにした。
W3C Validation の HTML5 は現在ドラフト(まだ勧告となっていない)段階なので、勧告になるまではまだまだ変更はあるでしょうね。
以上。