Doğru XHTML Kullanımı

Roger Johansson tarafından kaleme alınan XHTML'in tam olarak nasıl kullanılıp sunulması gerektiğini anlatan ve günümüzde sıkça gördüğümüz yanlış kullanımını dile getiren her web profesyonelinin kesinlikle okuması gereken makalenin Türkçe çevirisi.

Bu doküman toplam 1 sayfadan oluşmaktadır. Gösterilen 1/1 İlk sayfadasınızSon sayfadasınız

Geçtiğimiz yaz doğru bir biçimde XHTML kullanımı için dokümanların application/xhtml+xml MIME türü ile sunulması gerektiği konusu ile ilgilenmeden önceki birkaç yılda XHTML kullanıyordum. Öte yandan çalışmalarımda bazı problemler ile karşılaşacağımı da biliyordum. Gerçekten XHTML kullanmaya başlarsanız dışardan basit sorunlar gibi görünen bu problemlerin hayatı nasılda zorlaştırdığını kendiniz de görebilirsiniz.

Bu makalenin XHTML kullanımına karşı bir tartışma başlatmak amacı ile kaleme alınmış olmadığına dikkat çekmek istiyorum. Sadece potansiyel tehlikeleri işaret edip bazı konuları dile getirmekten başka bir amacım yok. Ne kullanacağınız size kalmış tabi; HTML 4.01, tüm tarayıcılar için text/html olarak XHTML 1.0, uyumlu tarayıcılara application/xhtml+xml olarak diğerlerine text/html olarak XHTML sunmak ya da tamamen farklı bir şey.

Makaleyi kaleme almamın bir diğer sebebi ise; bazı durumlarda sorunlara çözüm bulabilmek için ve bilgi edinmek için fazlaca zaman harcayıp başkalarından yardım istemek zorunda kaldığım bu konularda sizlere yardımcı olabilecek ve başlangıçta bilinmesi gereken bilgileri sizlerle paylaşmak istememdir.

Burada bahsettiğim sorunlar sadece application/xhtml+xml MIME türünü tanıyabilen ve bu nedenle XHTML'i XML olarak değerlendiren tarayıcılarda meydana geldiğine dikkat etmelisiniz. Daha önce bu sorunların dile getirilmemesinin en önemli sebebi de bu tür tarayıcıların az sayıda kullanıcı tarafından kullanıyor olması olabilir. Bu nedenle olsa gerek neredeyse kimse XHTML'in text/html olarak sunulmasından rahatsız değildi.

Bugün ise XHTML'i application/xhtml+xml olarak sunmak giderek daha olağan bir hal almış durumda. Ben bunun için iki sebep görüyorum;

  • Firefox, Mozilla, Opera, Safari ve diğer XHTML uyumlu tarayıcıları kullananların sayısının oldukça artması, bu nedenle bunu sadece kendiniz ve kişisel egonuz için yapmıyorsunuz. Beklide bu yüzden yapıyorsunuz fakat daha çok kişiyi etkileyeceği şüphesiz bir gerçek.
  • Web geliştiriciler arasında aslında XHTML'in tam olarak ne olduğunun anlaşılmasının giderek artması. Geçtiğimiz dönemlerde web geliştiricileri tarafından XHTML kullanımı, (özellikle text/html olarak sunulduğunda) birçok kez tartışılıp üzerinde kafa yoruldu. Eğer bu tür bir tartışmanın parçası olduysanız ne demek istediğimi daha iyi anlıyorsunuzdur.

Eğer sizde benim gibi doğru medya türünü kullanarak XHTML sunmak ve doğru içerik sunumunu yapmak istiyorsanız olası problemler hakkında fikir sahibi olmalı ve bu sorunları aşmanız için neler yapmanız gerektiğini bilmelisiniz. Konu ile ilgili oldukça ilginç ve çok sayıda makale olduğu gibi çeşitli script ler de mevcut. Bunlar arasında şahsi kanaatimce en iyilerinden olan "İçerik yapılandırması" ve "XHTML'i doğru MIME türü ile sunmak" başlıklı makaleleri okumanızı tavsiye ediyorum.

Çevirmenin notu: Makale içerisinde geçen “içerik yapılandırması” sözü, “Content Negotiation” kelimesinin Türkçe’ye çevirisinden gelmektedir. Tarayıcının tanıyabildiği MIME türü bilgilerine göre sayfanın hangi MIME türü ile yayınlanacağını ve içerikte ne gibi değişiklikler yapılacağını belirten bir işlemi ifade etmektedir. Genelde ASP ve PHP gibi sunucu taraflı bir programlama dili ile yapılan ufak scriptlerden oluşur.

XHTML ve HTML arasındaki en göze çarpan farklar, hemen her XHTML dokümanında listelenmektedirler; element isimleri ve parametreleri için küçük harf kullanın, her zaman parametre değerlerini tırnak içine alın, parametre minimalizasyonu kullanmayın, her element etiketinin sonlandırılmış olduğundan ve yanlış sıralanmış element olmadığından emin olun vs... Fakat XHTML'in application/xhtml+xml olarak sunulması gerektiğini söyleyen daha çok doküman olmalıydı.

İyi yapılandırma şart

Dokümanlar iyi yapılandırılmış hatalara ödün vermeyen ve kabul etmeyen XML yapısında olmalıdırlar. Eğer doküman iyi yapılandırılmamış ise tarayıcı (gördüğüm kadarıyla Mozilla, Firefox, Netscape, Camino, Opera, Safari ve OmniWeb gibi birçok tarayıcı – Internet Explorer hariç tabi) ziyaretçiye bir hata mesajı göstererek sayfayı göstermeyi sonlandırıp kullanıcıyı uyarmaktadır.

Diğer taraftan artık daha fazla özel karakterler ile kodlanmamış ampersantlara yer yoktur. (& için & kullanımı gibi)

Çevirmenin notu: Dokümanda geçen "iyi yapılandırılmış" sözü, "well formated" deyişinin çevirisinden gelmektedir ve dokümanın kaynak kodunun standartlara uygun bir biçimde yapılandırılıp geçerli kod yapısı ile hazırlanmasını ifade etmektedir.

XML deklarasyonları şart olabilir

Eğer UTF-8 veya UTF-16 dışında bir karakter kodlaması kullanıyorsanız, karakter kodlama bilgisi HTTP başlık bilgisi ile gönderilmedikçe XML deklarasyonları şarttır.

Karakter kodlama bilgisinin HTTP ile gönderilip gönderilmemesi gerektiği oldukça belirsiz bir konudur. "World Wide Web Mimarisi Bölüm 1: XML için Medya Türleri" içerisinde şöyle demektedir;
"Genelde bir sunumda sağlayıcının, 'içerisinde karakter kodlama bilgisini tanımlanmış olan XML verisi için' protokol başlığında karakter kodlama bilgisini belirtmesine GEREK YOKTUR."
Diğer taraftan "XHTML 1.0 İkinci sürüm: Karakter Kodlamaları" bölümünde ise;
"Özel olarak belirtilen karakter kodlamasına sahip taşınabilen sunum dokümanlarında en iyi yaklaşım web sunucunun da doğru karakter kodlamasını desteklediğinden ve belirttiğinden emin olunmasıdır."

<?xml version="1.0" encoding="iso-8859-9"?>

Sadece beş özel karakter kümesi (entities) güvenlidir

Sadece beş ön tanımlı kodlanmış özel karakter kümelerinin (&lt;, &gt;, &amp;, &quot;, ve &apos;) desteklendiği garanti edilmektedir. Diğerleri ise desteklenmeyebileceği gibi olduğu gibi de çıktı verilebilmektedir. Eğer XHTML dokümanınız &nbsp; ve &rdquo; gibi özel karakterler içeriyorsa Safari karakterleri olduğu gibi bu şekilde çıktı verecektir. Opera "bilinmeyen karakterler" olarak değerlendirecek, Mozilla ailesi ise özel karakterleri tanıyıp HTML içindeymiş gibi gösterecektir. (Eğer doküman tarayıcının sahte DTD katalogunda tanımlı bir genel (public) tanımlayıcı ile ilişkilendirilmiş ise)

UTF-8 karakter kodlamasını kullanmak, özel bir karakter kümesi ile şifrelenmiş ifadeler (entities) kullanmadan ihtiyacınız olan (hemen hemen tüm) karakterleri dokümanınızda yazabilmeniz için en iyi uygulama olarak önerilmektedir.

SGML yorumlarının içerikleri göz ardı edilebilir

SGML yorumlarının (HTML tarzı yorumlar; <!-- yorum -->) içeriği script ve style elementleri içinde kullanıldıklarında yorum olarak değerlendirilebilir (değerlendirilir).

Bu tür SGML yorumlar ile script ve style bloklarının içeriklerini bu etiketleri tanımayan ve düz metin olarak görüntüleyen eski tarayıcılardan gizlemek için kullanılırlar.

SGML içerisindeki her şey tarayıcı tarafından göz ardı edilerek yorum olarak değerlendirilir.

Bu style ve script elementlerinin içeriğini eski tarayıcılardan gizlemek için SGML kullanımı doksanların ortalarında alışkanlık halini almıştı. Kişisel deneyimlerime göre; HTML kullanırken tarayıcılar çok ender olarak bu içerikleri güvenli bir biçimde göz ardı etmekteler.

script ve style Elementlerinin içerikleri XML verisi olarak değerlendirilebilir

script ve style elementleri PCDATA blokları olup, CDATA (character data) blokları değildirler. Bu nedenle içerdikler XML'e benzeyen her şey XML olarak ayrıştırılır ve iyi yapılandırılmamışlar ise hatalara sebep olabilirler.

Bir script veya style bloğu içerisinde <, &, ve -- ifadelerinin kullanımı için CDATA bölümü olarak sarılmalıdırlar.

<script type="text/javascript">
<![CDATA[
...
]]>
</script>

Bir CDATA kısmı içinde her türlü karakter sıralamasını, XML verisi olarak ayrıştırılmaksızı kullanabilirsiniz (CDATA kısmının sonlandığını belirten ]]> ifadesi dışında).

Gerektiğinde dokümanı text/html olarak güvenli bir biçimde göndermek için, CDATA kısmının açılış ve kapanış etiketleri onları CDATA uyumlu olmayan tarayıcılardan gizleyebilmek için yorum haline getirilmelidirler.

<script type="text/javascript">
// <![CDATA[
...
// ]]>
</script>

<style type="text/css">
/* <![CDATA[ */
...
/* ]]> */
</style>

Eğer eski tarayıcıların gerçekten CDATA kısmının içeriğini görmemesini istiyorsanız Ian Hickson tarafından XHTML'yi text/html olarak göndermenin zararları makalesinde tanımlanmış olan daha kompleks bir metot kullanmalısınız.

<script type="text/javascript">
<!--//--><![CDATA[//><!--
...
//--><!]]>
</script>

<style type="text/css">
<!--/*--><![CDATA[/*><!--*/
...
/*]]>*/-->
</style>

Daha iyi bir çözüm olarak; içerik yapılandırma scriptiniz sayfayı text/html olarak sunmadan önce bütün CDATA kısımlarını silmesi olabilir.

Not: Çalışmalarımda Opera'nın XHTML içerisinde yorum haline getirilmiş CDATA kısımları ile problemleri olduğunu gördüm. Yorum haline getirilmiş CDATA kısmı bir style etiketi içerisinde iken, Opera (7.54 sürümü ile Mac üzerinde test edildi) ilk stil kuralı ile bütün style elementi içindeki @import kurallarını göz ardı etmektedir. Bu davranışı açıklayacak bir Opera böceği (bug) olup olmadığını bilen birisi varsa lütfen bizlerle paylaşsın.

Tabiî ki, en temiz ve güvenli yol bütün CSS ve JavaScript'leri harici dosyalara taşımaktır fakat buda her zaman pratik bir çözüm olmayabilir.

Olmayan elementler algılanamaz

HTML içerisinde bir tablo için tbody elementi kodlarda yer almıyorsa tarayıcı tarafından algılanacaktır. Fakat XHTML de bu olmaz. Eğer açıkça tbody eklemezseniz yapıya dahil edilmeyecektir. CSS seçicilerini yazarken ve JavaScript kodlarken bunu aklınızdan çıkartmamanız gerekmektedir.

JavaScript kodlarındaki document.write çalışmaz

XHTML içerisinde JavaScript kullanıldığında, document.write() metodu çalışmayacaktır. Ian Hickson Neden document.write() XML içerisinde çalışmaz? başlıklı makalesinde bu durumun sebebini açıklamaktadır. Bunun yerine document.createElementNS() metodunu kullanarak DOM tabanlı bir çözüm geliştirmeniz gerekmektedir. Experts Exchange forumlarındaki şu başlıktan konu ile ilgili daha fazla bilgi alabilirsiniz.

Stil elementlerinin işaret edilmesi

XHTML içerisinde XML metotlarına uyumlu CSS kuralları tanımlanırken harici CSS dosyası yükleme işlemi için, XML stil dosyası deklarasyonları (XHTML 1.0 ikinci sürüm: XML sunarken stil elementlerinin işaret edilmesi içerisinde; XML stil dosyası deklarasyonu ve XML dokümanına stil dosyası dahil etmek içerisinde; XML stil dosyası işlemleri yönergesi olarak geçmektedir) kullanılmalıdır. Başka bir değişle bir stil elementi kullanırken stil elementlerine işaret etmek için XML stil dosyası deklarasyonları kullanılmalıdır. Bunu yapabilmek için style elementlerine id parametresi ekleyip onları tanımlamalı ve bunu XML stil deklarasyonunda işaret etmelisiniz.

<?xml-stylesheet href="stylesheet1.css" type="text/css"?>
<?xml-stylesheet href="#stylesheet2" type="text/css"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>XML stylesheet declaration</title>
<style type="text/css" id="stylesheet2">
@import "stylesheet2.css";
</style>
</head>

Bunun ne kadar gerekli olduğundan ve XML stil deklarasyonu kullanılmadığında ne gibi hatalar oluşacağından tam olarak emin değilim. Belki birileri beni bu konuda aydınlatabilir.

Çevirmenin notu: Makalenin bu bölümü başta olmak üzere bazı yerlerinde geçen "işaret etme" deyimi "referencing" kelimesinin çevirisi olarak kullanılmaktadır. Makale içerisinde bir dosya ya da elemente doküman içerisinde işaret edilmesi veya doküman ve diğer elementlerle ilişkilendirilmesi anlamındadır.

CSS uygulama yöntemleri oldukça farklıdır

XHTML içerisinde body elementine uygulanan CSS özelliği tüm görüntü alanına uygulanmayacaktır. Bu bir arka fon resmi veya rengi kullanıldığında oldukça dikkate değer bir hal alabilmektedir. HTML içerisinde ise body elementine bir arka fon özelliği uygulandığında bu bütün sayfayı kapsayacak şekilde uygulanır. Bu nedenle XHTML içerisinde html elementini de stiller ile biçimlendirmelisiniz. Juicy Studio'da yer alan CSS body elementi testi ile bu davranışı daha iyi gözlemleyebilirsiniz.

CSS kurallarındaki element ve parametre isimleri XHTML içerisinde büyük-küçük harf duyarlılığına sahiptir (ve küçük harfle yazılmış olmalıdırlar). HTML, XHTML ve CSS kodlarken bütün element, parametre ve seçici isimlerini küçük harfle yazmak, harf duyarlılığı problemlerinin önüne geçmek için oldukça basit ve etkili bir yöntemdir.

Evet, zor fakat imkansız değil

Yetenekli tarayıcılar ile XHTML'i application/xhtml+xml olarak sunmaya karar verdiğimde okuyabileceğim böyle bir makale olsaydı zamanında yaşadığım baş ağrılarım azalabilirdi. Ben şuanda bile HTML 4.01 Strict kullanmayı tercih ederim. Fakat yinede bir şeyler öğrenip deneyim kazandığım için şikayetçi değilim, öğrenmek her zaman iyidir.

Umarım aslında doğru bir biçimde XHTML kullanımının ne olduğu hakkında biraz da olsa bilgi sahibi olmanızı sağlayabilmişimdir ve yine umarım artık hangi yolu seçip seçmeyeceğiniz konusunda artık daha fazla bilgi sahibisinizdir.

Muhtemelen XHTML ve HTML arasında burada bahsedemediğim başka farklar da vardır. Bu nedenle XHTML'i application/xhtml+xml olarak sunarken karşılaştığınız gizli tehlikeleri eklemekten ve herhangi bir hata ve eksik gözünüze çarptıysa bunu belirtmekten çekinmeyin.

Orjinal makale: The perils of using XHTML properly Roger Johansson - 456bereastreet.com

Çeviri / Translation: Orhan Veli Firik Mart 2007

Bu doküman toplam 1 sayfadan oluşmaktadır. Gösterilen 1/1 İlk sayfadasınızSon sayfadasınız

Ilgili makaleler

 

Yorumlar

Henüz hiç yorum eklenmemiş

Yorum ekleyebilmek için öncelikle üye girişi yapmanız gerekmektedir

Son eklenenler

Bölüm 4 - Fancybox ile Resim Galerisi Oluşturma Bölüm 4 - Fancybox ile Resim Galerisi Oluşturma (38) - 31 Ağus 2010 Sal 01:06:40
Bölüm 3 - Resimleri Kategorilerine Göre Listeleme Bölüm 3 - Resimleri Kategorilerine Göre Listeleme (25) - 31 Ağus 2010 Sal 01:05:12
Bölüm 2 - Upload And Resize Image With Developer Toolbox Bölüm 2 - Upload And Resize Image With Developer ... (28) - 31 Ağus 2010 Sal 01:03:46
Bölüm 1 - Tablosuz Tasarım ( Div ) Bölüm 1 - Tablosuz Tasarım ( Div ) (51) - 31 Ağus 2010 Sal 01:02:06
Adobe Developer Toolbox CS4 ve Duyuru Sayfası Adobe Developer Toolbox CS4 ve Duyuru Sayfası (16) - 31 Ağus 2010 Sal 00:59:19

Yazan

Orhan

Ekleyen Orhan Veli Firik
  Orhan
Tarih Eklenme tarihi
  04 Mart 2007 Pazar 22:37:33
Oy ver Puan ver
 
1 puan ver2 puan ver3 puan ver4 puan ver5 puan ver Ortalama: 3.67

Üye girişi

Kullanıcı e-mail
Parola

Üye ol Üye olmak istiyorum

Parolamı unuttum Şifremi hatırlamıyorum

Üyelik aktivasyon Üyelik aktivasyon

Eklentiler (extensions)

Sitemizden indirdiğiniz eklentileri nasıl yükleyeceğinizi ve kullanacağınızı bilmiyorsanız bu makaleden başlayabilirsiniz. Genel olarak Dreamweaver eklentileri üzerine kısa bir yazı buyrun...

 

eXTReMe Tracker

ana sayfa | makaleler | dosyalar | forum | kitaplar | linkler | reklam | iletişim | Prefabrik | oyun oyna | Borsa | canli imkb | mirc indir | Nakliyat ankara | ankara nakliyat | ankara web tasarım

dw.gen.tr © 2010 Tüm hakları saklıdır ®

Valid HTML 4.01 Strict Valid CSS!
Macromedia Inc MacromediaTURK Atlantik Bilgisayar