web-dev-qa-db-fra.com

Puis-je utiliser des balises <link> dans le corps d'un document HTML?

Puis-je utiliser les balises <link> dans le corps d'une page HTML? J'ai essayé de trouver la réponse à cette question, mais j'ai trouvé des informations contradictoires.

Lors de l'ajout de balises de microdonnées Schema.org à une page HTML, je souhaite ajouter des informations canoniques dans une balise de lien comme celle-ci:

<div itemscope itemtype="http://schema.org/Book">
  <span itemprop="name">The Catcher in the Rye</span>—
  <link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
  by <span itemprop="author">J.D. Salinger</span>
</div>

J'ai eu l'exemple de code ci-dessus de Schema.org . Selon eux, c'est la voie à suivre pour les personnes qui souhaitent ajouter une référence canonique à un itemprop, mais ne veulent pas placer un lien hypertexte sur leur site Web.

Cependant, W3 indique clairement que les balises <link> ne doivent être placées que dans la section head, rendant ainsi l'exemple Schema.org invalide.

Si je veux m'en tenir à corriger le balisage, quel conseil dois-je suivre?

20
Edward Touw

Microdonnées étend HTML5 de manière à ce que les éléments link et meta puissent être utilisés dans l'élément body, si ils contiennent un attribut itemprop.

Si l'attribut itemprop est présent sur link ou meta, il s'agit d'un contenu de flux et d'un contenu de phrasé. Les éléments link et meta peuvent être utilisés lorsque le contenu doit être reformulé si l'attribut itemprop est présent.

Cette extension est actuellement incluse dans HTML 5.1 Nightly (version de l'éditeur) (voir link element ​​et meta element ). Mais comme la spécification des microdonnées est devenue une note du W3C récemment, nous devrons voir ce qui se passe avec cette référence.

RDFa 1.1 étend HTML5 de manière à ce que les éléments link et meta puissent être utilisés dans le body, s'ils contiennent un attribut propertỳ.

Si l'attribut @property RDFa est présent sur les éléments link ou meta, ils DOIVENT être considérés comme conformes s'ils sont utilisés dans body du document. Plus spécifiquement, lorsque les éléments link ou meta contiennent l'attribut RDFa @property et sont utilisés dans le body d'un document HTML5, ils DOIVENT être considérés comme un contenu de flux.


Ainsi, vous êtes pas autorisé à utiliser tout élément link (par exemple, <link href="" rel="" />) dans body, mais uniquement ceux avec un attribut itemprop (pour les microdonnées) resp. un attribut property (pour RDFa).

Ainsi, votre élément link peut être utilisé dans le body:

<body>
<!-- … -->
  <link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
<!-- … -->
</body>
23
unor

W3Schools ne définit pas les normes de l'industrie en matière de codage HTML. Ils sont simplement un site de référence tiers qui est pas affilié au W3C en tout cas. W3Schools et d’autres sites ont souvent tort d’utiliser des technologies de codage avancées telles que Schema et Responsive Design . Lorsque vous utilisez du code relativement nouveau, votre guichet unique devrait être W3C comme défini par les normes de conformité, et peut-être HTML5 Doctor si vous avez besoin d'aide pour comprendre HTML5, il n'est pas officiel mais hautement respecté .

En regardant votre code, il passe validation du W3C sans aucun problème avec l'élément link contenu dans le <body> </body>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<div itemscope itemtype="http://schema.org/Book">
  <span itemprop="name">The Catcher in the Rye</span>—
  <link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
  by <span itemprop="author">J.D. Salinger</span>
</div>
</body>
</html>

REPONSE COURTE: Oui, vous pouvez utiliser <LINK> dans <body> </body> mais comme Unor l’a mentionné dans sa réponse, doit inclure itemprop.

11
Simon Hayter

L'élément de lien peut être ajouté au corps d'un document HTML si l'attribut itemprop est présent. Voici une démo .

Voici également un exemple d'attribut link itemprop .

0
Daniel