Bölüm 3

Blokdüzey Elementler

sayfa 1


<html>, <head> ve <base> Elementleri

 

En Dış Kabuk : <html> Elementi

 

HTML 4.01 DTD sinde <html> elementinin tanımı aşağıda görüldüğü gibi yapılmıştır :

 

 

Bu tanımın incelenmesinde, <html> elementinin başlangıç ve bitiş imlerinin belirtilmesinin zorunlu olmadığı, içerik modelinin, önce <head>, sonra <body> elementlerinden oluşacağı görülür. Bu içerik modelinde, <html> elementinin, bir HTML sayfasındaki en dış kabukta bulunan en üst düzey element olması gerektiği ve sayfada bulunan diğer tüm elementlerin, daha alt düzeylerde katmanlar halinde yerleşmiş olarak, <html> elementinin içeriğini oluşturmaları gerektiği anlaşılmaktadır. <html> Elementinin içeriğinin kapsamı tüm Web sayfasıdır. Bu hiyerarşik düzen, ilk bakışta kolay anlaşılmaz, fakat DTD de önce <head>, sonra <body> elemenlerinin içerikleri, en sonra DTD genel olarak incelendiğinde, durum açıkça görülür.

<html> Elementinin tanımı, HTML 4.01katı (strict) DTD si ile geçiş dönemi (transient) DTD sinde aynıdır. HTML 4.01 çerçeve içeren (frameset) DTD sinde, <html> elementinin içerik modelinde, <body> elementinin yerine <frameset> elementi geçer. Geçici ve çerçeve içeren DTD ler arasındaki tek fark da budur.

Bu bilgilerle, HTML 4.01 katı ve geçici DTD ler gözönüne alınırsa, <html> elementinin sözdizimi (sentaks) aşağıdaki gibidir :

<html          (Başlangıç imi : İsteğe bağlı)

Uluslararasılaştırma Nitelikleri (lang ve dir)>

İçerebileceği Elementler :HTML 4.01 katı ve geçici DTD altında, <head> elementini izleyen <body> elementi, frameset DTD altında, <head> elementini izleyen <frameset> elementi (belgenin içerdiği tüm elementler, <html> elementinin alt düzey elementleridir).

</html>      (Bitiş imi : İsteğe bağlı)

şeklindedir.

İçerebilecek Elementler : Yok  (<html> en dış kabuktur).

<html> Elementinin Nitelikleri

Uluslararasılaştırma Nitelikleri :

lang = "DilKodu"[ YZ] ve dir ="ltr | rtl"  [YZ]   (yazılışa duyarsız) (küçük/büyük harfle yazılması farketmiyor)

<html> Elementinin nitelikleri, DTD deki nitelik listesinde tanımlandığı gibi sadece uluslararasılaştırma nitelikleri olarak adlandırılan langve dir nitelikleridir. Uluslarasılaştırma nitelikleri daha önceden incelenmiştir ve burada sadece kısa bir hatırlatma yapılacaktır. Özet olarak:

<html> Elementinin Niteliklerinin Kalıtımla Yayılması

Hiyerarşide en üst düzeydeki element olduğu için, <html> elementinin nitelikleri, tüm belge elementleri tarafından kalıtım veya başka bir söyleyiş ile tevarüs (miras yolu ile edinme) (inheritance) ile kazanılır. Burada doğru terim tevarüs olmalıdır, fakat bu sözcüğün artık kullanımda olmaması nedeni ile, aslında ırsiyet (hérédité) anlamına gelen kalıtım sözcüğü kullanılmıştır. <html> Elementinin niteliklerinin değerleri, tüm belge boyunca yayılım yapar ve tüm belgenin varsayılan değerlerini oluşturur. Bu konuda ilginç bir uygulama, belgenin dilinin <html lang="tr"> şeklinde, belgenin en dış kabuğunda belirtilerek kalıtımla tüm belgenin kapsatılmasıdır (bu konuda bir örnek aşağıda belirtilmiştir). Günümüz için henüz değerlendirilmeyen dil niteliğinin belirtilmesi, gelecekte belge için bir avantaj olabilir.

<html> Elementinin Uygulanması

