İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

XML (Extensible Markup Language)

XML nedir?

XML'in kendisi bir dil değildir. XML, markup dilleri yaratmaya yarayan bir teknolojidir. XML bu yaratılan markup dillerinin ortak adıdır diyebiliriz. XML'i anlamak için önce markup dil kavramının anlaşılması gerekir. Aslında markup dilllerine web ilgili olan insanlar yabancı değildir. Örneğin HTML bir markup dilidir

HTML bir XML dili değildir. HTML ileride yerini bir XML dili olan XHTML'e bırakacaktır.

Markup Dil Nedir ?

HTML, VML, SMIL vb gibi bir çok markup dilleri bulunmaktadır. Markup dillerinde bilgiler bir document'da durur. Bu html için bir .html uzantılı dosyadır. Bu document'in içindeki bilgiler elementler tarafından hiyereraşik bir yapıda saklanır. Aşağıda bir HTML örneği görüyorsunuz.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <html>
  2 <head>
  3 	<title>Hello World Page</title>
  4 </head>
  5 <body bgcolor=red>
  6 	<h1>hello world</h1>
  7 </body>
  8 </html>

Burada < ile başlayan > ile biten karekter grubuna açılış tag'i(etiket) denir. Örneğin <html> bir tag'dir. </ ile başlayan ve > biten grup ise kapanış tag'i dir. Örneğin </html> bir kapanış tag'idir.

html tag'i en önce açılmış ve document'in sonunda kapatılmıştır. Açılış tag'i kapanış tagı ile arasındaki bölge ve kapanış tag'i bir element'tir. Örneğin

<title>Hello World Page</title>

bir element'e karşılık gelir. title element'i içinde Hello World Page text element'i bulunur. Yine

<body bgcolor="red">
	<h1>hello wolrd</h1>
</body>

body element'ine karşılık gelir. body element'inin içinde h1 element'i bulunaktadır.

Sonuç olarak tüm markup dilleri bir document'ten, içinde ise birinin içinde olabilen element'lerden oluşur. Bir de açılış tag'leri için attribute denilen yardımcı ekler bulunur. Örnekte body açılış tag'inin bgcolor isminde bir attributesi vardır. Bu attribute'nin değeri red'dir .

Well-Formed XML ?

HTML'in bir XML dili olmadığını söylemiştik. Çünkü HTML well-formed değildir. Well-formed, bir document'in kurallara uygun biçimlenmiş olması anlamına gelir. Eğer bir document well-formed değilse kullanılamaz. Şimdi bir XML document'inin well-formed olması için hangi kurallara uyması gerektiğine bakalım

Açılan her tag kapatılmalıdır

XML'de bir açılış tag'i varsa bu tag'in ileride kapanış tag'i olması gerekir. HTML'de bazı tag'lerin kapanmasına gerek olmadığı için HTML well-formed değildir. Örneğin aşağıdaki örnekte br tag'i document'in well-formed olmamasına sebeb olur.

<p>Bu örnek HTML'in well-formed olmadığını<br> gösteren bir örnektir.</p>

Görüldüğü gibi br tag'i açılmış fakat kapatılmamıştır. Bir element'in içi boş olsa bile kapatılmalıdır. Örneğin br etiketi içine hiç bir şey almaz. Bu yüzden açıldığı zaman kapatılmalıdır. Bu iki şekilde yapılabilir. ya <br></br> şeklinde ya da daha kısa olarak <br/> şeklinde kapatılır. Son kullanımda hem açılış hem de kapanış tag'i aynı tag'dir.

Bir element'in içinde bir tag açılmışsa o elementin içinde kapatılmalıdır.

Bu özellik overlap olarak bilinir ve XML'de kesinlikle olmaması gerekir. Aşağıdaki örnek well-formed değildir.

	<p>Bu örnek HTML'in well-formed olmadığını<i>gösteren bir örnektir.</p></i>

Görüldüğü gibi i tag'i p tag'inin içinde açılmış fakat p tag'inin dışında kapatılmıştır.

Attribute değerleri "" içinde verilmelidir.

Attribute değerleri HTML'deki gibi tırnaksız veya tek tırnakla verilemez. Muhakkak çift tırnak kullanılmalıdır.

	<p class=test>Bu örnek well-formed attribute için yanlış örnektir.</p>

Görüldüğü gibi p tag'inin class atribute'sinin değeri çift tırnak içinde verilmemiştir.

Yine html'deki gibi bir değeri olmayan attribute'ler kullanılamaz. Örneğin form elemanlarında kullanılan tek başına disabled gibi bir attribute kullanılamaz.

<input type="text" size="10" disabled></input>

