Posso usare i tag <link> nel corpo di un documento HTML?


20

Posso usare i <link>tag nel corpo di una pagina HTML? Ho cercato di trovare la risposta a questa domanda, ma ho trovato informazioni contraddittorie.

Quando si aggiunge il markup dei microdati Schema.org a una pagina HTML, voglio aggiungere informazioni canoniche in un tag di collegamento come questo:

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

Ho ottenuto il codice di esempio sopra da Schema.org . Secondo loro, questo è il modo di andare per le persone che vogliono aggiungere un riferimento canonico a un itemprop, ma non vogliono mettere un collegamento ipertestuale sul loro sito web.

W3 tuttavia afferma chiaramente che i <link>tag devono essere inseriti solo nella sezione head, rendendo così non valido l'esempio di Schema.org.

Se voglio attenermi al markup corretto, quale consiglio devo seguire?


Stai collegando a w3schools.com (che non ha nulla a che fare con il W3C), non con w3.org .
unor

Ah, sì certo, hai ragione. Rimosso il collegamento a W3schools. Grazie.
Edward Touw,

Ecco cosa succede al SEO: webmasters.googleblog.com/2013/04/…
Faiz

Risposte:


23

I microdati estendono HTML5 in modo che linked metaelementi possano essere utilizzati in body, se contengono un itempropattributo.

Se l' itempropattributo è presente su linko meta, sono contenuto di flusso e contenuto di frase. Gli elementi linke metapossono essere utilizzati laddove è previsto il contenuto della frase se l' itempropattributo è presente.

Questa estensione è attualmente inclusa anche in HTML 5.1 Nightly (Editor's Draft) (vedi linkelemento ed metaelemento ). Ma dal momento che la specifica Microdata è diventata una nota W3C di recente, dovremo vedere cosa succede con questo riferimento.

RDFa 1.1 estende HTML5 in un modo che linked metaelementi possono essere usati nel body, se contengono un propertỳattributo.

Se l' @propertyattributo RDFa è presente sugli elementi linko meta, DEVONO essere considerati conformi se utilizzati nel bodydocumento. Più specificamente, quando linko gli metaelementi contengono l' @propertyattributo RDFa e vengono utilizzati in bodyun documento HTML5, DEVONO essere considerati contenuti di flusso.


Così si sono non permesso usare qualsiasi link elemento (ad esempio, <link href="" rel="" />) in body, ma solo quelli con un itempropattributo (ad microdati) resp. un propertyattributo (per RDFa).

Quindi il tuo linkelemento può essere usato in body:

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

Grazie! Quindi, se ho capito bene, posso usare il <link>tag nel corpo purché contenga un attributo itemprop? E finché l'attributo itemprop è incluso, posso anche includere hrefcome usato nella mia domanda originale?
Edward Touw,

@EdwardTouw: Sì; DEVI dare l' hrefattributo in ogni caso. Quindi, purché l' linkelemento abbia un itempropattributo, puoi usarlo in body. Quindi non sono più metadati per l'intero documento (come sarebbe il caso degli linkelementi usuali in head), ma un elemento "nascosto" per Microdata.
unor

11

W3Schools non impone gli standard di settore sulla codifica HTML. Sono semplicemente un sito di riferimento di terze parti che non è affiliato al W3C in ogni caso. Le scuole W3 e altri siti sono spesso sbagliate quando si usano tecnologie di codifica all'avanguardia come Schema e Responsive design . Quando usi un codice abbastanza nuovo, il tuo sportello unico dovrebbe essere il W3C, come impostare gli standard di conformità, e forse HTML5 Doctor se hai bisogno di aiuto per capire HTML5 attraverso che non sono ufficiali ma altamente rispettati.

Guardando il tuo codice, passa la convalida W3C senza problemi con l'elemento link contenuto nel file<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>

RISPOSTA BREVE: Sì, è possibile utilizzare<LINK>all'interno<body> </body>ma come Unor ha menzionato nella sua risposta deve includere itemprop.


Nota che stai collegando a una bozza HTML5 del 2009. Nell'attuale HTML5 CR la definizione pertinente non è inclusa.
unor

0

L'elemento link può essere aggiunto al corpo di un documento HTML se l' itempropattributo è presente. Ecco una demo .

Inoltre, ecco un esempio di attributo link itemprop .


2
Se si tratta di collegamenti al tuo sito, aggiungi una dichiarazione di non responsabilità come "Ho coperto questo nel mio blog qui ...".
dan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.