Person
にSchema.orgマークアップを使用していますが、<a>
タグと<span>
タグを使用すると、Googleのリッチスニペットテストツールで一貫性のない結果が得られます。次の2つの例を見てください。
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
<a href="http://example.com/user/username">
<span itemprop="name">username</span>
</a>
</span>
<span itemprop="author" itemscope itemtype="http://schema.org/Person">
<a href="http://example.com/user/username" itemprop="name">username</a>
</span>
最初のものは名前がusername
として解析されることを示していますが、2番目のものをHTMLで保存しようとしたときに、ユーザー名がhttp://example.com/user/username
-つまりリンクのURLであることを示しています。
なぜこれが起こりますか、それは正しい動作ですか?リンク上のitemprop
とspan
を区別するリソースが見つかりません。
はい、その動作は正しいです。 セクション5.4 W3C Microdata仕様のどの値が使用されるかを説明しています。
ほとんどの場合、要素のコンテンツはitemprop
値として使用されますが、場合によっては、属性の値がitemprop
値として使用されます。
これは、これらの6つの属性¹の場合です:content
²、src
、href
、data
、value
、datetime
。
プロパティ値としてa
要素のコンテンツ(href
属性のURLの代わりに)を使用する場合は、適切な親または子要素を使用/追加する必要があります。
<a href="ignored-url"><span itemprop="property">property value</span></a>
<span itemprop="property"><a href="ignored-url">property value</a></span>
プロパティ値としてURLを提供する場合は、 URLプロパティ要素のいずれかでitemprop
を使用する必要があります (つまり、 href
、src
、またはdata
属性を持つことができる要素)。したがって、これは無効になります(URLのように見える値として文字列を提供したい場合を除く)。
<!-- INVALID --> <span itemprop="property">http://example.com/foo</span>
¹要素がこの属性を持つことは有効でなければなりません。 (無効!)<div href="" itemprop=""></div>
の場合、href
値ではなく、要素のコンテンツが使用されます。
²WHATWGおよびW3CのMicrodataの古い仕様では、 meta
要素のみがcontent
属性を持つことができます ですが、新しいW3C Microdata仕様(現在は草案)では、任意の要素でcontent
が許可されます。要素にcontent
属性があり、リストされている他の属性のいずれかがある場合、content
が使用されます。
³Microdata 無効にするURLプロパティ要素の1つを、それぞれのURL属性(つまり、href
、src
、 data
)、link
要素を除きます(ただし、href
属性を持つことはHTMLで既に必要です)。