Ich verwende Schema.org-Markup für a Person
, erhalte jedoch inkonsistente Ergebnisse im Rich Snippet Testing Tool von Google, wenn ein <a>
Tag im Vergleich zu einem <span>
Tag verwendet wird. Nehmen Sie diese beiden Beispiele:
<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>
Der erste zeigt, dass der Name analysiert wurde username
, aber als ich den zweiten versuchte, in HTML zu speichern, zeigte er, dass der Benutzername http://example.com/user/username
- dh die URL des Links - ist.
Warum passiert das und ist es richtig? Ich kann keine Ressourcen finden, die zwischen itemprop
einem Link und einem unterscheiden span
.
Antworten:
Was die Spezifikation sagt
Ja, dieses Verhalten ist korrekt. In Abschnitt 5.4 der W3C-Mikrodatenspezifikation wird beschrieben, welcher Wert verwendet wird.
In den meisten Fällen wird der Inhalt des Elements als
itemprop
Wert verwendet, in einigen Fällen wird der Wert eines Attributs als Wert verwendetitemprop
.Dies ist der Fall für diese sechs attributes¹:
content
²,src
,href
,data
,value
,datetime
.Was dies in der Praxis bedeutet
Wenn Sie den Inhalt eines
a
Elements (anstelle der URL in seinemhref
Attribut) als Eigenschaftswert verwenden möchten , müssen Sie ein geeignetes übergeordnetes oder untergeordnetes Element verwenden / hinzufügen:Wenn Sie eine URL als Eigenschaftswert zur Verfügung stellen möchten, verwenden Sie müssen
itemprop
auf einer der URL - Eigenschaft Elemente (dh Elemente , die can³ habenhref
,src
oderdata
Attribut). Dies wäre also ungültig (es sei denn, Sie möchten eine Zeichenfolge als Wert angeben, der nur wie eine URL aussieht):¹ Es muss gültig sein, damit das Element dieses Attribut hat. Für ein (ungültig!) Wird also
<div href="" itemprop=""></div>
der Elementinhalt verwendet, nicht derhref
Wert.² In der alten Mikrodaten-Spezifikation von WHATWG und W3C kann nur das
meta
Element dascontent
Attribut haben , aber die neue Mikrodaten-Spezifikation von W3C (derzeit ein Arbeitsentwurf) erlaubtcontent
jedes Element. Wenn ein Element eincontent
Attribut und auch eines der anderen aufgelisteten Attribute hat,content
wird es verwendet.³ Mikrodaten macht es ungültig eines der haben URL - Eigenschaft Elemente ohne ihre jeweiligen URL - Attribut (dh
href
,src
,data
), mit Ausnahme deslink
Elements (aber es ist bereits von HTML erforderlich , um das haben ,href
Attribut).quelle