XML ibrahim
XML’e Giriş başlıklı yazımda XML’in hangi durumlarda kullanılabileceğini açıklamıştım. Bu yazıda ise kendi XML belgelerimizi ne şekilde oluşturabileceğimizi göreceğiz. Ayrıca yazının sonunda XML belgeleriyle çalışabilmeniz için bir kaç araçtan da bahsedeceğim.
Yazılarımda hep vurguluyorum: XML’de patron sizsiniz. Bilmeniz veya ezberlemeniz gereken çok fazla özelleşmiş sözcük (KEYWORD) yok. Fakat yazdığınız belgelerin uygulamalar tarafından sorunsuzca değerlendirilebilmesi için bazı yazım kurallarını bilmeniz gerekir. Şimdi bunları sıralayalım ve ardından da bir örnek uygulama yapalım.
- Bir XML belgesinin sadece bir tane kök elementi olabilir. Yani XML’i bir ağaç yapısında düşünürseniz ağacın bir kökü olduğunu bilirsiniz.
- XML’de büyük-küçük harf duyarlılığı vardır.
- Açtığınız tüm etiketleri kapatmalısınız.
- Eğer boş bir etiketiniz varsa yani içinde veri bulunmaycaksa “/” işaretini kullanarak kapatabilirsiniz.
- İlk açılan etiket en son kapatılır yani etiketler için iç içe geçmiş nested bir yapı mevcuttur.
- Tüm özellikleri (attributes) “” (çift tırnak) arasında yazmalıyız.
- Etiket olarak XML, xml , Xml , xML gibi XML’i ifaden sözcükleri kullanamayız. Bu kelimelerin kullanımı yasaktır çünkü bu XML kelimesi farklı bir amaç için ayrılmıştır. Zaten gerek de yok kullanmaya
- Etiket adları bir harf ile başlayıp, harf veya rakam ile devam edebilir. Ama temel şart harf ile başlamasıdır.
- Ayrıca aşağıdaki karakterler yerine XML standartalarına uygun olan versiyonlarını kullanmalıyız.

Son maddeye özellikle dikkat etmenizi istiyorum. İleride hazırlayacağınız XML belgesini bir ayrıştırıcı tarafından ayrıştırmaya kalkınca bununla ilgili sorunlarla karşılaşabiliyorsunuz. Ara projemde kullanıcının bir arayüz ile girdiği verileri işlemlerin sonunda bir XML belgesi olarak kaydediyordum fakat burada hep bu karakter dönüşümlerini unuttuğum için başım çok ağrımıştı. Ben ettim siz etmeyin diyorum
Bu gibi karakerlerin XML begesinden hariç olarak değerlendirilmesi için CDATA alanları oluşturabilirsiniz (CDATA alanları ayrıştırıcılar tarafından değerlendirilmez). CDATA kullanımı ise şu şekilde oluyor:

Yukarıda değindiğimiz kuralları şu örnek üzerinde inceleyelim:


