XML ibrahim
Merhabalar Arkadaşlar. Yazının başlığından da anlayabileceğiniz gibi sizlere XML hakkında önemli bilgiler veren bir yazı dizisi sunacağım. Bu yazı da serinin ilk yazısı olacak. AJAX-TR‘ de XML’ in konu olarak yer almasının temel nedeni AJAX ile uygulama geliştirirken sizlere XML bilgisinin de lâzım olacak olmasıdır. Ayrıca sadece bu alanda değil uygulama geliştireceğiniz pek çok alanda XML’den faydalanabilirsiniz. Günden güne popülerliği artan XML’in neden bu kadar önemli olduğunu öğrenmek istiyorsanız öncelikle XML NEDİR (NEDEN BU KADAR ÖNEMLİ) başlıklı yazımı okumanızı tavsiye ederim. Bu yazıda ise XML’in önemini bir kaç örnekle tekrar açıklayıp daha sonra kullanım mantığını anlatmaya çalışcağım.
Öncelikle XML’e ihtiyaç duyabileceğiniz bir senaryo üzerinden gidelim. Diyelimki siz bir araba üreticisisiniz. Fakat araba üretmek için farklı firmalardan parça alıyorsunuz. Tekerleği A firmasından, camları B firmasından, müzik sistemini C firmasından, ısıtma sistemini de D firmasından aldığınızı düşünelim. Müşterilerinize sunacağınız üretim planınız dolayısıyla bu firmalara bağlı. Peki her defasında arayıp onlardan stok vs. hakkında bilgi almanız uygun olur mu? Elbette olmaz. O zaman onlardan verilerini paylaşmalarını isteyeceksiniz. Buraya kadar herşey güzel. Peki veri paylaşım işi ne şekilde yapılacak?
Hemen aklınıza “veritabanı yönetim sistemine erişsinler” gibi bir çözüm gelebilir. Bu yaklaşım belki bir yere kadar doğru. Ama düşününki tüm üreticiler farklı veritabanı yönetim sistemleri kullanıyor, bu veritabanı yönetim sistemleri de verileri farklı tipte tutuyorlar. Her biri için uygulamanızda farklı çözümler üretmeniz gerekecek. Ayrıca güvenlik, performans, ölçeklenebilirlik ve erişim yönetimi gibi konularda da düzenlemeler getirilmeli.
Demekki ortak bir standart oluşturulup veriler o şekilde paylaşılmalı. İşte XML burada devreye geriyor. Kendi standartınızı tanımlama imkanına sahipsiniz. Belki bir yerlerde okumuşsunuzdur ; XML için bir meta-dildir derler. Yani kendi tanımlamanızı yapmanıza , kendi standardınızı oluşturmanıza imkan verir. Bu örnek bir B2B (BUSINESS TO BUSINESS) uygulama örneğiydi.
Başka bir örnekle yolumuza devam edelim. Bu örnekte ise XML altında farklı bilgileri birbirlerine karıştırmadan tutabilme imkanımızdan bahsedeyim. Düşünün ki bir masaüstü uygulaması geliştirdiniz ve bu uygulamanıza 12 farklı dilde dil desteği eklemek istediniz. Genelde izlenen yol şudur: Uygulamanın olduğu dizinin içine Lang adında bir dizin yaratılır oraya da 12 adet metin dosyası koyulur ve içlerinde farklı dillerdeki çeviriler tutulur. Siz de uygulama menüsünden ilgili dili seçersiniz ve uygulama artık o dile ait dosyayı kullanır. Güzel bir çözüm gibi görünüyor. Peki daha iyisi olabilir mi? XML kullanırsanız olur
Her dil için farklı etiketler tanımlayıp bu etiketlerin arasına çevirileri yerleştirirseniz tek bir XML belgesi ile işi halletmiş olursunuz. Ne gibi bir avantaj elde ettik diye soruyorsanız hemen söyleyeyim. Bu yapı daha hızlı çalışacaktır. Ayrıca tek bir dosya olduğu için yönetimi daha kolaydır. Ya da farklı kelimeler eklemek istediğinizde daha rahat güncelleme yapabilirsiniz. Hatta buradaki çevirleri farklı uygulamalar için de kullanılabilir kılmış olursunuz.
Özetleyecek olursak XML önemli bir teknoloji ve çoğu uygulamada kullanmak faydalı olacaktır. Yapılan testlerde de çoğu zaman bir veritabanından daha hızlı cevap verdiği görülmüştür. Eğer işlemleriniz uygunsa verilerinizi XML içinde tutarak hosting firmanıza bir de veritabanı yönetim sistemi için para ödemekten de kurtulmuş olursunuz. Fakat bir noktanın altını çizmek istiyorum. Asla XML bir veritabanı yönetim sistemi gibi yetenekli olamaz. XML veriyi sadece saklar ama veritabanı yönetim sistemleri bu verileri kullanarak çok daha detaylı işlemler yapabilirler. O nedenle XML mi yoksa Veritabanı Yönetim Sistem mi kullanayım gibi bir soru aklınıza gelirse, sizlere tavsiyem ihtiyaç analizlerinizi iyi yapmanız yönünde olacaktır. Ayrıca artık çoğu Veritabanı Yönetim Sistemi XML’i bir veri yapısı olarak desteklemektedir. Bunu da göz önünde bulundurmalısınız.
Sanırım yukarıda yazdıklarım XML’ in faydalarını ve getirilerini anlamanız için yeterli olmuştur. Şimdi de XML ve etiketleme işlemi hakkında birşeyler söylemek istiyorum. Etiketler burada bizlerin düzenli bir yapıya kavuşmasını sağlıyor. Mesela siz bir kıyafetinizi götürüp buzdolabına koyar mısınız? Ya da yiyeceklerinizi kıyafet dolabında saklar mısınız? Umarım yapmıyorsunuzdur
İşte XML’de tanımlayacağımız etiketler neyin nereye ait olduğunu belirtmek için kullanılır. Bu durumu XML kullanarak anlatmak istersek şöyle birşey yapabiliriz: (Yazım kuralları ile ilgilenmeyip mantığa yoğunlaşın)

