HTML'deki meta ve bağlantı etiketlerini kapatmanız mı gerekiyor?


133

HTML head bölümünde meta ve link etiketlerini asla kapatmayan birinin HTML'sini okuyordum. Kod iyi çalıştı; bu etiketleri kapatmak isteğe bağlı mı?

Bir etiket kapatılmazsa hatalı biçimlendirileceğini düşündüm.

Yanıtlar:


167

Bir etiket her zaman etiket kapatma sembolü ile kapatılmalıdır >(eğer XHTML olmayan HTML'de normalde geçerli olan ancak tarayıcılarda hiçbir zaman uygulanmamış olan belirli SGML kurallarını göz ardı edersek).

Sormak istediğiniz, öğelerin bitiş etiketleriyle kapatılması gerekip gerekmediğidir . Cevap, XHTML olmayan HTML (HTML serileştirmede HTML5 dahil), metave linköğeleri için herhangi bir bitiş etiketine gerek olmaması veya buna izin verilmemesidir . Ancak uygulamada, tarayıcılar sadece açık onlar için bitiş etiketleri yanı sıra kargo-kült görmezden /önce >bunları kullanırsanız,. HTML5, resmi olarak /HTML serileştirmesine de izin vererek bu izin verilebilirliği bir kural haline getirir .

XHTML'de XML kuralları geçerlidir, bu nedenle istisnasız her öğenin hem bir başlangıç ​​etiketi hem de bir bitiş etiketi olması gerekir, ancak öğe içeriği boşsa, örneğin <meta name="foo" content="bar"/>kısaltılmışsa her iki rol için de aynı etiket kullanılabilir <meta name="foo" content="bar"></meta>. XML (XHTML) içerik türüne sahip bir belgeyi uygun bir tarayıcıya sunarken bunu ihlal ederseniz, belgeniz hiç görüntülenmez; bunun yerine bir hata mesajı gösterilir.

HTML içerik türüne ( Content-Type: text/html) sahip bir XHTML sunucusu kullanırken , XHTML belgeleri neredeyse her zaman web'de olduğundan, tarayıcılar aslında XHTML olmayan HTML kurallarını uygular.

Özetlemek:

  • normalde, sadece <meta ...>hayır ile kullanın/
  • XHTML'yi gerçekten XHTML ayrıştırmanın uygulandığı bir bağlamda kullanıyorsanız, XML kurallarına göre oynayın (ve bunları bildiğinizden emin olun)
  • patronunuz size yazmanızı söylerse, yazın <meta ... />; yararlı değildir, ancak zararı yoktur (örneğin, HTML 4.01 belge türüne göre doğrulamaya çalışmanız dışında).

3
/> kullanımı, google bot'un meta robot etiketini tanımadığı bir soruna neden oldu. garip!!!
DevZer0

13
Bu bağlamda "kargo kültü" terimini uygunsuz buluyorum. Bazı insanlar, XHTML'nin galip gelmediğini bastırdıkları için bu unsurları kapatırlar.
Marcus

6
Bilgiçlik uyarısı! "Kargo kültü" normal uygulamada tirelenmez, ancak yalnızca tüm ifadeyi başka bir şeye sıfat olarak kullanırken (yani, "kargo kültü programlama", " /önce kargo kültü >"). İnterneti daha fazla kafa karışıklığı ile karıştırmamak için açıklığa kavuşturacağımı düşündüm. </pedant_alert>:)
Aaron Wallentine

1
@ DevZer0 - eğik çizginin neden olduğundan emin misiniz? Google'ın bu tür şeylerde esnek olmasını beklerdim.
Simon East

3
HTML'nizi XHTML kurallarıyla tutarlı hale getirmek, / before> öğesini eklemek için bir neden değil mi?
Kyle Delaney

28

Doküman türüne bağlıdır. HTML5'in kapanışa ihtiyacı yoktur. XHTML yapar.

HTML5'te, boşluk öğeleri (içeriği olmayan öğeler) kendiliğinden kapandıkları için kapanışa ihtiyaç duymazlar. Ama kapatırsan yine de geçerlidir ..

Bununla ilgili daha fazlasını buradan okuyun: void-elements


4
HTML5'in iki serileştirmesi vardır ve bunlardan biri (XHTML serileştirmesi) bitiş etiketlerini zorunlu kılar.
Jukka K. Korpela
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.