Bölüm 2

Generik HTML

Sayfa 3


Ortak Temel Nitelikler

Ortak Temel Niteliklerin Tanıtılması

HTML programlama dilinde belgelerin yapılandırılması için HTML elementlerinden yararlanılır. HTML elementleri, kendilerine özgü, çeşitli nitelikler içerirler. Bu niteliklerden bazıları, birçok element için uygulanabilir. Bazı elementlerin ortak olarak sahip oldukları bu niteliklere ortak nitelikler adı verilir. HTML sayfalarında kullanılacak elementlerin nitelikleri DTD lerde belirtilmiştir. Burada, çalışmalarımızda temel alacağımız Katı Kuralcı HTML DTD sinde (Katı Kuralcı HTML DTD sini artık kısaca DTD olarak adlandıracağız) belirtilmiş tüm nitelikleri, Ek-5 de verilen DTD okuma ve değerlendirme yöntemlerini kullanarak inceleyeceğiz. Bu nedenle, bu kısma geçilmeden önce, Ek-5 in incelenmesinde büyük yarar olacaktır. DTD nin okunması, HTML öğrenimi için kuramsal temellerden en önemlilerinden biridir. Bir başka önemli başvuru kaynağı da, W3C HTML spesifikasyonu kitabı ve bu spesifikasyonun referans verdiği kaynaklardır. Ayrıca, çeşitli yazarların kendi deneyimlerini de içeren başvuru kitapları ve sonsuz bir kaynak olarak değerlendirilebilecek Web sitelerinin kaynak kodları, kuramsal bilgilerin elde edilmesi için son derece önemli kaynaklar arasında sayılabilir. Kod yazımı ile HTML öğrenimi, yazarları kuramsal açıdan güçlendirecek ve güçlü uygulamalar yaratmalarını sağlayacaktır.

HTML de birçok elementin niteliklerinin bazen bir kısmı, bazen de tamamı başka elementler ile aynıdır. Bu nedenle, DTD de bu nitelikler, SGML dilinin parametre varlıkları oluşturma tekniğinden yararlanılarak, Ortak Temel Nitelikler olarak bir kez tanıtılmış, bu şekilde ortak temel niteliklere sahip olacak her element için her seferinde aynı tanımların yapılması gereği kaldırılarak, DTD nin kısa tutulabilmesi olanağı sağlanmıştır. DTD de tanımlanmış olan Ortak Temel Nitelikler (Generic Attributes) aşağıda görülmektedir:

 

 

Yukarıda görülmekte olan DTD deki "Generic Attributes" tanımının , tek başına bir parametre varlığı değil, üç ayrı parametre varlığınının toplandığı ve yorum niteliğinde bir bilgi topluluğu olduğu görülmektedir. Ortak Temel Nitelikler kapsamında toplanan parametre varlıkları :

olarak adlandırılmışlardır. DTD de "Ortak Temel Nitelikler" kapsamında toplanmış olan niteliklerin tümünün kullanılması zorunlu olmayan niteliklerden oldukları, bu niteliklerin #IMPLIED (içsel) özelliğinden anlaşılmaktadır. İçsel nitelikler, belirtilmeleri zorunlu olmayan niteliklerdir. İçsel bilgiler sadece belge içinde açıkça ifade edilirse geçerlik kazanır. Bu değerlerin belge çözümleyicilerde herhangibir varsayılan değeri olamaz. Örnek olarak onkeypress niteliğine bir script atanmışsa, bir tuşa basılırsa bu script çalışır. Eğer bir script atanmamışsa, belge çözümleyici hiçbir şekilde başka bir bilgiye sahip olmadığından, tuşa basmanın herhangibir etkisi olmaz.

Bu kısımda Ortak Temel Nitelikler kapsamında toplanmış olan nitelikleri yakından inceleyerek, uygulamada kullanımları hakkında daha detaylı bilgiler elde etmeye çalışacağız. İlk olarak Çekirdek Nitelikler (Core Attributes) olarak adlandırılan nitelik gurubunu inceleyeceğiz.

Çekirdek Nitelikler (%coreattrs)

