Bir HTML sayfasının genel yapısı aşağıdaki gibidir :
<html> <head> sayfa hakkında genel bilgiler buraya.... </head> <body> sayfanın görünecek olan kısmı buraya.... </body> </html>
Bir HTML sayfası Html etiketi içerisinde olması gerekir. Head bölümü web sayfasının tanımları , özellikleri ile ilgili bilgilerin verildiği bölümdür. Body bölümü ise tarayıcıda gözüken bölümdür.
HTML'de tag'ler (etiketler) hiyerarşik bir yapıdadır. Örneğin aşağıda etiketlerinin hiyerarşik yapısı gözükmektedir :
<tag1> <tag2> <tag3> </tag3> </tag2> </tag1>
Görüldüğü gibi hiyerarşinin en üstünde tag1 , altında tag2 ve onun altında da tag3 bulunmaktadır. Açılan bir tag kapanmadan üst tag kapatılamaz.
HTML'de white-space (boşluk , yeni satır , tab vb..) karakterleri normal durumlarda dikkate alınmamaktadır. Örneğin aşağıdaki gibi bir p etiketi kullanıldığında baştaki boşluk, tab ve yeni satır karakterleri temizlenerek ekranda gösterilir :
<html> <body> <p> aglasam sesimi duyar misiniz misralarim da? dokunabilir misin ellerinizle göz yaslarima? </p> </body> </html>
Ekranda tek bir satır olarak aglasam sesimi duyar misiniz misralarim da? dokunabilir misin ellerinizle göz yaslarima" şeklinde gözükecektir.
Eğer şiirin yukarıdaki koddaki gibi gözükmesi için <pre> etiketi kullanılmaktadır :
<html> <body> <pre> aglasam sesimi duyar misiniz misralarim da? dokunabilir misin ellerinizle göz yaslarima? </pre> </body> </html>
pre etiketi içindeki yazı biçimi aynen korunacak şekilde gösterilir.
HTML ve XHTML sürümlerinde dökümanın kullanacağı DTD hakkında bilgi vermek amacıyla aşağıdaki tiplerde tanım kullanılır :
HTML'de yorum yapmak için karakterleri kullanılır.
<html> <head> head> <body> body> html>
Yukarıda head bölümünde sadece bilgi vermek amacıyla yorum yapılmıştır. body içerisinde ise
HTML bir XML dili değildir. XML olması için gerekli well-formed kurallarına uymaz. HTML'in XML kurallarına uyan versiyonu XHTML olarak adlandırılır
<meta http-equiv="cache-control" content="max-age=0" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="pragma" content="no-cache" />