Posso usar tags <link> no corpo de um documento HTML?

20

Posso usar <link>tags no corpo de uma página HTML? Tentei encontrar a resposta para essa pergunta, mas encontrei informações contraditórias.

Ao adicionar a marcação de microdados do Schema.org a uma página HTML, quero adicionar informações canônicas em uma tag de link como esta:

<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>

Eu peguei o código de exemplo acima no Schema.org . Segundo eles, este é o caminho a seguir para as pessoas que desejam adicionar uma referência canônica a um itemprop, mas não desejam colocar um hiperlink em seu site.

No entanto, W3 afirma claramente que as <link>tags devem ser colocadas apenas na seção head, tornando assim o exemplo Schema.org inválido.

Se eu quiser manter a marcação correta, que conselho devo seguir?

Edward Touw
fonte
Você está acessando o w3schools.com (que não tem nada a ver com o W3C), e não o w3.org .
Unor
Ah, sim, claro, você está certo. Removido o link para o W3schools. Obrigado.
Edward Touw 13/11
Aqui está o que acontece com o SEO: webmasters.googleblog.com/2013/04/…
Faiz

Respostas:

23

Os microdados estendem o HTML5 de uma maneira que linke metaelementos podem ser usados ​​no body, se eles contiverem um itempropatributo.

Se o itempropatributo estiver presente em linkou meta, eles serão conteúdo de fluxo e de frases. Os elementos linke metapodem ser usados ​​onde o conteúdo de frases é esperado se o itempropatributo estiver presente.

Atualmente, esta extensão também está incluída no HTML 5.1 Nightly (rascunho do editor) (consulte o linkelemento e o metaelemento ). Porém, quando a especificação Microdata se tornou uma Nota do W3C recentemente, teremos que ver o que acontece com essa referência.

O RDFa 1.1 estende o HTML5 de uma maneira que linke metaelementos podem ser usados ​​no body, se eles contiverem um propertỳatributo.

Se o @propertyatributo RDFa estiver presente nos elementos linkou meta, eles DEVEM ser vistos como conformes se usados ​​no bodydocumento. Mais especificamente, quando linkou metaelementos contêm o @propertyatributo RDFa e são usados ​​no bodydocumento HTML5, DEVEM ser considerados como conteúdo de fluxo.


Portanto, você não tem permissão para usar nenhum link elemento (por exemplo, <link href="" rel="" />) no body, mas somente aqueles com um itempropatributo (para Microdata) resp. um propertyatributo (para RDFa).

Assim, seu linkelemento pode ser usado no body:

<body>
<!-- … -->
  <link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
<!-- … -->
</body>
unor
fonte
Obrigado! Então, se entendi direito, posso usar a <link>tag no corpo desde que contenha um atributo itemprop? E enquanto o atributo itemprop estiver incluído, também posso incluir hrefconforme usado na minha pergunta original?
Edward Touw
@EdwardTouw: Sim; você DEVE dar o hrefatributo em qualquer caso. Portanto, desde que o linkelemento tenha um itempropatributo, você pode usá-lo no body. Então, não são mais metadados para todo o documento (como seria o caso de linkelementos comuns no head), mas um elemento "oculto" para Microdados.
unor 14/11/13
11

O W3Schools não define os padrões da indústria na codificação HTML. Eles são simplesmente um site de referência de terceiros que não é afiliado ao W3C de qualquer maneira. O W3Schools e outros sites geralmente estão errados ao usar tecnologias de codificação de ponta, como esquema e design responsivo . Ao usar um código relativamente novo, seu balcão único deve ser o W3C, conforme definido os padrões de conformidade e, talvez, o HTML5 Doctor, se você precisar de ajuda para entender o HTML5 por meio deles, não é oficial, mas é altamente respeitado.

Observando seu código, ele passa na validação do W3C sem nenhum problema com o elemento de link contido no diretório<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>

RESPOSTA CURTA: Sim, você pode usar<LINK>dentro,<body> </body>mas como Unor mencionou em sua resposta, deve incluir itemprop.

Simon Hayter
fonte
Observe que você está vinculando a um rascunho HTML5 a partir de 2009. No CR atual do HTML5, a definição relevante não está incluída.
Unor
0

O elemento de link pode ser adicionado ao corpo de um documento HTML se o itempropatributo estiver presente. Aqui está uma demonstração .

Aqui também está um exemplo de atributo itemprop do link .

Daniel
fonte
2
Se estes são links para o seu site, adicione um aviso como "Eu cobri isso no meu blog aqui ...".
dan