AJAX - XML’e Giriş



user warning: Table './mc_hanciorg/cache_form' is marked as crashed and last (automatic?) repair failed query: UPDATE cache_form SET data = 'a:21:{s:6:\"choice\";a:3:{s:5:\"#type\";s:6:\"radios\";s:14:\"#default_value\";i:-1;s:8:\"#options\";a:7:{i:0;s:35:\"Sitede var olan içerik ve yazılar\";i:1;s:38:\"Sitenin görsel tasarımı ve renkleri\";i:2;s:54:\"Ziyaretçinin siteye yazılar ekleyip yorumlayabilmesi\";i:3;s:46:\"Sitenin adresi ve arama motorunda listelenmesi\";i:4;s:73:\"İnsanların çok fazla ziyaret ediyor olması ve onlarla iletişim ağı\";i:5;s:44:\"Sitenin arkaplan yazılımı ve alt yapısı\";i:6;s:47:\"Ben farklı şeyler düşünüyorum yazacağım\";}}s:4:\"vote\";a:3:{s:5:\"#type\";s:6:\"submit\";s:6:\"#value\";s:6:\"Oy ver\";s:7:\"#submit\";a:1:{i:0;s:9:\"poll_vote\";}}s:5:\"#node\";O:8:\"stdClass\":37:{s:3:\"nid\";s:2:\"72\";s:4:\"type\";s:4:\"poll\";s:8:\"language\";s:2:\"tr\";s:3:\"uid\";s:1:\"1\";s:6:\"status\";s:1:\"1\";s:7:\"created\";s:10:\"1266655218\";s:7:\"changed\";s:10:\"1266655313\";s:7:\"comment\";s:1:\"2\";s:7:\"promote\";s:1:\"1\";s:8:\"moderate\";s:1:\"0\";s:6:\"sticky\";s:1:\"1\";s:4:\"tnid\";s:1:\"0\";s:9:\"translate\";s:1:\"0\";s:3:\"vid\";s:2:\"72\";s:12:\"revision_uid\";s:1:\"1\";s:5:\"title\";s:37:\"Web sitesinde hangisi daha önemlidir\";s:4:\"body\";s:0:\"\";s:6:\"teaser\";s:358:\"* Sitede var olan içerik ve yazılar\n* Sitenin görsel tasarımı ve renkleri\n* Ziyaretçinin siteye yazılar ekleyip yorumlayabilmesi\n* Sitenin adresi ve arama motorunda listelenmesi\n* İnsanların çok fazla ziyaret ediyor olması ve onlarla iletişim ağı\n* Sitenin arkaplan yazılımı ve alt yapısı\n* Ben farklı şeyler düşünüyorum yazacağım\n\";s:3:\"log\";s:0:\"\";s:18:\"revision_timestamp\";s:10:\"1266655313\";s:6:\"format\";s:1:\"0\";s:4:\"name\";s:5:\"hanci\";s:7:\"picture\";s:0:\"\";s:4:\"data\";s:120:\"a:3:{s:7:\"contact\";i:0;s:18:\"admin_compact_mode\";b:1;s:13:\"form_build_id\";s:37:\"form-5bb20dab86db6430977269d8df6a74bb\";}\";s:7:\"runtime\";s:1:\"0\";s:6:\"active\";s:1:\"1\";s:6:\"choice\";a:7:{i:0;a:3:{s:6:\"chtext\";s:35:\"Sitede var olan içerik ve yazılar\";s:7:\"chvotes\";s:4:\"5430\";s:7:\"chorder\";s:1:\"0\";}i:1;a:3:{s:6:\"chtext\";s:38:\"Sitenin görsel tasarımı ve renkleri\";s:7:\"chvotes\";s:3:\"307\";s:7:\"chorder\";s:1:\"1\";}i:2;a:3:{s:6:\"chtext\";s:54:\"Ziyaretçinin siteye yazılar ekleyip yorumlayabilmesi\";s:7:\"chvotes\";s:3:\"210\";s:7:\"chorder\";s:1:\"2\";}i:3;a:3:{s:6:\"chtext\";s:46:\"Sitenin adresi ve arama motorunda listelenmesi\";s:7:\"chvotes\";s:3:\"182\";s:7:\"chorder\";s:1:\"3\";}i:4;a:3:{s:6:\"chtext\";s:73:\"İnsanların çok fazla ziyaret ediyor olması ve onlarla iletişim ağı\";s:7:\"chvotes\";s:3:\"216\";s:7:\"chorder\";s:1:\"4\";}i:5;a:3:{s:6:\"chtext\";s:44:\"Sitenin arkaplan yazılımı ve alt yapısı\";s:7:\"chvotes\";s:3:\"207\";s:7:\"chorder\";s:1:\"5\";}i:6;a:3:{s:6:\"chtext\";s:47:\"Ben farklı şeyler düşünüyorum yazacağım\";s:7:\"chvotes\";s:3:\"412\";s:7:\"chorder\";s:1:\"6\";}}s:10:\"allowvotes\";b:1;s:4:\"vote\";i:-1;s:4:\"path\";s:47:\"anket/web-sitesinde-hangisi-daha-onemlidir.html\";s:22:\"last_comment_timestamp\";s:10:\"1266655218\";s:17:\"last_comment_name\";s:0:\"\";s:13:\"comment_count\";s:1:\"0\";s:8:\"taxonomy\";a:0:{}s:5:\"files\";a:0:{}s:8:\"readmore\";b:0;s:5:\"links\";a:3:{s:11:\"comment_add\";a:4:{s:5:\"title\";s:15:\"Yeni yorum ekle\";s:4:\"href\";s:16:\"comment/reply/72\";s:10:\"attributes\";a:1:{s:5:\"title\";s:31:\"Bu sayfaya yeni bir yorum ekle.\";}s:8:\"fragment\";s:12:\"comment-form\";}i:0;a:3:{s:5:\"title\";s:13:\"Eski anketler\";s:4:\"href\";s:4:\"poll\";s:10:\"attributes\";a:1:{s:5:\"title\";s:43:\"Sitedeki anketlerin listesini görüntüle.\";}}i:1;a:3:{s:5:\"title\";s:9:\"Sonuçlar\";s:4:\"href\";s:15:\"node/72/results\";s:10:\"attributes\";a:1:{s:5:\"title\";s:28:\"Güncel anketi görüntüle.\";}}}}s:6:\"#block\";b:1;s:6:\"#cache\";b:1;s:6:\"#theme\";s:9:\"poll_vote\";s:11:\"#parameters\";a:4:{i:0;s:16:\"poll_view_voting\";i:1;a:3:{s:7:\"storage\";N;s:9:\"submitted\";b:0;s:4:\"post\";a:0:{}}i:2;r:18;i:3;b:1;}s:9:\"#build_id\";s:37:\"form-e7ffc802a7d15c52c6ba052064469a94\";s:5:\"#type\";s:4:\"form\";s:11:\"#programmed\";b:0;s:13:\"form_build_id\";a:4:{s:5:\"#type\";s:6:\"hidden\";s:6:\"#value\";s:37:\"form-e7ffc802a7d15c52c6ba052064469a94\";s:3:\"#id\";s:37:\"form-e7ffc802a7d15c52c6ba052064469a94\";s:5:\"#name\";s:13:\"form_build_id\";}s:7:\"form_id\";a:3:{s:5:\"#type\";s:6:\"hidden\";s:6:\"#value\";s:16:\"poll_view_voting\";s:3:\"#id\";s:21:\"edit-poll-view-voting\";}s:3:\"#id\";s:16:\"poll-view-voting\";s:12:\"#description\";N;s:11:\"#attributes\";a:0:{}s:9:\"#required\";b:0;s:5:\"#tree\";b:0;s:8:\"#parents\";a:0:{}s:7:\"#method\";s:4:\"post\";s:7:\"#action\";s:36:\"/ajax-dersleri/ajax-xml-e-giris.html\";s:9:\"#validate\";a:1:{i:0;s:25:\"poll_view_voting_validate\";}}', created = 1563721085, expire = 1563742685, headers = '', serialized = 1 WHERE cid = 'form_form-e7ffc802a7d15c52c6ba052064469a94' in /home/hanci/domains/hanci.org/private_html/includes/cache.inc on line 112.

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.

Yeni yorum gönder

Bu alanın içeriği gizli tutulacak ve açıkta gösterilmeyecektir.
CAPTCHA
Aşağıdaki resimde yer alan karakterleri kutucuğa doğru olarak yazınız
Image CAPTCHA
Enter the characters shown in the image.

Anket

Web sitesinde hangisi daha önemlidir: