Bölüm 2

Generik HTML

Sayfa 2


HTML Belgelerinin Temel Yapısı

Belge Tipi Bildirimi

Her HTML belgesinin kodlanmasından önce, kodun ilk satırı olarak, belge tipi bildirimi (Document Type Definition=DTD) adı verilen bir bildirim kodlanır. Belge tipi bildirimi, isteğe bağlı bir bildirimdir. Eğer kullanıcı bir belge tipi bildiriminde bulunmazsa, belge çözümleyici kendi varsayılan bilgilerine göre belgeyi çözümler.

Belge tipi bildirimi, bir SGML yöntemidir. Bu bildirim, belgenin kodlanmasında kullanılan tüm işaretleme bilgilerini belge çözümleyiciye bildirir. HTML dili de, prensip olarak SGML dilinin DTD ile tanımlanmış bir alt türevi olduğundan her belgenin ilk satırına DTD bildirisi konulmalıdır. BUna rağmen HTMML 4.01 bu isteğe bağlı bırakılmıştır. Yine, belgenin yazımından sonra doğrulanmasında hedeflenen spesifikasyon düzeyini belirtmek için HER HTML BELGESİNE BİR DTD EKLENMESİ KUVVETLE SAĞLIK VERİLİR.

W3C'nin HTML 4.01 için W3C'nin belirlediği DTD, HTML 4.01 katı kuralcı (strict) DTD dir. Bu DTD aşağıda görülmektedir:

BuDTD de <!DOCTYPE HTML PUBLIC , belge tipi bildiriminin ismidir.

"-//W3C//DTD HTML 4.01 //EN" Kısmı FPI olarak ifade edilen "Formal Public Identifier" olarak adlandırılır. "http://www.w3.org/TR/strict.dtd" DTD nin bulunduğu URI dir.

Yukarıda verilmiş olan bu DTD, son ve kesin spesifikasyon niteliğindedir. HTML 4.01 bu sonuç DTD'si ile son halini almış kurallara bağlanmış ve W3C artık yeni bir HTML sürümü çıkartmayacağını bildirmiştir. Bir ölçüde bu, kaosa doğru bir gidişin durdurulması ve durumun dengelenmesidir. Genel kanı, W3C nin bu konuda yetkinlik ve hızla çalışarak görevini yaptığıdır.

HTML 4.01 sürümü bir öncekine göre kategorik ve filozofik bir değişiklik göstermektedir. Bu son sürüm adeta dilin yeniden tasarlanması anlamına gelmektedir. Yani basit bir yeni sürümden çok daha ileri değişiklikler getirmektedir. Bu durumda, belge çözümleyicilere ve yazarlara bir uyum süresi sağlamak amacı ile bir geçiş dönemi (transient) veya gevşek kuralcı (loose) DTD olarak adlandırılan bir DTD belirlenmişitir. Bu DTD aşağıda görülmektedir:

Geçiş dönemi DTDsi (veya Gevşek Kuralcı DTD), katı kuralcı DTD ye göre <applet> gibi, bazı devam ettirilmeyen elementleri ve özellikle görüntü sağlamak amacı ile kullanılmış olan ve artık devam ettirilmeyen nitelikleri içermektedir.

W3C tarafından yayınlanan HTML 4.01 sürümününün üçüncü ve son DTD'si, çerçeve (frame) içeren sayfaların kodlamalarda kullanılmak üzere oluşturulan, frameset DTD sidir. Bu DTD, aşağıda görülmektedir:

Frameset DTD si, prensip olarak geçici DTD ile aynıdır. Sadece, <body> elementinin yerine <frameset> elementi geçmektedir. Bu nedenle, çerçeve (frame) kullanılmayan monokok sayfalarda bu belge tipinin kullanımı gerekli değildir.

W3C kullanıcılara yardımcı olmak için geçerli olan tüm DTD leri içeren bir sayfa yayınlamıştır.

Hangi Belge Tipi Bildirimi Kullanılmalı ?

Bu konuda, tutulacak yol, hiç şüphesiz, katı kuralcı spesifikasyon olmalıdır. Bu spesifikasyonla çalışmak, herşeyden önce, belgelerin desteklenmesinde yaşanacak sorunları en aza indirecektir. Çünkü tüm belge çözümleyiciler, katı kuralcı spesifikasyona göre kodllanmış belgelerin gösteriminde yüksek performans gösterecek şekilde tasarlanmıştır.

Ayrıca, bugün HTML 4.01 ile tasarlanmış belgelerin yakın bir gelecekte XHTML platformuna yükseltilmeleri kesin gerekecek, bu yükseltme sırasında katı kuralcı spesifikasyona sıkı sıkıya uymuş olan ve element isimleri ile niteliklerini küçük harfle yazıp, nitelikleri tırnak içine almış yazarlar, belgelerini XHTML platformuna yükseltirken en az sorun yaşayacaklar arasında olacaktır.

Belgelerinde applet gibi katı kuralcı spesifikasyona girememiş devam ettrilmeyen elementler kullanımı gereken belgelerde, katı kuralcı spesifikasyon kullanılamaz. Bu tür belgelerde, geçici (gevşek) spesifikasyon kullanılması gerekir. Çerçeve tekniğinin kullanıldığı belgeler de, W3C tarafından aslında bir ilgisi yok iken geçiçi spesifikasyon kapsamına alınmıştır. Çerçeve içeren belgelerin kullanması gereken "Frameset DTD" çerçeve ile ilgili elementlerin eklenmiş olması dışında tamamen geçici spesifikasyon ile aynıdır.

Zorunlu olarak geçici spesifikasyon veya "Frameset DTD" kapsamında kodlanması gerken belgelerde de, kesinlikle katı kuralcı spesifikasyon tanımlarından ödün verilmemeli, geçici spesifikasyonun çekici olabilecek rahatlığına kapılmamalı, katı kuralcı spesifikasyon çerçevesi dışında kalan öğeler dışında, katı kuralcı spesifikasyon çerçevesinde kodlanabilecek diğer tüm öğeler, katı kuralcı spesifikasyona göre ve ileride XHTML'e yükseltilme gözönüne alınarak kodlanmalıdır. Katı kuralcı spesifikasyon çerçevesi dışında kalan öğelerde bile, en azından XHTML'e yükseltilme kaygısı gözetilerek kodlama yapılmalıdır. Belki bugünden kendimizi gereksiz gibi görülebilecek bir disiplin altına almış olabiliriz, fakat bu emeğin karşılığı ileride fazlası ile alınacaktır.

HTML Belgelerinin Temel Yapısı

HTML belgeleri, en üst düzeyide, tek bir <html> ana elementinden oluşur. <html> elementinin içerik modeli, belge ek bilgileri ve belgeden oluşacak şekilde şekillendirilmiştir. Belge ek bilgileri ve belge içeriği birbirinden kategorik olarak farklı olduğundan, ana <html> elementinin içeriği, iki eşdüzey element ile iki kısma ayrılmıştır. Bu alt kısımlardan ilki, belgeyi tanıtım görevini, üstlenen görüntülenmeyen elementleri içeren <head> (başlık) elementi, diğeri ise esas belge içeriğinin yapılandırılması ile oluşturulan görüntülendirilebilen elementleri kapsayan <body> (gövde) elementidir. Çerçeve (frames) içeren bir belgede <body> elementinin yerini <frameset> elementi alır. Bu durumda, çerçeve içermeyen bir HTML belgesinin ana yapısı :

şeklinde olacaktır.

HTML 4.01 spesifikasyonu, <html>, <head> ve <body> elementlerinin kullanımını isteğe bağlı bırakmıştır. Bu durumda, bir HTML belgesinin yazılımı için hiç bir ön tanım gereği kalmamıştır. İlk HTML belgesinin oluşturulması için, Notepad veya eşdeğeri ASCII metin dosyası oluşurabilen bir editörü açınız ve aşağıdaki satırları yazınız:

Bu satırı, b2s2uygulama1.htm adı ile saklayınız ve bu dosyayı, Internet Explorer gibi bir belge çözümleyicinin son sürümü ile açınız. Eğer belge çözümleyici ekranında yazdığınız metni görebiliyorsanız, sizi kutlarız,  ilk HTML belgenizi oluşturmuş durumdasınız. Burada görülmeyen <body> elementinin içeriği olan ve içeriği yazdığımız metin olan paragraf elementi <p> yi ileride inceleyeceğiz.

Bu belgede, yapısal elementlerden hiçbirisi bulunmasa bile, belgeyi değerlendiren belge çözümleyiciler, belgenin temel yapısal karakterini değerlendirerek görüntüsünü oluştururlar. Yani, yapısal elementleri ihmal ederek, yukarıdaki gibi belgeler oluşturulabilir ama, ihmal edilen elementler sadece yazım olarak ihmal edilmişlerdir ve görünmez de olsalar, aslında her zaman belge çözümleyicilerin başlangıç değerlerinde hesaba katılırlar.

W3C nin koşul saymamasına rağmen, uygulanan belge yapılanmasının kullanıcılarla paylaşılması açısından, tüm HTML belgelerinde DTD,<html>, <head> ve <body> kısımlarının bulunmasında yarar vardır. Şimdi, Notepad ile aşağıdaki satırları yazınız ve b2s2uygulama2.htm olarak kaydederek bir belge çözümleyici ile açınız.

Bu belgenin, belge çözümleyicilerdeki görüntüsü, bir önceki uygulama ile aynı olmasına karşın, son belgenin sistematik hiyerarşik yapılanması, kullanıcılar için açık olarak belirtilmiştir. Bu açık kodlama yöntemine her zaman uyulmalıdır.

Gerçersiz Kodların Görüntülenmesi

Bir Web belgesinin niteliği, DTD tanımından anlaşılır. DTD belgenin kodlanmasında ulaşılması gereken hedefi belirtir. Kodlama sonunda, hedeflenen DTD nin kurallarına uygun olmayan bir sayfa yaratılmışsa, bu sayfa "geçersiz"olarak nitelendirilir. Bir belgenin "geçersiz" olarak nitelendirilmesi sadece sayfanın başında belirtilen DTD ye bağlıdır. Örnek olarak içeriğinde <applet> elementi bulunan fakat DTD si katı kuralcı spesifikasyon olarak belitilmiş olan bir belge, "geçersiz" sayılacaktır. Aynı belge, DTD si geçici spesifikasyona çevrilirse, geçerli bir belge niteliği kazanabilir.

Belirtilmiş olduğu gibi, geçerli belgelerin görüntülenmesinde, yaşanacak sorunlar en az düzeye indirgenmiştir. Belge çözümleyiciler, geçerli belgeleri düzgün çözümlemeyi minimum standart olarak kabul ederler. Bu açıdan geçerli belgeler oluşturulması, kodlama hedefi olarak kabul edilmelidir.

Kod geçerliliğini inceleyarak kontrol etme olanağı bulunmakla beraber, içeriği fazla sayfaların kodlarının doğrulanmasını yapabilen ücretli kod doğrulayıcıları yanında, W3C online kod doğrulama hizmetinden yararalanılabilir. Ücretsiz olan bu servis, yazılmış olan kodların belirtilen DTD ye uygunluğunu denetleyerek, uygun olduğunu veya uygun olmadığını belirtir. Geçersiz olarak tanımlanan kodların da hata bulunan satırları belirtilerek, kodlayıcıya eksikliklerin düzeltilmesi olanağını verir.

Geçersiz kodlar, her an patlayabilecek bir bombaya benzer. Belge çözümleyicilerin yapıları hataya dayanıklıdır (fault tolerant) . Geçersiz kodları içeren sayfalar da belge çözümleyicilerde görüntülenebilirler. Buna rağmen, büyük bir olasılikla, geçersiz olan sayfaların görüntüleri istenildiği gibi olmayabilir. Bu açıdan geçerli kodların oluşturulması hedeflenmelidir. Bazen zorunlu olarak geçersiz kodlarla çalışıldığında, kodları geçersiz kılacak sorunların da en aza indirgenmesine çalışılmalıdır.

Geçici spesifikasyonlara odaklanmak da en az geçersiz kodlarla çalışmak kadar sorun yaratabilir. Geçici spesifikasyon olanak verdiği için kullanılan birçok nitelik veya devam ettirilmeyen elementlerin, belge çözümleyicilerin ilerideki sürümlerinde de destekleneceği garantili değildir. Ayrıca, geçici spesifikasyon kapsamında oluşturulmuş kodların, üst spesifikasyonlara yükseltilmesinde de büyük bir olasılıkla sorunlar yaşanacaktır.

Sonuç olarak katı kuralcı spesifikasyona göre geçerli, veya geçerli olmasına olanaklar ölçüsünde yaklaşılmış şekilde kodlama yapılmasına özen gösterilmeli, kodlamaların bir üst spesifikasyona yükseltilebilecek şekilde yapılmasına önem verilmelidir.

Bundan sonraki konumuz, HTML kodlama dilini oluşturan elementlerin birçoğunun sahip olabilecekleri ortak niteliklerin incelenmesi olacaktır.

 

 

Son Güncellenme Tarihi : 18.09.2005 17:56  

validate in W3C ! Valid HTML 4.01!