<html> Elementinin başlangıç ve bitiş imleri DTD de isteğe bağlı bırakılmıştır. Buna rağmen, bu imlerin kullanılması kuvvetle sağlık verilir. Kullanımları isteğe bırakılmış tüm imlerin kullanımında fayda bulunmaktadır. Bu şekilde görsel açıdan daha düzenli ve anlaşılabilir kodlar üretilmiş olacak ve en önemlisi, bu işaretlemenin yapılması ile belge, ileride daha sıkı kuralları olan XHTML gibi işaretleme dillerine daha kolay çevrilebilecektir.

HTML belgelerinin yapılandırılmasında, önce belgenin yazılımında uyulacak kuralları belirten DTD bildirimi ile başlanır. Bundan sonra tüm belge, <html></html> işaretleri arasında yapılandırılır.

<html> Elementi düzeyinde dil bildirimi yapılmış olan genel bir örnek, aşağıda görülmektedir.

Yukarıda verilmiş olan örnek, b3s1uygulama1.htmolarak kaydedilmiştir. Bu programdaki belgenin ana yapılanmasını düzenleyen <html> elementinin içerik modeli gözönüne alınınca, belge başında, <html> ile <head> başlangıç bildirimleri arasına hiçbirşey yazılamayacağı görülür. Aynı şekilde belge bitiminde, </body> ve </html>bitiş bildirimleri arasına da herhangibir şey yazılamaz.

 

 

HTML yapılanması altında, <html> tepe-düzey elementinden sonraki ilk alt düzeyi oluşturan iki eşdüzey elementten ilki <head>, ikincisi <body> elementidir. DTD de <head> elementinin tanımı,

 

şeklindedir.

DTD deki yazılımın çözümlenmesi, burada biraz karmaşık gibi görünebilir, fakat DTD çözümlenmesi yöntemlerinin uygulanması ile ifadeler kolayca anlaşılabilecektir.

DTD de görülebilen ilk bilgi, <head> elementinin başlangıç ve bitiş imlerinin isteğe bağlı bırakılmış olmasıdır. Bu konuda, bizim tavsiyemiz, başlangıç ve sonuç imlerinin kullanımları isteğe bağlı diğer tüm elementler gibi, <head> elementinin de başlangıç ve bitiş imlerinin mutlaka kullanılmasının uygun olacağıdır. Bu şekilde, görünümleri daha düzenli, kodları daha okunabilir ve en önemlisi, ileride XHTML spesifikasyonuna daha kolay uyum sağlayabilecek kodlar üretilebilecektir.

DTD de bundan sonra, <head> elementinin içerik modelinin %head.content parametre varlığına, %head.misc parametre varlığının katılması (inclusion) ile oluşacağı görülmektedir.

%head.content parametre varlığı, kullanımı kesinlikle zorunlu <title> elementi ile kullanımı isteğe bağlı, fakat eğer kullanılırsa sadece bir kez kullanılabilecek bir <base> elementinden oluşmaktadır.

%head.misc parametre varlığı, DTD de görüldüğü gibi, içlerinden sadece birisinin seçilebileceği, "SCRIPT|STYLE|META|LINK|OBJECT" elementlerinden oluşmaktadır.

SGML katılım mekanizması gereğince, katılım işlemi sonunda <head> elementinin içerik modelini oluşturmak üzere, %head.content parametre varlığına %head.misc parametre varlığı katılmış olmaktadır. Bu katılım işlemininin yan etkisi ise %head.content parametre varlığını oluşturan tüm elementlerin içerik modeline, %head.misc parametre varlığının da katılmış olmasıdır. %head.content parametre varlığını oluşturan iki elementten biri olan <base> elementi, boş bir element olduğundan katılım işleminin yan etkisinden etkilenmeyecektir. Diğer element olan <title> elementi ise içerikli bir element olduğundan, katılım işleminin yan etkisi sonunda, kendi içerik modeline %head.misc parametre varlığı da katılmış olacaktır. Bu yan etki dolayısı ile içerdiği elementler artan ve amacından sapmış olan <title> elementinin içerik modeli, DTD de <title> elementi bildirimi sırasında alınan önlem olan katılımın tersi olan dışlama ( exclusion) işlemi ile, istenmeyen %head.misc parametre varlığının içeriğinden kurtarılmaktadır. <title> Elementinin DTD deki tanımının incelenmesi ile bu mekanizma görülebilecektir.

Katılım işlemi sonunda oluşan <head> elementi içerik modeli :

- <head> elementinin içeriği tam olarak bir tane zorunlu <title> elementi ve isteğe bağlı <base> elementi ile sıfır veya istenildiği kadar "SCRIPT| STYLE|META|LINK|OBJECT" elementlerinden oluşmaktadır ve bu elementler istenilen sırada kullanılabilirler -

şeklindedir. W3C bu tanımı HTML 4.01 spesifikasyonunda hiçbir zaman açık olarak belirtmemiştir. Fakat bu tanım, W3C ye ye en yakın WDG dahil tüm kaynaklarca paylaşılmaktadır. Sürpriz olarak, W3C aynı tanımı XHTML 1.0 spesifikasyonunda aynen vermiştir.

W3C nin HTML 4.01 katı kuralcı DTD sinde belirtilen tanım ,<head> elementinin içeriğinde tam olarak bir tane zorunlu <title> elementi ve isteğe bağlı en çok bir tane <base> elementi kulanımına olanak vermektedir. katılım sonunda istendiği kadar ("<SCRIPT>, <STYLE>, <META>, <LINK>, <OBJECT>") elementleri herhangibir sırada kullanılabilmektedir.

W3C nin HTML 4.01 katı kuralcı DTD sinde sinde belirtilen <head> elementi tanımı, en azından gereksiz yere netlikten uzak ve karmaşık bir tanım olarak nitelendirilebilir. Bu karmaşık tanım, ayrıca <title> elementi içerik modeli üzerine gereksiz bir yan etki getirmiştir. Yaptığımız yazışmalarda, W3C hatasını kabul etmemekte, sadece yapılmış olan bu tanımın elementi içerik modeli üzerine bir yan etki getirdiğini kabul etmektedir. Zaten bu yan etki de <title> elementinin tuhaf tanımı incelenince kendiliğinden görülmektedir. <title> Elementinin HTML 4.01 DTD sindeki tanımı bu yan etkiyi kompanse edebilmek amacı ile düzenlenmiş, fakat bu sefer de <title> elementinin tanımı gereksiz yere karışmış ve normal bir kullanıcının, yapılan bu tanımın mantığını anlaması son derece zorlaşmıştır.

W3C hatasını XHTML 1.0 DTD sinde <head> tanımını yenileyerek düzeltmiştir. Aynı tanımHTML 4.01 için de uyarlanarak, <head> elementi alternatif bir tanım oluşturulmuştur. Aşağıda verilmiş olan bu tanım, resmi olmayacak fakat <head> elementinin kullanımı için kullanıcılara daha doğru, daha net ve  anlaşılabilir bir yol gösterici olacaktır.

şeklinde olup, <head> elementinin uygulanan tanımını tam olarak karşılamaktadır. Ayrıca bu tanımda katılım mekanizması olmadığından, <title> elementinin içeriğine %head.misc parametre varlığının katılması gibi bir istenmeyen yan etki de oluşmayacak ve <title> elementi tanımı anlaşılabilir bir basitlikte yapılabilecektir. Bunların yapılmamasının nedeni artık HTML platformunun kesin çağdışı olmasından dolayıdır. Günümüzde XHTML platformu geliştirilmiş, spesifikasyonları yazılmış, belge çözümleyicilerin XHTML belgelerini çözümlemeleri sağlanmış ve yeni belgelerin XHTML ile yazılması gündeme gelmiştir. Bu noktadan sonra artık yeni bir HTML spesifikasyon modifikasyonu beklenmemelidir.

W3C HTML 4.01 kesin spesifikasyonu incelenerek ve yukarıda görülen, XHTML 1.0 DTD si örnek alınarak düzeltilmiş DTD bildirimine göre, <head> Elementinin sözdizimi:

<head                         (Başlangıç imi : isteğe bağlı)

Uluslararasılaştırma Nitelikleri (langve dir) (isteğe bağlı)

profile="URI[TB]  >

              İçerebileceği elementler : <title> (zorunlu) (Her belge için sadece bir tek <title> elemanı bulunması zorunludur) <base>, <script>, <style>, <meta>, <link>, <object> Elementleri (isteğe bağlı) ( bu elementlerden herbiri, istendiği sayıda kullanılabilir).

</head>                     ( bitiş imi : İsteğe bağlı)

<head> Elementini içerebilecek elementler : Sadece <html> elementi.

şeklindedir.

<head> Elementinin içerik modeliinin gereği olarak, <head> elementinin içerebileceği belirtilen elementlerden hiçbiri, içeriği görüntülenebilen elementlerden değildir. Bu elementlerin tümünün işlevleri, görüntüleme öncesi, bilgi oluşumunu sağlama amacına yöneliktir.

<head> Elementinin Nitelikleri

<head> Elementi sadece uluslararasılaştırma nitelikleri (%i18n) ve profile niteliklerine sahiptir. bunlardan uluslararasılaştırma nitelikleri, daha önceden incelenmiştir.

profile="URI"  [TB] 

Bu niteliğin değeri, meta-bilgi profillerinin kaynak noktasının belirticisi olan (Universal Resource Indicator=URI) dir. birden fazla kaynak lokasyonu varsa, arada birer boşluk bırakılarak liste halinde verilebilir. Böyle bir listede, en azınan ilk URI değerinin anlamlı olması gerekmektedir. Meta-bilgi profilleri, meta-bilgilerin adları ve alabilecekleri değerleri belirten bir tür format şablonlarıdır. Bu nitelik henüz hiçbir belge çözümleyici tarafından desteklenmediğinden, bu konuda fazla bilgi ve örnek bulunmamakta, yine aynı nedenle, profile yapılandırılmasının öğrenilmesi için kullanıcılardan da fazla bir istek gelmemektedir. Oysa, profil yapılandırılması, düzenli ve anlamlı meta-bilgilerin oluşturulması için son derece önemli olabilecek bir potansiyele sahiptir. Bugün için belge çözümleyiciler, meta-bilgi profillerini destekleyemediklerinden, bazı meta-bilgiler anlamsız kişisel yorumlar halinde kalmışlardır. Bu konuya <meta> elementi incelenirken yeniden değinilecektir. Bugün için gelişmeleri beklemek ve uygulanamasa da, profil yapılandırılması üzerine temel bilgileri öğrenmeye çalışmaktan başka yapılcak birşey bulunmamaktadır. W3C profile kaynak URI sini geliştirmeye çalışmaktadır. Daha fazla bilgi W3C sitesinden elde edilebilir.

Uluslararasılaştırma Nitelikleri (%i18n) nin <head> Elementi Düzeyinde Belirtilmesi

Eğer <html> dış kabuk elementinde lang, dir nitelikleri bildirilmişse, bu bilgiler <head> elementi düzeyine kalıtımla geçerler ve yeniden belirtilmelerine gerek yoktur. Eğer, dil bildirimi en üst <html> elementi düzeyinde belirtilmemişse, <head> elementi yerine, <head> elementinin içerdiği <meta>  elementi düzeyinde, bir meta-bilgi şeklinde bildirilebilir. Bu durumda da, belirtilen dil bilgisi, tüm belge için varsayılan dil niteliği etkisini kazanır. Dil bildiriminin , sadece tarihler, ayırma işaretleri gibi bir dile özgü değerlendirmeler için kullanıldığını ve belge çözümleyiciler tarafından henüz desteklenmediğini yeniden hatırlatalım.

 

<base> Elementi :

 

Bir Web sitesi , birbirleri ile ilişkili belgelerin topluluğudur. Bir Web'i oluşturan belgeler, sunucuda genel olarak bir ana dizin altında birçok dizinlere (subweb) yerleştirilmiş olarak organize edilir. Bu tip bir dosya organizasyonun amacı, belgelerin birbirine yakın tutularak bağıl adresleme yöntemi ile bağlanmalarının kolaylaştırılmasıdır. Bir Web sitesi içinde, belgelerin birbirleri ile ilişkileri çok yoğundur ve bu nedenle, belgelerin birbirlerini çağırmaları için, daha kolay ve daha hızlı belirtilebilen bağıl URI referansları oluşturulur.

Bağıl URI referanslarının başka bir yararı, sitenin taşınabilirliğinin sağlanabilmesidir. Bazı durumlarda, Web sitesi adres değiştirebilir. Örnek olarak ücretsiz sunucularda yayınlanan bir site, sunucunun kapanması ile başka bir sunucuya transfer olabilir. Eğer, iç bağlantılar mutlak URI değerleri olarak tanımlanmışlarsa, transfer sırasında tüm bağlantıların yeniden tanımlanmaları gerekir. Büyük bir zaman ve emek kaybına neden olabilecek bu problem, iç bağlantıların bağıl URI değerleri olarak tanımlanması ile daha oluşmadan önlenmiş olur.

Bazı durumlarda, Web içindeki belge bağlantıları belirli bir dizindeki belgelere yoğunlaşır. Örnek olarak resim galerisi olarak işlev yapacak bir Web sitesi içinde resimler tek bir dizinde yerleştirilmiş ise, bağıl URI değerlerinin bu dizine göre tanımlanmaları büyük kolaylık sağlar. Bu olanak, <base> elementi ile sağlanmak istenmiştir. Bu elementin href niteliğinde belirtilen URI değeri, tüm belge için, bağıl URI değerleriinin oluşturulması için başlangıç değerini oluşturur. Ne yazık ki, <base> elementinde belirtilmiş referansa göre oluşturulmuş, bağıl URI tanımlarını tüm belge çözümleyiciler destekleyebilmektedir.

Genel olarak, <base> elementi ancak mutlaka gerekli olduğunda kullanılan bir element niteliğindedir. Çünkü uygulamada faydası kadar, Web sitesinin yayın yerinin değişmesi ile tüm sayfalardaki <base> tanımlarını değiştirmek gibi sıkıcı bir yönü de bulunmaktadır.

<base> Elementinin DTD deki tanımı :

 

 

Bu tanıtımda, <base> elementinin boş bir element olduğu, dolayısı ile, başlangıç iminin zorunlu, bitiş iminin ise yasak olduğu, içeriğinin olmadığı, sadece değeri URI olan bir href (hypertext reference) niteliği olduğu açıkça anlaşılır. <base> Elementinin sözdizimi:

<base                            (Başlangıç imi : Gerekli)

                href= "URI"  [TB]  (zorunlu) >

                İçeriği: yok, <base> elementi, boş elementtir.

                    (Bitiş imi : Yasak) (<base> elementi, boş bir element olduğundan bitiş iminin kullanımı yasaktır).

<base> Elementini içerebilecek Elementler :Sadece <head> elementi.

olarak belirtilebilir.

<base> Elementinin Nitelikleri

href ="URI"   [TB]  (zorunlu)

Bu Niteliğin değeri, mutlak bir URI değeridir ve belgede, kendisinden sonra tanımlanan, tüm göreli URI ler için temel referans düzeyini tanımlar. Bu nedenle, eğer kullanılacaksa, <base> elementinin belge kodlaması içinde en erken belirtilmesinde yarar bulunmaktadır. Belirtilen URI değeri aslında belirli bir dosya olmalıdır, fakat, son gelişmelerle, belge çözümleyiciler dizin (directory) tanımlarılarını da destekleyebilmektedirler.

<base> Elementinin bir Uygulama Örneği

Bir sunucuda, http://pegasus/sites/info10/links/iyidilekler.htm ve http://pegasus/sites/info10/b3/esenlikler.htm dosyaları bulunuyor. isim.htm Dosyasından, esenlikler.htm dosyasının bağıl bir URI değeri ile çağrılmasını kolaylaştırmak için, isim.htm dosyasında, aşağıdaki gibi bir <base> bildirimi yapılyor :

Burada, bağıl URI, http://pegasus/sites/info10/links/iyidilekler.htm olarak çözümlenecektir. Bu örnek, b3s1uygulama1.htm olarak verilmiştir. Burada, <base> bildirimi sayfanın temel URI değerini sabitleyerek, bağıl URI nin doğru çözümlenmesini garanti etmekte, fakat taşınabilirliği de ortadan kaldırmaktadır. Çünkü, dosyanın yeri değişirse, <base> bildiriminin de yenilenmesi gerekli olacaktır. Aslında, burada <base> bildirimi gerekli değildir, çünkü normal olarak bağıl URI değerleri, <base> bildirimine gerek duyulmadan da oluşturulabilir.

 

 

Son Güncellenme Tarihi :

18.09.2005 16:53  

 

validate in W3C !Valid HTML 4.01!