Bugün Internet Computer Protocol blok zincirini tanıyıp Hello World örneğiyle bu merkeziyetsiz geliştirme ortamına ilk adımımızı...
XML Nedir ? Yapısı Hakkında Bilgiler..
Kemal İKİZOĞLUMerhaba 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..
- XML bir document’in(belgenin) yapısını ve görünümünü tanımlamak için kullanılan uluslararası bir standartdır.
- XML (Extensible Markup Language – Genişletilebilir İşaretleme Dili) yapılandırılmış belge ve verilerin evrensel formatıdır.
- XML text tabanlı markup dilidir ve data alış verişinde kullanılan bir standarttır.
- XML bilginin yapısını tanımlamak için kullanılan bir teknolojidir.
- XML bilgiyi tanımlayan ve web’te bilgi alış verişi için kullanılan standard bir biçimdir.
- XML markup dillerini tanımlayan bir metadilidir.
- XML verinin yapılandırılması ve tanımlanması için kullanılan bir teknolojidir.
- XML herhangi bir verinin biçimlenmesi,tanımlanması için kullanılan bir teknolojidir.
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 :
<?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 :
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/xlinkBasitç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 LanguageXSL: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
Son Yorumlar..