Yukarıda görülen çekirdek niteliklerinin DTD deki tanımı

     id="ID" [YD] (yazılışa duyarlı)  (kullanımı isteğe bağlı) (belge içeriğindeki eşsiz kimlik değeri)

     class= "CDATA_list"[YD] (yazılışa duyarlı)   (kullanımı isteğe bağlı)

                                                                      (boşluk karakteri ile ayrılmış sınıf değerleri listesi)

     style="Stil Programı" (CDATA)   (kullanımı isteğe bağlı)      (ilgili stil bilgisi)

     title="metin (text) " (Karakter Dizini= String) (CDATA)  (kullanımı isteğe bağlı)

                                                                                         (tanıtma amaçlı başlık bilgisi)

şeklindedir.

İlk sırada küçük harflerle verilen, id gibi ifadeler, niteliklerdir. Her element için niteliklerin tanımı DTD de belirtilir. Niteliklere verilecek değerler, eşit işaretinden sonra, "ID" örneğinde olduğu gibi büyük harflerle belirtilmişlerdir. Nitelik değerleri çok değişik kaynaklardan gelebilir. Nitelik değerlerinin kendilerine özgü sentaks (sözdizimi) ve semantik (içerik) kurallarına uygun olması gerekir. Nitelik değerleri hakkında, DTD de bazen yeterli bilgi verilmez fakat bu değerlerin belirlendiği kaynaklar belirtilir. Nitelik değerlerinin kullanılabilmesi için verilen verilen kaynakların iyi incelenmesi gerekir.

Nitelik değerlerininin yazılışa duyarlı olup olmadıkları DTD de değil, esas spesifikasyon kaynaklarında belirtilir. Yazılışa duyarlı nitelik değerlerinin, küçük harfler ile yazılan değerleri ile büyük harflerle yazılan değerleri farklı olarak kabul edilerler. Örnek olarak id="sessiz" ile id="Sessiz" değerleri, farklı kimlikleri belirtir.

Çekirdek niteliklerini oluşturan nitelikler, aşağıda daha yakından incelenmiştir.

id="ID" [YD]:

DTD deki tanıma bakıldığında, id niteliğinin, değerinin "ID" olacağı, bu nitelik değerinin yazılışa duyarlı olduğu ve bir belgede biribirinin aynı iki "ID" değeri verilmeyeceği anlaşılır.

"ID" nitelik değeri hakkında bilgi, DTD de değil, HTML 4.01 spesifikasyonunun SGML basic types kısmında belirtilmiştir. Ek-3 sayfa1 de ID değerleri hakkında açıklayıcı bilgi verilmiştir.

id Niteliği, bu niteliğe sahip olabileceği DTD de belirtilmiş olan her HTML elementi için bir kimlik niteliğidir. id Niteliğinin işlevi HTML 4.01 ile önem kazanmıştır. Daha önceki spesifikasyonlarda name niteliği de kimlik niteliği olarak kullnılmıştır. Bu açıdan, eğer eski alışkanlıklara devam edilerek name niteliği de kullanılmışsa, onun değeri de aynı sayfa içinde id ile verilmiş olsun name ile verilmiş olsun farketmez başka bir kimlik değeri ile aynı olamaz. Bir HTML elementinin id si onun bir tür barkodu veya DNA sı gibidir. Stil ve script programları, bir HTML elementine onun id sinden yararlanarak erişirler. Elementlerin id nitelikleri, bir HTML sayfası için atlama noktası (bookmark) oluşturma işlevini de görebilirler. Bu nedenle, her id niteliğine sahip olabilecek element için kullanılacak id niteliğine, sözdizimi ID şablonuna uygun olmak ve EK-3 sayfa 1 de belirtilen ek kısıtlamalara uymak kaydı ile, her tür değer verilebilir, fakat bir kez kullanılmış olan bir kimlik değeri aynı sayfada bir daha kullanılmaz. Aksi halde belgenin çözümlenmesi işlemi sırasında (runtime) hangi elemente atlanılacağı belirsiz olur. id Nitelikleri yazılıma duyarlı olduklarından örnek olarak "liste" ve "Liste" ; kimlik değerleri birbirinden farklı sayılır. Bu durum, her HTML sayfasında, kimlik nitelikleri eşsiz (unique) değerler olmalıdır şeklindeki kural ile ifade edilir. Belgede kimlik değerlerinin eşsiz olması ile, yer belirlemede koordinat şaşması engellenmiş olacaktır.

id Niteliğinin en önemli etkisi, belge içinde erişim noktaları (bookmark)  oluşturmasıdır. Bu etki, isimlendirilmiş çapa elementinin (named anchor) etkisi ile eşdeğerdir. id niteliği kullanımı ile isimlendirilmiş çapa kullanımının etkisi aynı olduğundan, isimlendirilmiş çapa kullanımının artık bir özel işlevi kalmamıştır ve kullanımı da gitgide azalmaktadır.

Elementlerin kimlik değerleri belge içinde birer potansiyel erişim noktası oluştururlar ve bu erişim noktalarına, fragment URI lerin kullanımı ile erişilebilir. Bu yöntemle, özellikle büyük belgelerde çok işe yarabilen, belgenin çeşitli kısımlarına hızlı bir erişim (bookmark) olanağı elde edilir. Örnek olarak bahceilaclari.htm dosyasında,

şeklinde bir alt başlık varsa, id niteliği mantar olarak belirlenmiş nokta aynı zamanda bir erişim noktası olarak da işlev görebilir ve bu noktaya, aşağıda görüldüğü gibi, bir fragment URI yardımı ile ulaşılabilir.

Bu yöntemle, belgenin diğer kısımları ile ilgilenilmeden, belirli bir noktaya hızlı erişim yapılabilir.

Bir HTML sayfasında id niteliği, genel olarak,:

görev yapar.

class= "CDATA_list"[YD] (yazılışa duyarlı) (Küçük/Büyük Harf Yazılışına Duyarlı)

class (sınıf) Niteliği, yazara sayfa içindeki çeşitli, elementlere, özgürce seçilebilecek sınıf niteliklerinin atanmasına olanak sağlar. CSS stil sayfaları ile belirli bir sınıfa ait elementlerin görüntüleri düzenlenebilir. Bir element birden fazla sınıfa girebilir (çok sınıflılık) ve birden fazla element aynı sınıfta olabilir. Bazı belge çözümleyiciler, çok sınıflılığı desteklemezler ve çok sınıflılık öngören tanımları gözardı ederler. Bu yüzden, çok sınıflılık içeren kodlar, belge çözümleyicilerde daha geniş olarak denenmelidir. Çok sınıflı elementlerde sınıf niteliği, boşluk ile ayrılan sınıf adları listesinden oluşur. Örnek olarak çok sınıflı bir bölüm tanımı:

şeklinde gerçekleşir. Özetle class (sınıf) Niteliği,

görev yapar.

style="CDATA" [yn] (yazılışa nötral) (Küçük/Büyük Harf Yazılışı Farketmez) (stil sayfası verisi)

DTD de style niteliğinin değeri olarak, tanımı aşağıda görülen %Stylesheet parametre varlığı gösterilmiştir.

 

 

Bu tanım, style niteliğinin değerinin CDATA şablonuna uygun bir stil sayfası verisi olacağını belirtir. Stil sayfası verileri, kendi spesifikasyonları ile belirlenir.

style Niteliği, bir element için satıriçi (inline) olarak,  stil kurallarının belirlenmesine olanak sağlar. style Niteliği kullanımından önce, belgenin <head> kısmında, bir meta-bilgi olarak, stil türü belirtilmelidir. HTML sayfalarında uygulanan tek stil dili, Katlı Stil Sayfaları (Cascade Style Sheets) (kısaca CSS) stil yazımı dilidir.

W3C, HTML 4.01 katı kuralcı spesifikasyonunda, görüntü sağlayacak elementlere yer vermemiş ve görüntüsel öğelerin, Katlı Stil Sayfaları (CSS) ile yapılmasını öngörmüş ve olanaklar elverdikçe katı kuralcı spesifikasyonun uygulanmasını tavsiye etmiştir. Bu dersleri takip edenlerin de aynı yetenekleri kazanmaları hedeflenmektedir. En çok kullanılan belge çözümleyicilerin en son sürümleri, en son sürüm olan, CSS Düzey 3 (CSS Level 3) (CSS 3 ) spesifikasyonunu kısmen destekleyebilmektedir ve bu derslerde de CSS 3 ye ağırlık verilecektir. Stil sayfaları yazılımında, olanaklar ölçüsünde, dış bir stil sayfası dosyası oluşturulması tercih edilmelidir. Bu şekilde, tek bir dış dosya ile tüm Web tasarımı kontrol altında tutulabilecektir. Eğer tek bir dış stil sayfası dosyası ile çalışılamazsa, her sayfanın başında gömülü stil tanımları yapılabilir. Tercih edilecek en son durum, satıriçi (inline) stil tanımları olabilir. Satıriçi stil tanımlarında,  her element için ayrı stil tanımlanması, belge içinde görüntülenme kontrolünün ve tekdüzeliğin sakınımında güçlükler yaratacağı kabul edilmektedir. Bu nedenle zorunlu haller dışında satıriçi stil tanımları uygulanmamalıdır. Stil sayfalarının kullanımının, belgenin içeriği ve görüntüsünün birbirinden ayrılmasının daha etkin olarak gerçekleşmesini sağladığı, bu yöntemin kullanılması ile yazılımı daha basit ve bakımı daha kolay belgeler oluşturulabildiği kabul edilmektedir.

title="metin"[YD]

Yukarıda görülen DTD de title niteliğinin değeri olarak, tanımı aşağıda görülen %text parametre varlığı gösterilmiştir.

 

 

Burada da DTD de nitelik değerinin içeriği değil, yazımında kullanılacak kalıbın açıklandığı belgenin bulunabileceği yer belirtilmiştir. title Nitelik değeri için bilgiler, EK-3 sayfa 1 de verilmiştir. title Niteliğinin değeri olarak kullanılacak metin, konvansiyonel olarak insanlar için anlamı olan yazım parçalarıdır.

title (başlık) Niteliği genellikle, bazı belge çözümleyiciler için "tooltips" adı verilen ve fare üzerinde iken sarı zemin üzerinde niteliğin yazıldığı bir açıklama oluşturmak için kullanılır. Bu özellik özellikle, <link>, < img> ve < object> elementleri için çok yararlıdır. Ayrıca, <abbr> (abbreviation=kısaltma) ve <acronym> (acronym=bir sözcüğün başka sözcüklerin ilk harflerinden oluşması) (Grekçe acros = en dış, en üst, çıkıntı onoma= isim) elementlerinde de uzun özellik isminin belirtilmesinde yararlı olur. Örnek :

 

 

Uluslararasılaştırma Nitelikleri (i18n)

HTML 4.01 spesifikasyonunda, uluslarasılaştırma nitelikleri, bazı elementlerin dil ve yazı yönü karakteristiklerinin belge çözümleyicilere bildirilmesi amacına yönelik niteliklerdir. Uluslarasılaştırma nitelikleri, veya W3C nin kısaltma şekli ile i18n tanımının DTD de belirtilmesi yukarıda verilmiştir.

DTD de, uluslarasılaştırma nitelikleri, veya W3C nin kısaltma şekli ile i18n sözdizimi:

Uluslarasılaştırma Nitelikleri

lang="%LanguageCode;" (isteğe bağlı)  ( Dil Kodu)

dir="ltr|rtl" (isteğe bağlı)   (yazılacak metnin yazma yönü)

şeklinde ifade edilmiştir.

lang Niteliği :

DTD deki tanımına göre, lang niteliği değerinin, %LanguageCode parametre varlığı ile belirtilen tanıma uygun bir değer olması gerekmektedir. %LanguageCode Parametre varlığı  DTD de,

 

 

