Teknoloji ve Hayata dair günceler

Son Yazılar


Kategoriler


Son Yorumlar..


XML Nedir ? Yapısı Hakkında Bilgiler..

Kemal İKİZOĞLUKemal İKİZOĞLU

 

Merhaba arkadaşlar..

Çoğu kez ismini duyup hakkında pek bilgimiz olmayan bir dil hakkında biraz araştırma yapmak istedim.Hakkında;  XML nedir? diye bir soru yöneltildiğinde belkide İngilizce açılımını yada içeriğinin ağaç yapısı gibi dallandığını söyleyebiliriz.Zaten akla ilk olarak bunlar geliyor.. Bakalım tam olarak ne imiş , ne işe yararmış bu konumuzda bundan bahsedelim..

eXtensibe Markup Language kelimelerinin baş harflerinden oluşan HTML gibi Markup Language (yani <> tagları kullananılarak hazırlanan ) bir Web programlama ve bilgi transformasyonuna yarayan bir dildir.Bağımsız bir kuruluş olan W3C (World Wide Web Consortium) organizasyonu tarafından tasarlanan ve herhangi bir kurumun tekelinde bulunmayan, esnek, genişleyebilir ve kolay uygulanabilir bir meta dildir. HTML bilginin kullanıcıya gösterilmesini(sunulması) sağlarken XML bu bilginin irdelenmesi,hesaplanması,tanımlanması gibi işlemlerle ilgilenir.

Çok farklı tipteki verileri orjinal formatlarında tek bir havuzda tutabilen XML, bilgiye hızlı, kolay ve ortamdan bağımsız olarak erişebilme imkanı sunar. Günlük yaşantımızda kullanmakta olduğumuz verilerin %80‘ini oluşturan ve “unstructured” olma özellikleri nedeniyle kendi bulundukları medya dışında veri özelliklerini koruyamayan (kelimeişlem, elektronik tablo çıktıları, PDF dokümanları, ses,resim vb) farklı tipteki verilerin, oryantasyona gerek duymadan hiyerarşik bir yapıda kullanılabilmelerine olanak vermekte ve bu verilerin hızlı bir şekilde sorgulanabilmelerini sağlamaktadır.

*Unstructured : Yapısal olmayan.. 

Markup Dili: Veriler bazı işaretlerle (etiket) işaretlenirler. Bir HTML kodunda bir başlık yazısı <h1> etiketi ile işaretlenir.Bir <font> ile sayfamızda font tanımlama işlemi yaparız.Bu etiketlenme durumuna denir.

Microsoft’un geliştirdiği .NET teknolojisinde kullanılan DataSet nesneleri XML formatındadır. Ayrıca XML, ofis uygulamalarının alt yapısı haline getirilmiştir.

İçeriğin, doküman yapısının ve şeklin birbirinden ayrı ele alınması XML’i İçerik yönetim sistemlerinin ideal formatı haline getirmiştir.

XML dokumanları ağaç veri yapısında olurlar. Bağımsız imler yapıyı oluştururken, içerik ya imin özelliği olarak ya da iki im arasında gösterilir (bkz. örnek). Yapıyla ilgili ayrıntılar DTD (Document Type Definition) ya da XML Schema adı verilen harici dokümanlar ile tanımlanır.

Bu dilin kendine özgü bazı özellikleri vardır. Dokümanın ilk satırı XML deklerasyonu(XML declaration) olarak isimlendirilir.Ve bu kod html dilinde olduğu gibi  kapatılma durumu gibi birşey yoktur.Kod  şu şekildedir:

 

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

 

Üç adet özniteliği vardır ve ?version? özniteliği verilmek zorundadır. ?version? özniteliği XML dosyasının versiyonunu belirtir ve bu bilgi dokümanı parse(okuma) edecek uygulama için gereklidir. ?encoding? özniteliği doküman içerisindeki dil seçeneğini belirtmek için kullanılır.  XML dokümanının dil ayarı iso-8859-9 olacak şekilde oluşturulmalıdır. Bu şekilde Türkçe karakterler sorunsuz algılanabilmektedir.

Bir örnek verelim.. Bilgilerim adında bir xml dosyamız mevcut.Ve içeriğindeki kod satırları şu şekildedir :