görüdüğü gibi disabled attribute'si kullanılmış ancak bir değer verilmemiştir. Bu tür kullanım XML'de yoktur.

Her document'te en az bir element olmalıdır.

Bu son derece açıktır. İçinde hiçbir element yoksa o document'i yaratmanın bir anlamı yoktur. XML'i değerlendirecek program değerlendirmeye başlamak için en az bir tane element isteyecektir.

Her document'in bir root element'i olaması gerekir.

HTML'de html element'i gibi diğer tüm element'leri içine alacak bir element'in bulunması şarttır. Bu element'te root element veya document element'i nedir. Aşağıdaki örnekte document bir root element içermediği için well-formed değildir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <worker>
  2 	<name>Ali</name>
  3 	<surname>Velioglu</surname>
  4 </worker>
  5 <worker>
  6 	<name>Veli</name>
  7 	<surname>Alioglu</surname>
  8 </worker>
  9 	

Örnekte görüldüğü gibi worker element'leri iki tanedir ve ikisinin de bulunduğu bir root elementi yoktur. Eğer tüm worker element'lerini içinde bulunduran workers element'i olsaydı bu document well-formed olurdu.

XML Declaration

XML document'lerinin ilk satırına XML Declaration koyulabilir. Bu declaration'da document hakkında genel bir bilgi verilir. Örneğin aşağıda bir decalaration görülmektedir.

<?xml version="1.0" encoding="ISO-8859-9" standalone="yes"?>

görüdüğü gibi declaration'lar <?xml ile başlar ve ?> ile biter. Açılış veya kapanış tag'i yoktur. Declaration yapılmak zorunda değildir ancak eğer yapılacaksa version attribute'si kullanılmalıdır. Diğer iki attribute kullanılmak zorunda değildir. Declaration'un üç attributesi vardır. version atttribute'si XML'in version'unu bildirir. Bu document'i kullanacak programlar bu blgiyi kullanabilir. encoding ise document içinde geçen text'lerde kulllanılacak uluslararası karakter kodlarını seçmek için kullanılır. Biz yukarıdaki örnekte türkçe karekter desteği için encoding olarak ISO-8859-9 verdik. standalone ise bu document'ın başka bir external entity veya external data type'leri kullanıp kullanmadığını belirler. Eğer external bir entity veya data type'ı kullanmıyorsa standalone=no denir. Eğer kullanılıyorsa yes yapılmalıdır.

Processing-Instruction-PI

Bu yapı declaration'daki gibi <? ile başlar ve ?> ile biter. Bu yapının içinde yazılan her şey XML document'ini değerlendiren application için yazılmıştır. Application document'i değerlendirirken bu komutuda çalıştırır.

XML'de Element ve Attribute İsimleri

XML case-sensitive'dir. Yani büyük-küçük harf farklı'dır. Örneğin name ile Name veya NAME farklı isimlerdir.

Element isimleri harf veya _ ile başlamalıdır. İsimler boşluk içeremez. İsimlerde : işereti bulunamaz. Çünkü bu işaret başka bir işlev için kullanılır. İsimler xml veya XML veya bunun büyük-küçük kombinasyonları ile başlayamaz.

XML'de White Space Karakterler

XML'de White Space karakterler (enter-tab vs..) text'in bir parçası kabul edilir. Halbuki HTML'de bu karakterler dikkate alınmazlar.

Entity Referance ve Özel Karekterler

XML text'lerinin içinde <, >, ", ', & gibi karekterler kullanılamaz. Çünkü bu karekterler başka işlevlerde kullanılır. Bunun için bu işaretlerin yerine entity referance'ları kullanılır. < yerine &lt;, > yerine &gt;, " yerine &quot;, ' yerine &apos;, & yerine &amp; kullanır.

& ile başlayıp ; ile biten kerekter gruplarına entity referans denir ve başka bir karekterin gösterilmesi için kullanılır. Örneğin copyright sembolü için &#xA9; entity referans'ı kullanılır.

Eğer içinde çok fazla <, >, ", ', & geçen metin kullanıyorsanız her seferinde entity referance'ını yazmak yerine CDATA section kullanılabilirsiniz. Örneğin javascript kodlarında <, >, ", ', & işaretleri çok geçmektedir. Bunun için CDATA section kullanılır. Aşağıdaki örnekte javascript kodu CDATA section içine alınmıştır. Böylece entity referans kullanmaya gerek yoktur.

<script language="javascript">
<!CDATA[
	function test(val){
		if(val<100&&val>0){
			for(var i=0;i<0;i++){
				alert("i: "+i);
			}
		}
	}
]]>
</script>

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır