25 Mayıs 2012 Cuma

XML - Intro

Merhaba arkadaşlar.
Bu yazımda, web programlama dünyasında sıkça adını duyduğumuz XML, HTML, XHTML kavramlarını ve bu kavramların birbirinden farklarını inceleyeceğiz. Ama hepsinin bir ortak özelliği vardır ki o da "markup language" yani işaretleme dili olmasıdır. Bazı kesimler tarafından programlama dilleri olarak algılansa da programlama dilleri değil işaretleme dilleridir. Yani sadece bu diller kullanılarak bir program geliştirilemez. Bu dillerde veriler kendilerine özgü işaretlerle yani taglerle işaretlenir. Amaç veride bir okuma-yazma standartı oluşturmaktır. Şimdi daha ayrıntılı bir şekilde inceleyelim.
Bu dillerin bir diğer ortak özellikleri ise "Client Side" tarafında çalışılıyor olmasıdır. Yani örneğin bir asp.net sayfası "Server Side" tarafından, istemciye gönderilmek üzere, Html diline "render" edildiğinde, istemciye Html çıktısı içerisinde sayfanın "html, css, javascript, jquery" gibi öğeleri de gelecektir. Yani bu öğeler client side tarafında bir internet tarayıcısı sayesinde yorumlanıp, son kullanıcının anlayacağı şekilde gösterilecektir. Ayrıca bir sayfa görüntülenmek istendiğinde ne gibi işlemlerin gerçekleştiğini başka bir yazımda açıklayacağım.

  • XML (Extensible Markup Language)

Açılımının anlamı "genişletilebilir işaretleme dili" dir. 90 'lı yılların sonlarına doğru W3C consortium tarafından tanımlanmış ve kısa sürede yaygınlaşmış bir işaretleme dilidir. Ama tasarımcısı HTML 'in de tasarımcısı olan Tim Berners Lee adındaki bir fizikçidir. Amaç, verilerin standart bir şekilde saklanmasını, okunmasını ve taşınmasıdır. Akıllı veri sorgulaması yapmaya olanak sağlar. Bu nedenle performanslıdır. Ayrıca HTML in aksine, önceden tanımlı tag ler yoktur, genişletilebilir olmasının verdiği avantaj sayesinde ihtayaca göre tag ler yazılarak uygulamaya esneklik sağlar. Tamamen kullanıcıya bırakılmıştır.

Günümüzde bir çok platformda uygulama geliştirilmektedir. Bir xml dökümanında veriler belirli bir kurala göre saklandığından dolayı bir çok platform arasında veri taşıma işlemini de çok kolay bir şekilde gerçekleştirir. Yani xml,  IT dünyasının ingilizcesi gibidir. Nasıl ingilizce dili bir dünya dili olmuşsa, xml de bir çok platform tarafından tanınır ve desteklenir. 

Sadece platformlar arası değil, programlamada da geliştiriciler tarafından sıkça kullanılır. Örneğin configuration dosyalarında veriler xml şeklinde tutulur. Ayrıca Ado.Net (ActiveX Data Objects) namespace inindeki X harfi, bu teknolojinin XML e tam uyum sağladığını göstermektedir. Bu namespace nin disconnected mimaride, bize sağladığı DataSet gibi sınıflar sayesinde, Provider dan bağımsız olarak, verileri XML şeklinde saklanmaktadır. Böylece verileri istediğimiz şekilde taşıyabiliriz. Ayrıca bir diğer örnek ofis uygulamalarıdır. Microsoft Ofis 2007 programları sayesinde veriler XML şeklinde tutulmaktadır. Uzantılarının sonuna da x eki gelmektedir; docx, xlsx vs.. Yine bir başka örnek Merkez Bankası döviz kurlarını XML şeklinde yayınlar. (http://www.tcmb.gov.tr/kurlar/today.xml bu adresten bakabilirsiniz. Sayfada sağtık "kaynağı görüntüle" seçeneğiyle xml dosyasını inceleyebilirsiniz.) Böylece bir çok platform ve kuruluş, yayınlanan bilgiler, formatlı oldukları için rahat bir okuma yapabilir. Xml dosyalar web browser lar ve notepad gibi programlar tarafından da görüntülenebilir.

XML in bir diğer özelliği ise IT dünyasının sevimli çocuğu olmasıdır. Hiçbir firewall xml dosyalarını engellemez. Çünkü içerisinde sadece veri bulunduğunu bilir. Bu nedenle dış dünyaya açılabilmesi için ayrıca bir port istemez, 80 nolu internet portu sayesinde haberleşme sağlanır.

XML dosya uzantısı ".xml" dir. XML dosyasındaki texte, "xml document" (döküman) denir. XML dökümanı "element" lerden meydana gelir. En dıştaki elemente "root element" (kök element) denir ve bir xml dökümanında bir tane "root element" bulunabilir. Root element altında bir çok element tanımlanabilir. Bu root element altında tanımlanan elementler de "child element" denir. Ama nihayetinde xml dökümanındaki herbir elemente "node" denir, (özellikle child elementin altındaki elementlerine). Bu nedenle root-child elementlerine, root node-child node da denir. Her elementin bir açılış (<ad>) bir de kapanış (</ad>) "tag" i vardır. Bir xml elementi içerisinde ya doğrudan veri bulunur yada başka elementler bulunur. Element aynı tag de açılıp kapanmışsa (<ad/>) içerisinde veri veya başka bir elementin bulunmadığı anlaşılır. 

Bir ağaç yapısına sahiptir, ağcın kökü ve bir çok dalı vardır. Xml dosyasında da bir kök elementi bulunur ve o kök element bir çok elementi içerebilir. Aynı zamanda bu dallanma bir hiyerarşinin de göstergesidir. Girintili bir yazım ile yazılır. Ayrıca XML dosyası büyük-küçük harflere karşı duyarlıdır. Yani "case sensitive" bir dildir. Ayrıca boşluklar da önemlidir.

Şimdi Visual Studio da bir XML dosyası ekleyelim ve bu dosya üzerinde inceleyelim. Bir XML file ekledikten sonra aşağıdaki gibi bir xml tag i varsayılan olarak gelir.

<?xml version="1.0" encoding="utf-8" ?>

Soru işareti ile başlayan bu tag xml dosyasının "declaration" (tanımlama) elementdir (giriş elementi olarak da geçer). Bu işaret o elementin, veri taşımadığını belirtir, bu elementin içinde o xml dosyasının "version" ve "encoding" gibi özelliklerini vermemizi sağlar.Encoding özelliğine "utf-8" vererek bu xml dosyasında unicode character ler kullanılabileceğini belirtiyoruz. Yorum satırını aşağıdaki gibi oluşturabiliriz.
    <!--Yorum Satırı-->
Örneğin bir "dunya" kök dizini ekleyelim ve altında hiyerarjik bir şekilde tag lerle "kıta", "ulke", "il" elementleri belirtelim:
<dunya>
  <kita ad="avrupa">
    <ulke ad="türkiye">
      <il>istanbul</il>
      <il>ankara</il>
      <il>izmir</il>
    </ulke>
    <ulke ad="almanya">
      <il>berlin</il>
      <il>frankurt</il>
      <il>bonn</il>
    </ulke>
    <ulke ad="san marino"/>
      <!--Şehri yok, bir şehir ülkesidir. Bu yüzden böyle tanımlayabiliriz.-->
  </kita>
  <kita ad="asya">
    <ulke ad="çin">
      <il>shangy</il>
    </ulke>
    <ulke ad="japonya">
      <il><![CDATA[nagazagi]]></il>
    </ulke>
  </kita>
</dunya>

Bazen elementlerin inner textlerinde özel karakter(@, <, >, ., ;, ! gibi..) kullanmak isteyebiliriz. Kullanmak için  metnimizi yukarıdaki gibi <![CDATA[nagazagi]]> tagleri içerisine yazmalıyız. Böylece metinlerimiz, veri olarak algılanmasını sağlanır. Genelde url ler xml in yapısını bozabileceğinden dolayı, bu tagler içerisinde yazılır.

Tag in içerisinde kırmızı renkte yazılan ifadelere "attribute" (öz nitelik) denir. Hangi element içerisinde yazılmışsa o elementi niteler. Anahtar - değer ilişkisi vardır. Yani öz niteliğin adı ve değeri vardır. Bir elemente bir çok attribute verilebilir. W3C, attribute ların node lardan daha hızlı okunduğunu söylemektedir. Ayrıca attribute u amacında kullandığımızda xml text dosyasının boyutunu da ekonomik kullanmaktadır. Bu nedenle eğer bir elementi niteleyecek bir özellik belirtilecekse, attribute şeklinde yazılmalıdır. Yani,

    <ulke>
      <ad>turkiye</ad>
      <il>istanbul</il>
      <il>ankara</il>
      <il>izmir</il>
    </ulke>

bu şekilde yazmak yerine:

    <ulke ad="türkiye">
      <il>istanbul</il>
      <il>ankara</il>
      <il>izmir</il>
    </ulke>
Yazmak yukarıda belirtilen sebeplerden dolayı daha avantajlıdır.

Xml dökümanın yapısıyla ilgili ayrıntılar DTD (Document Type Defination) yada XSD (Xml Schema) adı verilen harici dökümanlarla da verilebilir. Uzantıları da aynı bu şekildedir (.dtd ve .xsd). XSD nin öncesi de DTD dir. Xml documanın nasıl yorumlanacağını belirtir. XSL (Style Sheet), dosyaları da xml dökümanın görünüşünü belirtir.

Umarım yardımcı olabilmişimdir. Başka bir yazıda görüşmek dileğiyle, hoşçakalın.. 

Hiç yorum yok:

Yorum Gönder