biletlerim.xml
<?xml version=”1.0″ encoding=”utf-8″?>

<biletlerim>
<bilet>
<no>101101</no>
<ad>Emel</ad>
<soyad>İkizoğlu</soyad>
<tcno>14785236998</tcno>
<tarih>24.10.2012</tarih>
<hareket>İstanbul</hareket>
<varis>İzmir</varis>
</bilet>
<bilet>
<no>101102</no>
<ad>Mustafa</ad>
<soyad>İkizoğlu</soyad>
<tcno>25896314785</tcno>
<tarih>24.10.2012</tarih>
<hareket>Kırıkkale</hareket>
<varis>İzmir</varis>
</bilet>
<bilet>
<no>101103</no>
<ad>Kerem</ad>
<soyad>İkizoğlu</soyad>
<tcno>23658965874</tcno>
<tarih>24.10.2012</tarih>
<hareket>Bolu</hareket>
<varis>İzmir</varis>
</bilet>
</biletlerim>

Etiketlerin dallanma yapılarına biraz göz atalım..

En başta tanımladığımız deklarasyondan sonra yer alan komutların en başında olan etikete “root” , “kök” etiket denir.Oluşturulan sayfada en az bir tane bulunmak zorundadır.Gelecek bilgiler, onların altında dallanarak ilerleyecektir. Bizim root yani kök etiketimiz <biletlerim> ‘ dir.
Bir alt dalı olan  etiketimize ise “child” , “çocuk”  isminde verilmiştir.Bunlara öznitelikler de diyebiliriz. Child kısmımıza ait olan etiket ise <bilet>‘tir. Ve her seferinde bir child ilerleyen kısımdır bilet childi.. <bilet> childi içinde yer alan nesnelere de subchild adı veriliyor.

Bu kod satırlarının ekran görüntüsü ise şu şekilde olacaktır :

Gördüğünüz sadece bu yapıyla sınırlı kalmasın.Başka bir şekilde karşınıza gelecek bir yapı daha var.. Bu yapı da başarılı bir şekilde hizmet veriyor. Bir de onun yapısına bakalım.. Bir farklı versiyon olarak şu şekilde de yazabilirsiniz :

<?xml version=”1.0″ encoding=”utf-8″?>
<Konaklama
TesisKodu=”5555″
Tarih=”2006-06-12 23:50:26″
GonderenProgram=”rss”
Versiyon=”1.0.0″>
<Kisi
sirano=”1″
website=”http://www.adobe.com”
adi=”Şenol”
soyadi=”DEMİR”
Yer=”İzmir”/>
<Kisi
sirano=”2″
website=”http://www.adobe.com”
adi=”Ahmet”
soyadi=”ESİRGEN”
Yer=”Kapadokya”/>

</Konaklama>

Yine bu örneğimizde olduğu gibi root etiketimiz <Konaklama> , child ise <Kisi> olarak görülmektedir..Bu kod satırlarının çıktısı ise şu şekilde olacaktır :

XML İle ilgili bağlantılı terimsel sözcükler mevcut.. Bir de onların anlamlarına bakalım..

XSD: XML Schema Definition, XML dosyalarında taşınan verilerin nasıl yorumlanacağını tanımlayan dosya. DTD dosyalarının eksikliklerini gidermek üzere geliştirilmiştir.

Xpointer :  Language (XML İşaretçi Dili), XML dosyaları ya da uygulamalarında, herhangi bir XML kaynağına işaret etmek üzere düzenlenmiş dil. XLink’in bir parçası olup, W3C‘ün açık standartlaştırma sorumluluğundadır.

XPath : Bir XML dokümanındaki bilgiyi bulmak için kullanılan bir dildir. XPath bir XML dokümanı içindeki elemanları ve onlara ait özellikleri incelemeye yarar.

 DTD :  (İngilizce: Document Type Definition, Türkçe: Belge Türü Tanımı), belge sözdiziminin geçerli olduğu yerleri tanımlar.DTD’ler bir belgenin yapısını belirlerler. Ayrıca, XML türünün önemli özelliklerinden biri olan “genişleyebilirlik” yoluyla yeni yapıların tanımlanmasına olanak sağlar. Herhangi bir alandaki uygulamada kullanılacak yeni işaretleme dilleri DTD’ler ile geliştirilebilir.

Kullanım Örneği şu şekildedir :

<?xml version="1.0"?> 
<!DOCTYPE mail [ <!ELEMENT mail (kime,kimden,baslik,yazi)> 
<!ELEMENT kime (#PCDATA)> 
<!ELEMENT kimden (#PCDATA)> 
<!ELEMENT baslik (#PCDATA)> 
<!ELEMENT yazi (#PCDATA)> ]> 
<mail> <kime>Ali</kime>
<kimden>Orhan</kimden>
<baslik>Animsatma</baslik>
<yazi>Yarin milli maci izlemeye gidecegiz,unutma!</yazi> </mail>

 Bu kısa örneğimizde ufak bir hatırlatma yapalım.Root olarak açılmış <mail> etiketimize 4 tane child tanımlanmıştır.Bunlar Kime, Kimden , Başlık ve Yazı etiketleridir..  Son olarak da <mail> ana root etiketini kapatarak dili uygun bir biçimde kullanmış oluyoruz. 🙂

!DOCTYPE mail, mail elemanının kök-elemanı olduğunu belirtmektedir.
!ELEMENT mail, mail elemanının (kime,kimden,baslik,yazi) olmak üzere 4 eleman içerdiğini; kime,kimden,baslik ve yazi elemanlarının herhangi bir karakter verisi olduğunu belirtir.

  • ELEMENT: Bir XML elemanı tanımlar.
  • ATTLIST: Bir eleman türünün barındırabileceği özellikleri tanımlar.
  • ENTITY: Belli bir içeriğin bir adla ilişkilendirilmesini sağlar.
  • NOTATION: XML kapsamı dışında kalan içeriğin tanımlanmasını sağlar. Bu içerik, XML belgesinin bir parçası olarak yorumlanmaz.

XQuery: XML tipi veriler üzerinde sorgulama yapabilmek için geliştirilmiş bil dildir. Bu dil, Quilt isimli bir sorgulama dilinden türetilmiştir, ve yapı olarak SQL’e benzer. XQuery bir W3C standardıdır. Xquery 1.0, Xpath 2.0 sürümünün bir uzantısıdır, dolayısıyla Xpath için geçerli olan bütün sorgular Xquery için de geçerlidir.

Yukarıdaki verdiğim örnek ile açıklayacak olursak :

doc("biletlerim.xml")/biletlerim/bilet [@no='101103']

satırı gibi bir sorgu yazdığımızda ekrana sırasıyla su sekilde çıktı getirecektir.

Kerem İkizoğlu   25687414566   24.10.2012   İstanbul   Susurluk

Sorgu dizilimi şu şekildedir : doc (“dosyanın konumu”) /root dizini/child dizini /..  (istenen bilgiye kadar xml yapınızda çekmek istediğiniz verinin son dalına kadar ilerleyebilirsiniz.) [koşul]

XLink : XML Bağlantı Dili veya kısaca XLink, XML dokümanlarının bağlantılarını yönetmeye yarayan bir dildir.

XML’de bağlantı verme iki kısımdan oluşur: XLink ve XPointer. XLink bir dokümandaki dış bağlantıların nasıl oluşturulacağını belirleyen bir standarttır. Bağlantılar HTML’dekine benzer. Bir web dosyasını, URI kullanarak bir diğerine bağlamaya yarar.


<?xml version='1.0'?>
<document xmlns='http://example.org/xmlns/2006/dosya1' xmlns:xlink='http://www.w3.org/1999/xlink'>
<heading id='birBaslik'>Bir dosya</heading>
<para><anchor xlink:type='simple' xlink:href='#birBaslik'>Bir dosya</anchor>Baslik</para>
</document>

 

Bir başka örneğimiz ise şu şekildedir..


http://www.w3.org/1999/xlink
Basitçe : 
<myElement xmlns:xlink="http://www.w3.org/1999/xlink"> ... </myElement>
Ama biraz daha ayrıntı eklemek istiyorsak :
<my:crossReference 
xmlns:my="http://example.com/" 
xmlns:xlink="http://www.w3.org/1999/xlink" 
xlink:type="simple" 
xlink:href="students.xml" 
xlink:role="http://www.example.com/linkprops/studentlist" 
xlink:title="Student List" 
xlink:show="new" 
xlink:actuate="onRequest"> Current List of Students </my:crossReference>
olarak kullanıyoruz.. bknz :Use xlink

Yapıları kullanırken şu kurallara dikkat etmeliyiz .. 

?  XML dokümanında her alan bir etiket çifti arasında belirtilir ve açılan her etiket kapatılmak zorundadır.

?  Etiketler büyük küçük harf (case sensitivity) duyarlıdır.

?  Bir element içerisinde başka bir element açılmış ise o element kapanmadan diğeri kapatılamaz, yani hiyerarşi bozulamaz.

?  XML beyaz karakter(white space) göz önüne alınır.

?  <, >, “, ‘, & bu karakterler XML içerisinde kullanılamaz.

?  Doküman içerisinde en az bir element olmalıdır.

?  Eğer tarih, zaman eklemek istiyorsanız formatı YYYY-MM-DD hh:mm:ss şeklinde olmalıdır.

?   Xml dosyanızda eğer hash kontrolü ile data alışverişi yapmak istiyorsanız bu kontrolcüyü en başta deklarasyonun hemen altında tanımlamalısınız..

Örnek :

<?xml version=”1.0″ encoding=”utf-8″?>
<?hash 14785BNIITIS7884458?>

 

?   Tüm XML elementleri bir kapanış tag’ine sahip olmalıdır. HTML’de ise bazı elementler bitiş tag’lerine sahip olmayabilir. Örneğin aşağıdaki kod parçası HTML için geçerli bir kod olmasına rağmen XML için geçerli değildir:

<p>Bu bir paragraftır

<p>Bu başka bir paragraftır

Yukarıdaki kod parçasını XML formatına uyarlayacak olduğumuzda ise :

<p>Bu bir paragragftır</p>

<p>Bu başka bir paragraftır</p>

şeklinde bir düzenleme yapmamız gerekecektir.

? XML tag’ler için case-sensitive özellik gösterirler. HTML’de ise case-sensitive özellik yoktur.

Bakınız :

<mektup>Bu syntax yanlıştır</MEKTUP>

<mektup>Doğru bir syntax örneği</mektup>

?  HTML’de white space adı verilen boşluk karakteri göz önüne alınmaz. Oysa XML dokümanlarında white space karakterler de değerlendirmeye alınır. Yani bir HTML sayfasında “Merhaba,benim adım Kemal” cümleciği sunum sırasında “Merhaba,benim adım Kemal” şeklinde görüntülenir.

Evet arkadaşlar.. Az çok xml yapısını ve ne anlama geldiğini anlatmaya çalıştım.. Geleceğin veri kayıt sistemlerinde yeri olacağını ve düzenli , basit yapısıyla daha fazla kullanıma sahip olacağını düşünüyorum .. Aklınıza takılan sorular için yazımın altında yer alan yorumlara not bırakabilirsiniz..

Bir sonraki dersimizde görüşmek üzere.. 🙂

Kolay gelsin 🙂

Kaynaklar : 

XML:eXtensible Markup Language
XSL:eXtensible Stylesheet Language
DTD:Data Type Definition
 http://www.rssnedir.com/xml_nedir.php
http://tr.wikipedia.org/wiki/XSD 
http://tr.wikipedia.org/wiki/XPointer
http://tr.wikipedia.org/wiki/DTD
http://tr.wikipedia.org/wiki/XQuery
http:// kbs/teknik/xml_yapi.htm
http://eskisite.bilgisite.com/etic_xlm2.htm
http://www.turkeyforum.com/satforum/archive/index.php/t-146177.html
 http://en.wikipedia.org/wiki/XML

Eğitim ve teknoloji haberlerini, ilginç ve önemli bilgileri, kendimi geliştirdiğim alanlardaki öğrendiğim tecrübelerimi blogumda paylaşıyorum. Öğrenmekten ve paylaşmaktan zevk alıyorum.İnandığım bir şey var ki istisnalar hariç, hiçbir şey imkansız değildir. Mucizeler için zaman gerekir! Bu benim yaşam felsefem.

Yorumlar 0
İlk yorumu yazmak ister misin?