Öncelikle xml version… diye başlayan etiketimize bakalım. Sanırım bu size neden etiket adı olarak XML, xml, XML gibi kelimeleri kullanamayacağımızı açıklamıştır. O etiketin bir de özelliği var ve encoding=”UTF-8″ olarak belirtilmiş. Buna her zaman ihtiyacınız olmayabilir. Özellikle uygulamayı siz geliştiriyor ve XML belgesini siz kullanıyorsanız encoding konusu sizin için çok sorun olmayacaktır fakat hazırladığınız XML belgesi başkaları tarafından kullanılacaksa hangi karakter kodlamasının kullanıldığını belirtmekte fayda var. Meselâ ben kendi bloguma MYNET haberleri eklemek istemiştim ve bir RSS öğesi ekledim fakat bir de baktım Türkçe karakterler bozuk çıkıyor. Sonradan anladımki Wordpress’in RSS okuyucusu gelen belgeyi UTF-8 ile kodlanmış sanıp ona göre okuyordu.
Bu örneğimizde kök (root) elemanımız “Arabalar” ve görüldüğü gibi başka da kök eleman yok. Kök elemanın altında da “yazararabalari” , “okuyucuarabalari” ve “yarisarabalari” olmak üzere 3 alt eleman bulunuyor. Bunlara yabancı kaynaklarda “child element” dendiğini de görebilirsiniz.
“Yazararabalari” elemanının altında 3 farklı eleman daha bulunuyor. Burada bir konuya dikkat çekmek istiyorum. Ben örneğimde XML belgesindeki büyük-küçük harf duyarlılığını vurgulamak için etiket adlarını büyüklü-küçüklü yazdım fakat sizler bundan kaçının. Size tavsiyem belgenizi tamamen küçük harflerden oluşturun. Bu şekilde hem uygulamanız içerisinde XML’den okuduğunuz değeri büyük-küçük harf işlemleriyle perişan etmemiş olursunuz hem de uygulama performansınızı da düşürmemiş olursunuz.
“Okuyucuarabaları” adındaki etiketimiz için herhangi bir alt dal bulunmadığı için “/” kullanarak hemen açtığımız yerde kapattık, buna da dikkat etmelisiniz. Ayrıca kök etiketimize bir açıklama ekledim. Sizler de açıklamanızı yukarıdaki etiketlerin arasına alarak istediğiniz yere ekleyebilirsiniz. Dikkat etmeniz gereken son nokta da yasak karakterleri ne şekilde kullandığımızla ilgili.
Tüm bu kurallara uyarak WELL-FORMED bir XML belgesi oluşturmuş olduk yani yazım kurallarına uyan doğru bir XML belgemiz var artık. Mesela bu belgeyi, kullandığınız web tarayıcısı ile sorunsuzca açabilirsiniz.
Sanırım aklınıza “hangi araçları kullanarak yapıcam bu işi” gibi bir soru geldi. Başımızın tacı NOTEPAD ile bunları yapıp .xml uzantısı ile kaydetmeniz yeterli. Fakat her zaman XML belgesiyle çalışmak bu kadar kolay olmayacaktır. Bir de işin içine DTD, SCHEMA gibi kavramlar girince veya belgenin boyutu büyüyünce Notepad yeterli olmayabilir.
Örneğin ben yukarıdaki ekran görüntülerini ALTOVA XMLSPY adlı üründen aldım. Gerçekten XML ile ciddi işler yapıyorsanız vazgeçilmez bir araç. Zaten ALTOVA firması XML konusunda uzman bir firma. Yazılımın deneme sürümünü mutlaka indirip denemelisiniz. Fakat bu araç ücretli olduğu için sizlere ücretsiz çözümler de önermem gerekiyor.
Ücretsiz olarak aklıma ilk gelen ürün More Motion XML Editor aracı. Bu ürün Altova XMLSPY kadar olmasa da iş görebilecek nitelikte. Özellikle giriş seviyesindeki kullanıcılar için ideal. Kurulum gerektirmiyor ve yazıyı formatlayıp daha okunabilir bir hale getirebiliyor. Hem de yerli bir firma tarafından üretilmiş bir ürün.
XML belgeleriye çalışmak için kullanabileceğiniz diğer araçlar ise şu şekilde:
Eğer sizlerin de bunlar dışında kullandığı araçlar varsa yazının altına yorum olarak ekleyip bizlerle paylaşabilirsiniz. Bu yazımızda WELL-FORMED yani yazım kurallarına uyan bir XML belgesini ne şekilde oluşturacağımız gördük. Size tavsiyem eğer XML ile yeni tanışıyorsanız belgelerinizi önce NOTEPAD ile hazırlayın, daha sonra da yukarıda adı geçen araçları kullanarak kurallara uygun yazıp yazmadığınızı kontrol edin. Bu sayede hem pratikliğiniz artacak hem de kuralları daha iyi kavramış olacaksınız.
Sabırla okuduğunuz için teşekkürler. Bir başka XML yazısında görüşenceye dek hoşçakalın…
NOT: Örneklerde geçen kişiler ve sahip oldukları araçlar tamamen hayal ürünüdür. Hiçbir şekilde gerçeği yansıtmamaktadır
Toplamda 4506 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 5 kişi aynı anda okumuş.
Bugün 6 kez okunmuş.
Etiketler: XML
Trackback Yorumları takip et Baskı Önizleme


