Schema.org SiteNavigationElement
devrait-il être structuré comme ceci
<div itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<ul>
<li itemprop="url"><a href="#" itemprop="name">Link 1</a>
</ul>
</div>
ou comme ça?
<div itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<ul>
<li>
<a href="#" itemprop="url"><span itemprop="name">Link 1</span></a>
</li>
</ul>
</div>
Vos questions semblent être:
itemprop="url"
sur li
?itemprop="name"
sur a
?La réponse à ces deux questions est: Non, vous ne devriez pas faire cela. Microdata définit des règles d'analyse spéciales pour des éléments tels que a
.
Schema.org’s url
property attend une URL en tant que valeur. Microdata définit que vous devez utiliser des éléments tels que a
/area
/link
/etc. ( essentiellement tout élément avec un attribut src
ou href
) pour spécifier les URL. Dans votre premier exemple, la valeur de la propriété url
serait pas l'URL, mais le texte "Lien 1".
Comme les propriétés des éléments a
(si elles ont un attribut href
) prennent toujours le contenu href
(et non le contenu de l'élément) en tant que valeur, votre premier exemple aurait l'URL comme valeur pour la propriété name
(mais attend un texte, pas une URL, bien sûr).
Donc: Votre premier exemple produirait des résultats erronés. Votre deuxième exemple est bien.
Notez qu'il serait également possible d'omettre l'élément span
. Au lieu de
<li>
<a href="#" itemprop="url"><span itemprop="name">Link 1</span></a>
</li>
vous pourriez utiliser
<li itemprop="name">
<a href="#" itemprop="url">Link 1</a>
</li>
(Voir aussi ma réponse similaire à une question sur le dépassement de capacité.)
Selon Search Engine Land , il est supposé ressembler à ceci:
<ul itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<li itemprop="name">
<a itemprop="url" href="#">Link 1</a>
</li>
<li itemprop="name">
<a itemprop="url" href="#">Link 2</a>
</li>
<li itemprop="name">
<a itemprop="url" href="#">Travel Resources</a>
</li>
</ul>
SiteNavigationElement pose un problème pour moi et pour d'autres personnes également, comme on peut le voir dans la question publiée par @bybe dans un commentaire. on peut dire que le problème est le manque de portée.
Est-ce que SiteNavigationElement est référencé à un seul élément du système de navigation, de sorte qu'il se lit comme suit: est un élément de la navigation du site . Ou il est référé à l'ensemble du système de navigation, et il est donc lu comme suit: L'élément de navigation du site
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div itemscope itemtype="http://schema.org/WebPageElement">
<link itemprop="additionalType" href="http://schema.org/ItemList" />
<meta itemprop="name" content="navigation_menu" />
<ul>
<li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span itemprop="itemListElement">
<a href="http://www.example.com/link_1" itemprop="url"><span itemprop="name">Link 1</span></a>
</span>
</li>
<li itemprop="additionalType" itemscope itemtype="http://www.schema.org/SiteNavigationElement">
<span itemprop="itemListElement">
<a href="http://www.example.com/link_2" itemprop="url"><span itemprop="name">Link 2</span></a>
</span>
</li>
</ul>
</div>
</body>
</html>
Ce qui est un peu plus complexe, dans la mesure où chaque membre du système de navigation n'est pas considéré comme un élément qui mérite une balise, il requiert également une syntaxe combinée, en utilisant additionalType pour transmettre l'idée. que ces liens sont une liste d'éléments qui appartiennent à quelque chose.
Mettre à jour
J'ai changé les codes de cette réponse par la version ci-dessus, pour l'adapter à un mode de fonctionnement et de validation en tant que microdonnées et HTML. Dans l'historique de l'édition de la question, vous pouvez voir les options que j'ai utilisées auparavant. J'ai remplacé ces codes parce que