İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Onder Teker
on_der_tek_er@yahoo.com

XML'e Giriş 1

Giriş

Bu bir yazı dizisinin başlangıcıdır. Amacım XML 'i sade bir şekilde ve bol örneklerle açıklamaktır.

Declaration

XML document'ların zorunlu olmamakla birlikte declaration'la başlar :

<?xml version="1.0"?> 

Bu ifade, bu dosyanın içerisindeki document'in bir XML document'ı olduğunu belirtir.

Version numarası henüz 1.0'dan başka değer almamaktadır çünkü XML'in yeni bir versiyonu çıkmamıştır..

Encoding

Declaration kısmında XML document'larına encoding verilebilir. Örneğin

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

fadesi Türkçe encoding verir. Encoding olarak ingilizce için iso-8859-1 ve unicode için "utf-8" de verilebilir.

Comment

XML document'larında comment

<!-- Comments -->

şeklinde verilir. !-- ve --> arasındaki ifadeleri XML'i işleyen application'lar görmez. Bunlar sadece XML yazan kişi veya program tarafından içeriğin daha iyi anlaşılmasını sağlamak için eklenir.

Element

Bir XML document'ı içiçe konulmuş element'lerden oluşur. En basit element

<tag>
	Text
</tag>

şeklinde belirtilir. Tag name herhangi bir isim olabilir. Ancak açılan her element mutlaka kapatılmalıdır. Element'ler <tag> ile başlar </tag> ile kapatılır. XML büyük küçük harfe duyarlıdır. yani 'tag', 'Tag' ve 'TAG' ifadeleri farklı kabul edilir.

Text

Bir elemanın içerisine herhangi biri uzunlukta text konabilir. Ancak < > ' " & karakterleri XML'de kullanıldığı için konulamazlar. Kullanılması durumunda XML'i işleyen uygulşama mutlaka hata verir. Şu ifade yanlıştır :

<tag>
	a	<	3
</tag>

Belirtilen karakterler yerine şu ifadeler kullanılabilir :

&lt;			<
&gt;			>
&amp;			&
&apos;			'
&quot;			"

Örneğin küçüktür ifadesi çu şekilde belirtilmelidir :

<tag>
	a	<3
</tag>

Bu ifadede &lt; XML'i işleyen uygulama tarafından gerektiğinde <'e dönüştürülür.

XML'de white-space (boşlık, tab, newline karakterleri v.b.) preserve edilir. HTML'in aksine istendiği kadar white-space eklenebilir.

CDATA

Bir text parçasında sakıncalı karakterleri kullanamak için CDATA section'u kullanılır :

<tag>
	<![CDATA[ 
		a>3	
	]]> 
</tag>

CDATA section'u <!CDATA[ ile başlar ]]> ile biter. XML aradaki karakterlere karışmaz.

Attribute

Element'lerin attribute'leri olabilir :

<tag name="value">
	Text
</tag>

Her name'den sonra mutlaka = ve bir değer olmalıdır. HTML'in aksine XML'de değeri olmayan boş attribute olamaz. Bütün value'ler "" içerisinde olmalıdır. HTML tırnak içinde olamayan attribute değerlerini affeder ama XML affetmez.

Birden çok attribute olması durumunda atrribute'ler boşlukla ayrılır

<tag	name1="value1" name="value2">
</tag>

Attribute sayısında hiç bir sınırlama yoktur.

Child Element'ler

Bir element'in içinde başka elementler olabilir :

<tag1>
	<tag2>
	</tag2>
</tag1>

Element'ler içiçe olmaldır. Açılan bir element kapatılmadan başka hiç bir kapama yapılamaz. Örneğin

<tag1>
	<tag2>
</tag1>
	</tag2>

ifadesi yanlıştır.

Birt element'in birden fazla child element olabilir.

<tag1>
	<tag2>
	</tag2>
	<tag3>
	</tag3>		
</tag1>

İç içe elementlerin konmasında bir sınır yoktur.

Text'lerle child element'ler karışık yazılabilir

<tag1>
	Text1
	<tag2>
		Text2
	</tag2>
	Text3
	<tag3>
		Text4
	</tag3>		
	Text5
</tag1>

Empty Element

Bir element'İn içinde hiç bir element veya text yoksa kapama işlemei kısa yoladan yapılabilir. Örneğin

<tag name1="value1" name2="value"></tag>

yerine

<tag name1="value1" name2="value"/>

yazılabilir. İçinde hiç bir eleman veya metin olmadığı gibi hiç bir attributesi de olmayan element olabilir :

<tag/>

Bir tag veya attribute birden fazla yerde kullanılabilir

<tag name="value">
	<tag name="value">
		<tag/>
	</tag>
</tag>

Aynı tag name'in kullanılması XML document'ini karışık hale getirsede teknik açıdan yanlış sayılmaz.

Well-Fomed & Valid

Bir document'ı XML'in kurallarına uygun olarak yazılmışsa well-formed (iyi-oluşturulmuş) olur. Well-formed olması bir documemnt'in valid (geçerli) olması gerekmez. Örneğin hem

<class level="1">
	<student number="123" name="Remzi" surname="Pala"/>
</class>

hem de

<student number="123" name="Remzi"> surname=""Pala">
	<class level="1">
	</class>	
</class>

document'leri well-formed'dır. Ancak ikinci document'ı değerlendiren bir application bunu invalid (geçersiz) sayabilir. Sınıfın içinde öğrenci olması geçerili, öğrencinin içinde bir sınıf olması application'un mantığına uymayabilir. Eğer document'belli bir yapıya uyması sağlamak isteniyorsa DTD kullanılır. DTD (Document Type Definiton), hangi elemanın içerisinde hangi element'lerin ve hangi attributelerin bulancağını belirler. DTD XML' document'inin içine yazılabildiği gibi ayrı bir dosyaya da yazılabilir. Bir XML document'inde DTD belirtilmesi ille de onun validate edileceği anlamında gelmez. XML'işleyen uygulamada validation (geçerlilik) kontrolü yapıp yapmamakta serbesttir.

Bir şirketi belirmek için bir XML document'ı oluştıralım:

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml version="1.0" encoding="ISO-8859-9">
  2 <organization name="Godoro Inc.">
  3 	<activity>
  4 		High Technology Software Information &amp; Service Provider 
  5 	</activity>
  6 	<manager name="Onder" surname="Teker"/>
  7 	<personnel>
  8 		<technicalSuppport>
  9 			<developer name="Hasan T"/>
 10 			<developer name="Zafer A"/>
 11 		</technicalSuppport>
 12 		<developement>
 13 			<developer name="Onder T"/>
 14 			<developer name="Zafer T"/>
 15 			<developer name="Raşit F"/>
 16 			<developer name="Ayhan G"/>
 17 		</developement>
 18 		<design>
 19 			<developer name="Önder T"/>
 20 			<developer name="Zafer T"/>
 21 			<developer name="Ayhan G"/>			
 22 		</design>
 23 		<author>
 24 			<developer name="Önder T"/>
 25 			<developer name="Zafer T"/>
 26 			<developer name="Ayhan G"/>			
 27 			<developer name="Zafer A"/>
 28 			<developer name="Yusuf B"/>			
 29 		</author>		
 30 	</personnel>
 31 </organization>

DTD:

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <!ELEMENT organization (activity,manager,personnel) >
  2 <!ATTLIST organization name CDATA #REQUIRED>
  3 <!ELEMENT activity (#PCDATA) >
  4 <!ELEMENT manager EMPTY >
  5 <!ATTLIST manager name CDATA #REQUIRED>
  6 <!ATTLIST manager surname CDATA #REQUIRED>
  7 <!ELEMENT personnel (technicalSuppport|developement|design|author)>
  8 <!ELEMENT technicalSuppport (developer*) >
  9 <!ELEMENT developement (developer*) >
 10 <!ELEMENT design (developer*) >
 11 <!ELEMENT author (developer*) >
 12 <!ELEMENT developer EMPTY >
 13 <!ATTLIST developer name CDATA #REQUIRED>

XSL (Extensible Style Sheet)

Bir XML document'i XSL kullanılarak başka bir formata çevrilebilir. XSL-FO (Formating Objects) bir XML document'inin herhangi bir ortamda nasıl gösterileceğini belirtir. XSLT (XSL Transformation) bir XML'i düz metne, HTML'e veya başka bir XML'e çevirebilir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml version="1.0" encoding="ISO-8859-9">
  2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  3 	<xsl:template match="/">
  4 		<html>
  5 			<head>
  6 				<title><xsl:value-of select="organization/@name"/></title>
  7 			</head>
  8 			<body>
  9 				<h1><xsl:value-of select="organization/@name"/></h1>
 10 				<p><xsl:value-of select="/organization/activity"/></p>
 11 				<xsl:apply-templates select="/organization/manager"/>
 12 				<xsl:apply-templates select="/organization/personnel"/>				
 13 			</body>
 14 		</html>
 15   </xsl:template>	
 16 	<xsl:template match="manager">
 17 		<p>
 18 			Manager:<xsl:value-of select="@name"/><xsl:text> </xsl:text><xsl:value-of select="@surname"/>
 19 		</p>
 20 	</xsl:template>
 21 	
 22 	<xsl:template match="personnel">
 23 		<ul>
 24 			<xsl:apply-templates/>
 25 		</ul>
 26 	</xsl:template>
 27 	
 28 	<xsl:template match="technicalSuppport">
 29 		<li>Teknik Destek
 30 			<ul><xsl:apply-templates select="developer"/></ul>
 31 		</li>
 32 	</xsl:template>
 33 	
 34 	<xsl:template match="developement">
 35 		<li>Programcılar
 36 			<ul><xsl:apply-templates select="developer"/></ul>
 37 		</li>
 38 	</xsl:template>
 39 	<xsl:template match="design">
 40 		<li>Dizayn
 41 			<ul><xsl:apply-templates select="developer"/></ul>
 42 		</li>
 43 	</xsl:template>
 44 	
 45 	<xsl:template match="author">
 46 		<li>E-Kitap Yazarları
 47 			<ul><xsl:apply-templates select="developer"/></ul>
 48 		</li>
 49 	</xsl:template>
 50 	<xsl:template match="developer">
 51 		<li><xsl:apply-templates select="./@name"/></li>
 52 	</xsl:template>
 53 	
 54 </xsl:stylesheet>

Üretilen Html:

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <html>
  2 <head>
  3 <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4 <title>Godoro Inc.</title>
  5 </head>
  6 <body>
  7 <h1>Godoro Inc.</h1>
  8 <p>
  9 		High Technology Software Information &amp; Service Provider 
 10 	</p>
 11 <p>
 12 			Manager:Onder Teker</p>
 13 <ul>
 14 		
 15 <li>Teknik Destek
 16 			<ul>
 17 <li>Hasan T</li>
 18 <li>Zafer A</li>
 19 </ul>
 20 </li>
 21 		
 22 <li>Programcılar
 23 			<ul>
 24 <li>Onder T</li>
 25 <li>Zafer T</li>
 26 <li>RaÅŸit F</li>
 27 <li>Ayhan G</li>
 28 </ul>
 29 </li>
 30 		
 31 <li>Dizayn
 32 			<ul>
 33 <li>&Ouml;nder T</li>
 34 <li>Zafer T</li>
 35 <li>Ayhan G</li>
 36 </ul>
 37 </li>
 38 		
 39 <li>E-Kitap Yazarları
 40 			<ul>
 41 <li>&Ouml;nder T</li>
 42 <li>Zafer T</li>
 43 <li>Ayhan G</li>
 44 <li>Zafer A</li>
 45 <li>Yusuf B</li>
 46 </ul>
 47 </li>		
 48 	
 49 </ul>
 50 </body>
 51 </html>

XHTML

HTML'in XML formatına uygun olarak yazılmasıyla XHTML document'i oluşur. Bütün tagler küçük harfler yazılır. Açılan bütün element'ler mutlaka kapatılır. Her attibute mutlaka tırnak içinde yazılan bir değere sahiptir.

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <html>
  2  <body>
  3     <p>Bu bir html örneğidir
  4 		<form>
  5 			<input type="text" size=10 readonly><br>
  6 			<input type="button" value="Ok">			
  7 		</form>
  8  </body>
  9 </html>

Göster Gizle Kopar Satır Gizle Satır Göster
  1 <?xml version="1.0" encoding="ISO-8859-9">
  2 <html xmlns="http://www.w3.org/1999/xhtml">
  3 	<head>
  4 <head>
  5 <body>
  6 	  <p>Bu bir xhtml örneğidir</p>
  7 		<form>
  8 			<input type="text" size="10" readonly="readonly"/><br/>
  9 			<input type="button" value="Ok"/>			
 10 		</form>
 11 </body>
 12 </html>

Dosya Listesi

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