Czy mogę używać znaczników <link> w treści dokumentu HTML?

20

Czy mogę używać <link>tagów w treści strony HTML? Próbowałem znaleźć odpowiedź na to pytanie, ale znalazłem sprzeczne informacje.

Podczas dodawania znacznika mikrodanych Schema.org do strony HTML chcę dodać informacje kanoniczne w tagu łącza, takim jak ten:

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

Powyższy przykładowy kod otrzymałem od Schema.org . Według nich jest to droga dla osób, które chcą dodać kanoniczne odniesienie do itemprop, ale nie chcą umieszczać hiperłącza na swojej stronie internetowej.

W3 jednak wyraźnie stwierdza, że <link>tagi powinny być umieszczane tylko w sekcji head, co powoduje, że przykład Schema.org jest nieprawidłowy.

Jeśli chcę trzymać się poprawnego znaczników, jakiej rady powinienem przestrzegać?

Edward Touw
źródło
Linkujesz do w3schools.com (który nie ma nic wspólnego z W3C), a nie w3.org .
unor
Ach, tak, oczywiście, masz rację. Usunięto link do W3schools. Dzięki.
Edward Touw
Oto, co dzieje się z SEO: webmasters.googleblog.com/2013/04/…
Faiz

Odpowiedzi:

23

Mikrodane rozciąga HTML5 w taki sposób, że linki metaelementy mogą być wykorzystane w body, jeśli zawierają one itempropatrybutu.

Jeśli itempropatrybut jest obecny w linklub meta, oznacza to zawartość przepływu i treść frazowania. Elementy linki metamogą być używane tam, gdzie oczekiwana jest treść frazowania, jeśli itempropatrybut jest obecny.

To rozszerzenie jest obecnie również zawarte w HTML 5.1 Nightly (wersja redakcyjna) (patrz linkelement i metaelement ). Ale ponieważ specyfikacja Microdata stała się ostatnio notatką W3C , będziemy musieli zobaczyć, co się stanie z tym odniesieniem.

RDFa 1,1 rozciąga HTML5 w taki sposób, że linki metaelementy mogą być wykorzystane w body, jeśli zawierają one propertỳatrybutu.

Jeśli @propertyatrybut RDFa występuje w elementach linklub meta, MUSI być postrzegany jako zgodny, jeśli zostanie użyty w bodydokumencie. Mówiąc dokładniej, gdy elementy linklub metazawierają @propertyatrybut RDFa i są używane w bodydokumencie HTML5, MUSZĄ być traktowane jako treść przepływu.


Dlatego nie wolno używać żadnego link elementu (np. <link href="" rel="" />) W body, ale tylko tych z itempropatrybutem (dla Mikrodanych) lub. propertycechą (na RDFa).

W ten sposób twój linkelement może być użyty w body:

<body>
<!-- … -->
  <link itemprop="url" href="http://en.wikipedia.org/wiki/The_Catcher_in_the_Rye" />
<!-- … -->
</body>
unor
źródło
Dzięki! Więc jeśli dobrze rozumiem, mogę używać <link>znacznika w treści, o ile zawiera on atrybut itemprop? I tak długo, jak dołączony jest atrybut itemprop, mogę również uwzględnić, hrefjak w moim pierwotnym pytaniu?
Edward Touw
@EdwardTouw: Tak; hrefw każdym przypadku MUSISZ podać ten atrybut. Tak długo, jak linkelement ma itempropatrybut, możesz go używać w body. Wtedy nie są już metadanymi dla całego dokumentu (jak w przypadku zwykłych linkelementów w head), ale „ukrytym” elementem dla mikrodanych.
unor
11

W3Schools nie ustanawia standardów branżowych w zakresie kodowania HTML. Są po prostu zewnętrzną witryną referencyjną, która i tak nie jest powiązana z W3C . W3Schools i inne strony często mylą się, gdy używają najnowocześniejszych technologii kodowania, takich jak Schema i Responsive design . Jeśli używasz całkiem nowego kodu, Twoim punktem kompleksowej obsługi powinien być W3C, który wyznacza standardy zgodności, a być może HTML5 Doctor, jeśli potrzebujesz pomocy w zrozumieniu HTML5, nie są one oficjalne, ale bardzo szanowane.

Patrząc na twój kod, przechodzi walidację W3C bez żadnych problemów z elementem łącza zawartym w<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>

KRÓTKA ODPOWIEDŹ: Tak, możesz użyć<LINK>w<body> </body>środku, ale jak wspomniał Unor w swojej odpowiedzi, musi zawierać itemprop.

Simon Hayter
źródło
Zauważ, że łączysz się z wersją roboczą HTML5 z 2009 roku. W obecnej wersji HTML5 CR odpowiednia definicja nie jest uwzględniona.
unor
0

Element link można dodać do treści dokumentu HTML, jeśli itempropatrybut jest obecny. Oto demo .

Oto także przykład atrybutu link itemprop .

Daniel
źródło
2
Jeśli są to linki do Twojej witryny, dodaj zastrzeżenie, takie jak „Omówiłem to na moim blogu tutaj ...”.
dan