Bu yapı ile artık bize “gömlek” lazım olduğunda buzdolabına boşu boşuna bakmayacağız. Kıyafet dolabına gidip oradan da gömleklere ulaşabiliriz.
Konunun pekişmesi için başka bir örnek daha verelim. Düşünelim ki veritabanımızda tablolarımız var ve orada AJAX-TRyazarlarına ait bilgileri tutuyoruz. Biz bu yapıyı XML’e taşımak istersek şöyle bir hiyerarşi oluşturabiliriz.


Bu örneği yazınca ne kadar açıklayıcı bir örnek verdiğimi düşündüm. Nedenine gelince: Burada ben etiketleme kullanmamış olsaydım ve Erhan’ın doğum tarihini öğrenmek isteseydim bana 2 adet doğum tarihi bilgisi gelirdi. Çünkü 2 tane Erhan var. Fakat bunların hangisinin hangi Erhan’a ait olduğunu tespit etmem güçleşirdi. Bu yapıda ise doğum tarihi gelen kişinin, soyadını da öğrenebilme şansımız var. Bu sayede hangi doğum tarihi hangi yazara ait bilebiliriz.
XML ile ilgili örenkleri çoğaltmak mümkün. Sizler de ev adresinizi XML yapısı ile ifade etmek isteseniz nasıl bir hiyerarşi kuracağınızı düşünerek bu konuyu pekiştirebilirsiniz. Burada dikkat etmeniz gereken oluşturduğunuz yapının OKUNABİLİR (HUMAN READABLE) olmasıdır. Yani sizin XML ile ifade ettiğiniz adresinizi ben açıp baktığımda anlayabilmeliyim. Zaten amaç bilgiyi paylaşmaksa burada okunabilirlikten vazgeçemeyiz. Yine aynı şekilde mümkün olduğunca basit hiyerarşiler oluşturmalısınız. Yani ayrıştırmak ve bu XML’i kullanarak uygulama geliştirmek kolay olmalıdır. Son olarak da size tavsiyem etiket adlarınızı mümkün olduğunca açıklayıcı seçmeniz. Burada kendinize göre kurallar oluşturabilirsiniz. Ama etikelerinizi adlandırırken mutlaka daha sonra da açıp bakınca anlayabileceğiniz şekilde isimler seçin.
XML ile tanışmanızı ve mantığını anlamanızı hedeflediğim yazım şimdilik bu kadar. Bir sonraki yazıda ise sizlere XML’in dil kurallarından ve XML belgelerinizi hazırlamakta kullanabileceğiniz araçlardan bahsedeceğim.
Sabırla okuduğunuz için teşekkürler …
Toplamda 5572 kez okunmuş.
Şu an 1 kişi okuyor.
En fazla 34 kişi aynı anda okumuş.
Bugün 3 kez okunmuş.
Etiketler: baslangic, veritabani, XML
Trackback Yorumları takip et Baskı Önizleme

(22 oy, ortalama 4.27)
# Eray | 06 Şubat 2007, 17:38
Güze bir yazı olmuş..Sağolun
# tom | 07 Şubat 2007, 13:10
image ler gözükmüyo localhost yazıyo özelliklerinde linki değiştirseniz iyiolur yararlı bilgiler içinse teşekkürler…
# yakuter | 07 Şubat 2007, 13:12
Resimleri şimdi düzelttik
İbrahim gerçekten çok güzel ve açıklayıcı bir yazı olmuş . Örneklerin gerçek hayattan seçilmesi XML’in önemini daha da bir vurgulamış. Ellerine sağlık…
# ibrahim | 07 Şubat 2007, 14:09
Resimleri düzelttiği için Yakuter’e teşekkürlerimi sunuyorum.
Yazılarda kendime artık bir ilke edindim o da mümkün olduğunca gerçek hayat deneyimlerine ve kişisel görüşlerime yer vermek. Çünkü burada yazılanları insanların gelip okuması için bir nedenleri olmalı diye düşünüyorum.
Benim için hadi alın şunu kurun şunları yazın ohh oldu bitti XML demek çok daha kolay ama önemli olan bence XML’i doğru yerde ve doğru şekilde kullanmak.Sadece XML değil tüm teknolojileri. Eğer elinizdeki teknolojinin yeteknelerini ve limitlerini iyi bilmezseniz o size faydadan çok zarar getirir.
O nedenle yazılarda “acaba şöyle olsa nasıl olur” , ”bunu yaprsanız şöyle olur ” gibi görüşlerimi de ekleyeceğim.
Elbetteki benim dediğim her zaman doğru değildir.Sizler daha yaratıcı fikirlere sahip olabilirsiniz. Onları da yorumlar şeklinde dile getirirseniz hep birlikte doğru bir karar verebiliriz.
Yazılanlara karşı olan yada şu şekilde olur mu gibi sorusu olanlar lütfen buraya yazsın . Sitedeki yazarlar olarak temel hedefimiz yazılanların iyice sindirilmesi yönünde.
Sabırla okuyan ve bu yazıyı yayınlamamda emeği geçen (ERHANs)
herkese teşekkürler
# cemil | 11 Şubat 2007, 16:50
XML’in temelini ve mantığını anladığımı düşünüyorum. Fakat br proje de XML’in kullanılış biçimi, projede meydana getirdiği etkileri gibi konulara açıklık getirirseniz sevinirim. İsteklerim abes ise mazur görün XML sürekli duyduğum öğrenmek istediğim fakat bir türlü giriş yapamadığım bir konuydu. PHP, AJAX, Javascript, Mysql ile ortak kulannılabilen bir dil mi? Yoksa RSS beslemelerinde kullanılan bir dil mi?
Açıkçası tek soruyla bana uygun en iyi cevabın bulunabilineceği kanaatindeyim. Bir proje esnasında XML’in projenin hangi aşamalarında bize faydalı olabileceği konusunda bir bilgi verebilirseniz konuyu daha iyi anlayabileceğim. Cevap için şimdiden makale için ise önceden teşekkür ederim.
# ibrahim | 11 Şubat 2007, 19:50
@cemil Merhablar;
Öncelikle isteklerinizde abselik yok.Hatta çok memnun oluyorum okuyucuların konuya ilgi gösterip soru sormasına.
Aslında ben yazı içinde pek çok örnekte açıkladığımı düşünüyordum.
Yine onlar üzerinden tekrardan ele alayım.
İlk örnek bir iş uygulması. Böyle bir uygulamada XML kullanmak sizi öncelikle veritabanı bağlantısı gibi bir maliyetten kurtaracaktır.XML içerisindeki herşey metin yada uygulama bazında baktığınızda STRING formatında olduğu için tip uyumsuzluğu yaşanmayacktır. Sen oradan veriyi alırsın , uygulamanda istediğin yapıya çevirip kullanırsın.
Diğer örnekte de dil desteği olan bir uygulamadan bahsetmiştim burada tek bir dosya içinde bir kelimenin farklı dillerdeki çevirilerini tutabilirsiniz demiştim. Bunu normal bir text ile de yaparsınız ama hata oluşması çok büyük bir olasılıkıtr. İlerleyen konularda XML üzerinde denetim yapmayı sağlayan DTD ve SCHEMA kavramlarını da anlatınca dentimin önemini daha rahat anlayabilirsiniz.
XML text yapısında olduğu için hızlıca işlenebilir ve her dilde çalışabilirsiniz. Mesela siz uygulmanızın bir kısmında c ile yazıyor bir kısmında C# ile kod yazıyor olun. Bir veritabanı kullansanız sizce C ile bağlantı kurmak kolay olacakmıdır? Ama metin tabanlı bir dosyayı tüm diller ile işleyebilirsiniz.
Yada bir web uygulması geliştirdiniz. Veritabanı bağlantı bilgilerinizi uygulama içine gömmek sizce akıllıca bir davranış mıdır?Elbette değildir. Mutlaka parametrik yapmalısınızki veritabanının port ,ip yada kullanıcı giriş bilgileri değiştiğinde uygulmayı tekrdan derleme yada açıp içini dğiştirme sorunuyla karşılaşmayın. Bunun için bir dosyaya yazmak en akıllıcası ve XML burada yine devreye giriyor. Mesela ASP.NET uygulamalrında default olarak Web.config dosyası oluşturulur ve bu da XML yapısındadır.
Örnekleri çoğlatmak adına kendi yaptığım bir projeden de örnek vereyim. Bir arama motoru uygulması yapacaktık ve bizlere verilen html sayfalarında geçen farklı kelimleri indekslememiz gerekti. Önce SQL SERVER 2005 ile bunları indexledik , bu saydece aynı kelimlerin elenmesi, girilen kelimlerin düzenlenmesi gibi işlemler çok kolay bir şekilde halledildi fakat iş bu kelimler içinde arama yapmaya gelince gördükki pek de hızlı olmuyor bu iş. Sonra burdaki kelimleri etiketli bir şekilde XML dosyaysına kaydettik ve uygulamamız kat kat hızlandı.
Ayrıca artık çoğu dil için XML işlemek üzere (yazma,okuma arama vs) pek çok API var ve sizin basit bir text dosyaysıyla çalışmak için yapacağınız kodlardan daha optimize çalışıyor.Bu nedenle artık standart text yerine XML kullanmak daha akıllıca bence.
Örnekleri çoğaltmak mümkün. Standart text dosyasıyla yaptığınız tüm işleri XML ile yapabilirsiniz.
Eğer aklnızda belirgin bir örnek varsa yazın burada tartışalım. Acaba sizin örneğiniz için XML uygun mu? Burada XML’in özellikle de büyük projelerde getirilerinin büyük olduğunu söyleyebilirim.
Kolay Gelsin
# erkan | 01 Mart 2007, 03:16
Emeğin için teşekkürler. Şimdi zor kısım devamını getirmekte İbrahim kardeşim. İlgiyle izliyoruz, kolay gelsin .
# sevgi | 30 Mart 2007, 08:34
offf ya ben hala bişi anlamış değilim xml hakkında
# Habip OĞUZ | 17 Nisan 2007, 02:19
Teşekkür ederim. AJAX ve XML için doğru yerden başladığıma sevindim!
# selant | 05 Mayıs 2007, 23:38
Ben XML’i sanki en basit düzeydeki bir veritabanı olarak görüyorum. Gerçi SQL veritabanlarından PHP veya ASP kullanılarak XML export yapılabildiğini de anımsıyorum. Doğru bir yaklaşım mı ?
# ibrahim | 13 Mayıs 2007, 19:51
@Seltan
XML ‘de bir veritabanı gibi verileri sakladığımız bir veri kaynağı. Ortak tek yanları bu. Bunun dışında ise güvenlik,erişim,performans,veriyi saklama yöntemleri vs. bakımından apayrı yapılar.
Bir veritabanındaki verileri XML ‘e esport etme şansımız vardır. Hatta bunu SQL sorgularıyla da yapabilmek mümkündür.
Fırsat olursa verdiğim bir seminerdeki XML sunumlarımı burada paylaşacağım.
Kolay gelsin
# selant | 17 Mayıs 2007, 23:07
ibrahim bey, aydınlatıcı bilgiler için teşekkür ederim.. Aslında XML’in yapısı benim çok işime yarayabilir diye tahmin ediyorum çünkü bilgi işlemciliğin yanı sıra emlakçılık işiyle uğraşıyorum ve yurtdışında emlak veritabanımızdan yararlanması gereken 20 den fazla acentamız var, herbiri bağımsız ve web siteleri farklı ancak herkes merkezimizdeki emlak bilgilerini kullanıyor. Bu sebeple tek bir SQL veritabanından emlak bilgilerini ve hatta resim linklerini belirlediğim şablonda xml export ederek tek bir link ile tüm acentalara vermeyi düşünüyorum. Tabi bu şimdilik sadece bir hayal
# ibrahim | 19 Mayıs 2007, 11:16
@selant
XML bu hayaliniz için gayet uygun. Aynı veriler farklı uygulamalarca kullanılacaksa ortak bir paydada buluşmak gerekiyor. O nedenle xml kullanabilirsiniz.
Öte yandan emlakçılık sektöründe verilerin çoğunun metin formatında olduğunu düşünürsek performans olarak da iyi sonuçlar alırsınız.
Kolay gelsin
# deniz | 08 Temmuz 2007, 01:51
burayıda sonuna kadar dikkatle okudum ellerinize sağlık makaleler çok hoş çok kullanışlı olduğu görünüyor acemi olmak bilgisiz olmak nekadar zor hep bize birilerinin sorduğumuz şeylere cevap verip vermeyeceğini düşünüyorsunuz ne ise ben bu konuda bir merekımı henüz bu makaleyi atlamadan sormak istedim diyelimki benim sitem bir haber sitesi
ağaç doğru anlamış isem ;
BURDAbüyük ve küçük işaretini _ olarak kullanacağım
FALANCASİTE . com / xml ———- diye birlink mi olacak?
-anasayfa-
-iletisim- yazışın - /iletisim-
-haber-
-magazin-
-kadın- kadınlar -/kadın-
-erkek- erkekler -/erkek- ———ağacı böyle ellemi yazacağız
-/magazin-
-ekonomi- ekonomi haberleri -/ekonomi-
-/haber-
-/anasayfa-
ve bizim bu yazdıklarımız nasıl bi ortak dile dönüşmüş veya ben olayı kavrayamadımmı?
BUSORULARIM SAÇMA GELEBİLİR AMA BİLMİYORUM DAHA DİĞER MAKALELERİ OKUMADIM AMA ŞİMDİYE KADAR BÖYLE BİŞEYLER OLACAĞINI DÜŞÜNÜYORUM YANLIŞMIYIM ?
# yakuter | 08 Temmuz 2007, 02:00
Merhaba Deniz. En basit haliyle sana konuyu özetleyeyim. aslında XML’i bir programlama dili gibi değil de bir yazım formatı gibi düşün. Öyle bir yazım formatı ki tüm programlama dilleri (PHP, ASP, RUBY vs.) bu yazım formatını destekliyorlar ve daha da önemlisi aynı şekilde yorumluyorlar. Böylece bu formattaki bir değişken tüm programlama dillerine değişken olarak gönderilebiliyor. XML kısaca bundan ibaret.
Bir sitenin XML verisi için bir XML dosyası gereklidir. Bu XML dosyası sitenin içeriğinin belirli bir formatta biraraya getirilmesidir. Bu format XML formatıdır ve makaledeki örnekte gördüğün gibi oldukça sade ve basittir. Zaten evrensel olabilmesi için de böyle olması gerekir.
Bundan sonra XML makalelerini bu söylediğim mantıkla okursan daha iyi anlayabilir yorumlayabilirsin. Sorunu tam olarak anlayamadım ama umarım söylediklerim arasında ihtiyacın olan cevabı bulabilmişsindir.
# deniz | 10 Temmuz 2007, 00:31
Eyvallah üstadım gerçekden de makalelerin devamını okudukca güzel şeyler ortaya çıkdı şimdilik koymadım siteme henüzama bir site buldum sitenin xml ini çıkarıyor sende onu yüklüyorsun! olay basitve anlaşılırmış asp gibi yorumlanan fakat ortakbirdil verilerimizi ve sayfalarımızın yerini tespit eden bir haritateşekkür ediyorum cevaba
# ßerat | 21 Ağustos 2007, 13:37
eline sağlık güzel anlatmışsın tebrik ederim..
# murat | 08 Eylül 2007, 10:28
çok saolun anlattıklarınız için gerçekten çok yararlı oldu devamını bekliyoruz…:)
# mert meriç | 02 Ekim 2007, 16:00
merhaba,
peki bu girdileri sql komutları gibi çekmemiz mümkün mü? nasıl çekeceğiz?
mesela ben her ilde 10larca firmanın tanıtımını girdim.(baya yüklü bir text oluşacak)
onları da kullanıcının isteğine göre sunacağım diyelim. Ankara’da kileri seç göster dediğimde xml mi daha hızlı çekecektir ve sunacaktır bilgiyi yoksa sql mi?
ve bunu nasıl xml de çekeceğim select “firma_adi, firma_tarihi, firma_aciklama” from “firma.xml” where firm-il=”06″
gibi??
# firaton | 04 Ekim 2007, 00:22
Teşekürler,emeğinize sağlık…
# İbrahim | 04 Ekim 2007, 01:52
@ mert meriç.: Sorduğunuz sorunun cevabı XQuery içerisinde saklı. Artık kendine has sentaksından dolayı pek tercih edilmese de bir veritabanı için SQL ne ise XML dosyası için de XQuery odur.
http://www.w3schools.com/xquery/xquery_example.asp adresinden XQery örneklerini örneklerini görebilirsiniz.
“Bayaa yüklü bir text” cümlesi göreceli olduğu için doğrudan şu daha hızlıdır demek mümkün değil ama büyük veri setleri için bir veritabanı yönetim sisteminden faydalanmak daha akıllıca olacaktır özellikle de data exchange yapılmaycaksa. Öte yandan her ne kadar XQuery = SQL for XML desek de SQL kadar gelişmiş ve yetenekli olmadığını da unutmamak lazım.
XML mi Veritabanı mı sorusuna sorgulamayı ne şekilde yapacağımızı düşünerek değil de ihtiyaçlarımızı göz önüne alarak verirsek daha sağlıklı bir yaklaışım olacaktır.
Kolay gelsin.
# elektron | 23 Ekim 2007, 02:27
AJAX yazılarını en başından takip ediyorum birkaç saattir ve sonuna kadar gitmeyi düşünüyorum Allahın izniyle. Tüm yazılar gibi bu yazıda gerçekten harika. Allah razı olsun…
# Apollo | 02 Aralık 2007, 21:18
Ajax ı öğrenmeye başlamak için doğru adresi seçtiğime inanıyorum.
Site yöneticilerine, yazalara ve değerli yorumlarını bizlerle paylaşan üyelere teşekkür ederim.
# Alp | 04 Aralık 2007, 17:54
Güzel Bir Yazı Olmuş ama xml neden bu kadar önemli linki ölmüş
# Cihan | 27 Mart 2008, 12:12
Cok tesekkur ederim, guzel yazmissin eline saglik arkadas