(26 oy, ortalama 3.81)
# eburhan | 17 Şubat 2007, 16:14
Eğer XML dosyası üzerinde ciddi ciddi çalışacaksam program olarak XMLPad kullanıyorum. Ücretsiz bir program fakat güzel özellikleri var. Kullanışlı bir XML Schema editörü var. Şemaları diagram şeklinde de görebiliyorsun. DTD, XSL ve hatta RSS 2.0 dosyaları oluşturabiliyorsun. Bence bir dene ibrahim
- Özellikleri
- Ekran görüntüleri
- Download sayfası
# ibrahim | 17 Şubat 2007, 18:20
@eburhan Teşekkürler bir deneyeyim bakalım nasılmış. Ekran görüntülerine bakınca Altova XMLSPY’ a benzettim. ayrıca altova firmasının çok daha karmaşık ALL IN ONE dediğimiz çözümleri de mevcut ama bu kadar abartıya gerek var mı bilemem.
Aracmızı htiyaçlarımıza göre seçmek daima iyidir. Mesela .net ile uygulama geliştirenler için de Visual Studio içindeki XML Editörü yeterli olacaktır.
Arkadaşlara tavsiyem öğrenmekle vakit kaybetmeyecekleri bir editör seçip bol bol uygulama yapmalarıdır.
Kolay gelsin
# cemil | 20 Şubat 2007, 08:46
Benim bir sorum olacak. RSS’de kullanmak için XML yazıyoruz. XML dosyaları PHP veya ASP gibi programlarla programlanıp otomatik oluşturulan dosyalar mı? Aksi halde ise; çok sık güncellenen içeriğe sahip bir sitenin birde XML dosyasına verilerinin yazılması çok zor olmaz mı?
# eburhan | 20 Şubat 2007, 10:23
XML dosyaları text dosyalarıdır. İstediğin gibi oluşturabilirsin. Fakat RSS gibi içeriği sık güncellenen XML dosyalarını elbette ASP veya PHP kullanarak otomatik oluşturmak akıllıca olacaktır.
# ibrahim | 20 Şubat 2007, 23:46
@cemil. Eburhan’ın dediği gibi bu işi otomatiğe bağlayacak bir mekanizma yaratman lazım. Zaten asp,php ile dosya işlemleri yapabiliyorsan bu da pek sorun olmayaaktır.
Yaptığın işe göre ve RSS içeriğine göre olayın akışını da değiştirebilirin. Mesela bir arayüz yazarsın ( basit bir masaüstü uygulaması bile olabilir yada arayüze de gerek yok bu iş için hazır araçlar var) bilgileri xml olarak (rss amaçlı) kaydedersin , siten ise buradan okuyup günceller bilgini böylece önce xml’i güncellersen ,site otomatik güncellenmiş olur.
Bu da benden farklı bir bakış açısı ama dediğim gibi RSS’in içeriğine göre mantık değişebilir
Kolay gelsin
# erkan | 03 Mart 2007, 15:24
İbrahim gene güzel bir yazı ,XSL hakkında da bir yazı bekliyoruz senden .
# murat | 08 Eylül 2007, 10:13
ibrahim kardeş ağzına sağlık bilgilendirmenden dolayı benim elimde bi xml dosyası var ve ben bunun içindeki verileri c# a almak istiyorum iç içe olan elementleri almakta sorunum var yapamadım ( arabalar / yazar arabaları / araba1 gibi senin örneğindeki)bilgin varsa bu konu hakkında benişde bilgilendirirsen sevinirim örnek varsa elinde çok sevinirim
# ugur | 14 Eylül 2007, 15:45
Merhaba arkadaşlar.Öncelikle Böyle bir siteyi yaptıgınız ve bu şekilde bir hizmet verdiğiniz için teşekkür ediyorum.Benim sorum ise şöyle.Tam mantıgını anlamak ve artık dinamik olarak kullanmak için soruyorum.Asp ile haber’leri kaydediyorum veritabanına.Bunu aynı zamanda haberler.xml dosyam’a da nasıl kaydetebilirim.Ve Bunu yaptıktan sonra Ben de işte Son Dakika Haberleri diye rss oluşturup bu xml’dosyamı kullanıcının tarayıcısına ekleyip o şekilde o kuyabildiği şekle nasıl dönüştüreceğmi de söylersiniz cok iyi olur.Ben ce bunlar çoğu kişinin akılnda olanlar ve yapmak istedikleri bir uygulama olsa gerek.Şimdikten Teşekkkürler.
# elektron | 23 Ekim 2007, 02:37
Bu da bitti
Allah razı olsun…
# KarayelBY | 06 Aralık 2007, 12:01
Web tasarımı konusunda sürekli kendimi geliştirmeye çalışıyorum. Ajax’ı okuyup öğrendikçe, bugüne kadar yaptığım sitelerde gereksiz uğraşlar olduğunu görüyorum.
kayıt işlemi, silme işlemi güncelleme işlemi gibi bi çok kısa iş gerektiren işlemler için ayrı sayfalarla uğraşarak, tüm sayfanında yenilenmesine sebep oluyordum.
dün gece bi arkadaşın tavsiyesiyle ajax, web2.0, web3.0 gibi şeyleri araştımaya bşladım. Sabah kalkar kalkmazda burdaki, makaleleri okumaya devam ettim. Çok faydalı makaleler var. bu XML makalesinide bitirdim. diğer makalelere devam…
Bu arada, Web tasarımı konusunda bilmem gereken başka hangi teknolojiler var. bunlar hakkında bilgi verirseniz sevinirim. Teşekkürler…
# emre alparslan | 19 Nisan 2008, 17:37
Peki hocam XML de search nasıl oluyor.asp de sql komutu ile search yapabiliyoruz.xml in böyle imkanları varmı.