Pourquoi mon balisage itemprop = 'image' est-il incorrect?


9

J'ai expérimenté avec des microdonnées et j'ai pensé que je pourrais l'essayer sur mon blog. Il s'avère que le modèle que j'utilisais a déjà ajouté un balisage. Ce n'était pas génial et j'ai donc arrangé ce que je pouvais.

Pour essayer de pousser ma chance, j'ai ajouté plus de balisage à mon dernier article, mais l'outil de test de données structurées (SDTT) de Google n'est pas satisfait des itemprop='image'attributs et je ne sais pas pourquoi.

Erreurs de l'outil de test structuré

Page de résultats .

C'est ma compréhension, en ignorant tout le code entre les deux, que j'ai structuré les données ainsi:

<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
  <div itemprop='articleBody'>
    <a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>
    <a href="2.png" itemprop="url"><img itemprop="image sharedContent" src="2.png" /></a>
    <a href="3.png" itemprop="url"><img itemprop="image sharedContent" src="3.png" /></a>
  </div>
</div>

Et cela me semble correct. BlogPostingpeut avoir les propriétés articleBodyet imageselon https://schema.org/BlogPosting , mais selon le SDTT:

L'attribut itemtype a une valeur non valide.

En effet, je viens d'essayer le SDTT avec l'exemple de code ci-dessus et il ne parvient pas à valider.

Exemple de code dans le SDTT

Il me manque donc manifestement quelque chose. Qu'est-ce que je fais mal?


Certains des liens de cette question ont été supprimés car ils ne sont pas nécessaires pour répondre à la question.
John Conde

Pourquoi les balises largement utilisées ont-elles alors été supprimées?
Ken Sharp

Réponses:


15

schema.org/BlogPosting image autorise ImageObject et URL, mais Google autorise uniquement ImageObject , d'où l'erreur. Le balisage prévu est:

<!-- my code -->
<div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
  <img src="image.jpg" itemprop="url">
</div>

               

Une autre différence est schema.org/ImageObject recommande contentUrl, mais Google recommande url, d'où mon utilisation ci-dessus.


En réponse au code de votre commentaire , votre structure est toujours incorrecte. Je vais le prendre ligne par ligne:

<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>

Point mineur, mais à moins que vous ne choisissiez XHTML, itemscope='itemscope'c'est faux. Utilisez itemscope(comme vous l'avez fait plus tard).

<!-- your code -->
  <div itemprop='articleBody'>
    <div itemscope itemtype="http://schema.org/ImageObject"/>

Votre ImageObject est un enfant de la propriété articleBody, mais vous ne l'avez pas associé de cette manière. Comme cela, vous avez un articleBody sans propriétés associées et un ImageObject non associé. Tu devrais utiliser

<!-- my code -->
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">

En outre, />est incorrect, même si vous essayez pour XHTML car cet élément a des enfants et une fermeture </div>. Utilisez simplement ce >que j'ai inclus dans l'extrait ci-dessus.

<!-- your code -->
      <a href="1.png" itemprop="url"><img itemprop="image sharedContent" src="1.png" /></a>

Que fait SharedContent ici? sharedContent attend un CreativeWork lorsqu'il est utilisé en tant que propriété de SocialMediaPosting - jamais en tant que propriété d'ImageObject et jamais sur un img.

Votre autre extrait de code qui place la propriété sharedContent comme ci-dessous est également incorrect.

<!-- your code -->
<div itemscope='itemscope' itemtype='http://schema.org/BlogPosting'>
  <div itemprop='articleBody'>
    <div itemprop='sharedContent'>
      <div itemscope itemtype="http://schema.org/ImageObject"/>

Alors que sharedContent est maintenant au bon endroit, il doit toujours être un CreativeWork. Vos ImageObjects ne sont toujours pas associés à BlogPosting, comme le montre l'outil de test de données structurées.

                                          

Voici le code correct.

<!-- my code -->
<div itemscope itemtype="http://schema.org/BlogPosting">
  <div itemprop="articleBody">
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="1.png" itemprop="url"><img itemprop="image" src="1.png"></a>
    </div>
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="2.png" itemprop="url"><img itemprop="image" src="2.png"></a>
    </div>
    <div itemprop="image" itemscope itemtype="http://schema.org/ImageObject">
      <a href="3.png" itemprop="url"><img itemprop="image" src="3.png"></a>
    </div>
  </div>
</div>

Je vois. L'ajout ImageObjectéchoue avec sharedContentcomme enfant: pastebin.com/cSgVZNyE . La suppression le sharedContentrend heureux: pastebin.com/rieWwSM6 . Envelopper chacun imagedans un parent sharedContent( pastebin.com/AmpBDqJs ) se valide heureusement, mais est-ce parce que le STDD de Google l'ignore? Le DRTP est très heureux si l' contentURLon utilise ainsi : pastebin.com/23wBvx8F . Il semble donc que je l'ai fait correctement et que Google l'a fait incorrectement? Ça doit être une première. 😉 Je suppose que je peux tous les apaiser en ajoutant toutes les balises pertinentes. Merci! 😀
Ken Sharp

1
@Ken Voir ma modification pour mes commentaires sur votre code.
grg

TS utilise un type de modèle Blogger de base, il ne pourra donc pas utiliser votre code sans réorganiser l'ensemble du modèle. Les modifications doivent être effectuées au niveau du modèle et non au niveau des données structurées.
Evgeniy

Merci encore @grgarside. Vous avez certainement raison sharedContent- j'ai mal utilisé tout ça. Je l'ai supprimé pour l'instant. Ayant un autre regard sur le schéma, je vois que je ne pense pas avoir besoin de l'utiliser dans un fichier CreativeWork. />Ignorez simplement le , il a été tapé à la hâte 😉, et le code original est XHTML. Je viens de mélanger les deux dans mon exemple (d'où les deux versions de itemscope). Le code final est correct, honnête! 😁
Ken Sharp

@Evgeniy Le modèle est en cours de modification ou il ne fonctionnerait pas du tout. Ma question d' origine contenait des liens que n'importe qui aurait pu facilement vérifier, mais deux wallies ont maintenant modifié les liens et j'en ai marre de les modifier. Alors là, je m'explique encore une fois, comme je l'avais prévu.
Ken Sharp

2

J'ai rencontré un problème similaire avec Google Structured Data Tester marquant mes images comme non valides. Apparemment, il n'accepte pas les images dont la source est un domaine localhost. Dès que j'ai déployé sur le serveur de transfert, le balisage structuré a réussi la validation.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.