şeklinde tanımlanmıştır. Bu tanımda, sadece dil kodlarının yazılmasında kullanılacak şablonun "Name" SGML kalıbına uyması gerektiği açık olarak belirtilmiş, fakat içeriğin [RFC1766] ( Internet Engineering Task Force, 1766 sayılı Request For Comment yayınından bulunacağı belirtilmiştir. Bu durumda, geçerli dil kodu değerleri, ancak belirtilen kaynak incelenerek bulunabilecektir. Bu kaynak ve bu kaynakta belitilen diğer referanslarda verilen bilgiler, Ek-3 Sayfa 1 de açıklanmıştır. Bu bilgiler, aşağıda kısa olarak özetlenmiştir.

Dil kodları, birincil dil kodları ve onlara bir tire işareti ile bağlanan varsa ikinci dil kodlarından oluşmaktadır. Birincil dil kodları, 28/4/2002 de sonuç belgesi halini almış olan [ISO 639-1-2002] da tanımlanmış olan dil kodları, ikincil dil kodları [ISO3166] da belirtilen ülke kodları şeklinde anlaşılmalıdır. [ISO 639-1-2002] deki en son şeklini almış dil listesi Ek-3 Sayfa 4 de, [ISO3166] da belirtilen dil kodları, Ek-3 Sayfa 5 de, henüz geliştirilme aşamasında olan [ISO639-2] üç karakterli dil kodları, Ek-3 Sayfa 6 de verilmiştir.  IANA tarafından onaylanmış olan özel dil kodlarının listesi Ek-3 Sayfa 7 de verilmiştir.

Belge çözümleyicilerinin ikincil dil kodlarını değerlendiremedikleri durumlarda, birincil dil kodlarını değerlendirmeye çalışacakları öngörülmüştür. Belge çözümleyicileri tanımadıkları dilin bildirimini gözönüne almamakta ve o anda değerlendirmekte oldukları dil değerlerini devam ettirmektedirler. Aslında, bugün için hiçbir belge çözümleyici, hiçbir dil niteliğini değerlendirememektedir. Belgelerin varsayılan dil değerleri, pratikte belge çözümleyicilerin varsayılan dil değeri olan İngilizce olmaktadır. Fakat bunun da belgelerin istenilen dilde yazılmasına hiçbie negatif etkisi yoktur. Şu anda belgelerin dil değerlendirmesi yapılmamamaktadır.

Belgenin temel dilinin belirtilmesi ise, <html> elementinin lang niteliğinin belirlenmesi ile yapılabilir ve bu şekilde belgede geçerli olacak dil özelliğinin, kalıtım yolu ile tüm belge içeriğine yayılması sağlanır. Belgenin temel dilinin belirtilmesi, <head> bölümünde bir meta-bilgi belirtilmesi yöntemi ile de yapılabilir. Bu konuda ilgili bölümlerde örnekler verilmiştir.

lang Niteliği, kalıtım (tevarüs) (inheritance) ile elde edilebilen bir niteliktir. Dil niteliğinin kalıtımla edinilmesinde öncelik sırası aşağıdaki gibidir:

Şu an için, dil niteliği bildiriminin belgenin değerlendirilmesinde bir etkisi olmamaktadır. Yine de, geleceğe dönük bir önlem olarak, belgelerde dil tanımı yapılması desteklenmektedir. Bu durumda, klasik düşünce ile Türkçe dil kodu için (lang="tr") şeklinde bir [ISO 632-1] tipi bir dil bildirimi yapılabileceği gibi, daha avant-garde bir davranış ile, [ISO 632-2] tipinde, (lang="tur") şeklinde bir dil bildirimi de yapılabilir. Şimdilik hiç bir dil bildirimi de yapılmayabilir. Aslında şu anda belge çözümleyiciler dil kodlarını değerlendiremediklerinden her türlü dil bildiriminin, ne bir faydası, ne de bir zararı görülmeyecektir. Önemli olan belge yazımında kullanılan karakter kodlaması encoding değerleridir.

dir Niteliği :

dir (direction=yön) alfabenin okuma yönünü belirtir. Bu nitelik, büyük/küçük harf yazımına duyarlı değildir. HTML 4.01 Kesin Spesifikasyonu tarafından kabul edilmiş olan Evrensel Karakter Seti UCS, karakterlerin yazımının sağdan sola veya soldan olabileceğini öngörür ve yazım yönü değişik olan karakterlerin yazımının sağlanabilmesi için Çift Yönlü Yazım Algoritmasını (Bi-Directional Algorithm) devreye sokar. Arap ve İbrani alfabeleri sağdan sola (right to left=rtl) Latin ve Grek temelli alfabeler, soldan sağa (left to right=ltr) yönüne doğru okunur. Çok karmaşık olmayan durumlarda, belge çözümleyiciler UNICODE benzeri gelişmiş bir algoritma ile yazım yönünü belirler ve ayrı bir dir niteliği bildirimi gerekmeyebilir. Yazım yönü belli olmayan, çok dilli, iç içe geçmiş metin veya tabloların başlanıç yönünü belirtirmek için ise dir niteliğinden yararlanılması gerekli olur. Varsayılan değer, ltr olduğundan soldan sağa okunan alfabeli dilleri içeren belgelerde, bu niteliğin açık (explicit) olarak belirtilmesi gerekli değildir.

Bir elementin dir niteliğinin kapsamı,  sadece bu element ve içerdiği elementler ile sınırlıdır. Yani dir niteliği bir alt elemente kalıtımla geçebilir. Bir elementin kalıtımla bir niteliği edinmesi ancak o niteliğin, element ile birlikte açıkça tanımlanması ile geçersiz kılınabilir.

Script Yazılabilecek Olaylar

DTD de belitilen script yazılabilecek olaylar, yukarıda görülmektedir. Burada belirtilen %Script parametre varlığı,

 

 

şeklinde tanımlanmıştır. Bu tanımdan, sadece script niteliğinin değeri olan %Script parametre varlığının yazılım şablonu üzerinde bilgi bulunabilecek belgenin referansı belirtilmektedir. Script niteliğinin CDATA şablonuna uygun değeri, bir script programıdır.

Birçok element aynı niteliklerin belirli olaylara tepki vermesi ile özel bilgisayar programlarını çalıştırır. Çoğunlukla fare ve klavye olayları ile harekete geçen programlar, script " script" ( sözcük temeli Latince yazma sözcüğünden kaynaklanır) adı verilen bu programlar, Live Script (JavaScript'in ilk adı) ile başlamış, VBScript ile devam etmiş, Perl, Python, ASP, PHP gibi artan sayıda programlama dili scripting için kullanılır olmuştur. script programları, "kullanıcı tarafı" ve "sunucu tarafı" olmak üzere, iki ayrı amaca yönelik olarak yazılırlar. Sunucu tarafına yönelik scriptler, sunucu ile kullanıcı bilgisayarları arasında bir tür özel arabirim "Common Gateway Interface" yaratırlar ve kullanıcıdan gelen bilgiler, bu arabirim aracığı ile sunucuya aktarılarak değerlendilir. Burada, önemi yadsınamayacak bir iletişim etkileşimi ile karşı karşıya olduğumuz gerçektir. Bu iletişim olanağı ile, elektronik ticaret, elektronik haberleşme, elektronik devlet gibi devrim yaratan olanaklar, insanlığın önüne açılmıştır.

Kullanıcı tarafı script programları, Dinamik HTML (DHTML)olarak adlandırılan yeni bir HTML konsepti yaratmıştır. Bu yöntem, sayfaların statik olarak okunması yerine, kullanıcıdan gelen etkilere yanıt vermesini sağlayan bir yöntemdir. Dinamik HTML, statik HTML den bir ileri aşama olarak kabul edilmektedir. Statik HTML de bundan sonraki aşama, daha iyi yapılandırma sağlayacak XHTML dili olacaktır. Dinamik yöntemlerde script dillerinin ve veri temelleri ile daha iyi integrasyon sağlayabilecek XML dilinin gelişmeye devam etmesi beklenmektedir.

Etkileşim sağlanabilecek niteliklerin geliştirilmesi, HTML ortamını tam anlamı ile bir görsel programlama ortamı haline getirmiştir. Üstelik şu anda çoğu scripting dilleri ve belge çözümleyiciler ücretsizdir. Bu olanaklardan yararlanmak gerekir.

HTML 4.01 katı kuralcı DTD sinin belirttiği script yazılabilecek olan nitelikler aşağıda götülebilir:

 

HTML 4.01 katı kuralcı DTD sinde belirtilen diğer içsel olaylar :

 

Burada belirtilen script yazılabilecek olaylar, sadece HTML 4.01 katı kuralcı DTD sinin belirtiği temel ortak olay nitelikleri ile sınırlıdır. Çoğu belge çözümleyiciler, standart dışı daha başka script yazılabilecek olay niteliklerini de desteklemektedirler. Fakat, amacımız tüm platformlarda desteklenen ve güncel kodlar üretmek olduğundan, standart dışı olay nitelikleri incelenmeyecektir.

 

Son Güncellenme Tarihi : 18.09.2005 19:06