XML'i Öğrenmek
Özet:
Bu yazı, XML'in oldukça kısa bir tanıtımı olacaktır. Meta kedi Eddy, XML yazım polisi, ve bazı DTD'lerle tanışacaksınız. Endişelenmeyin, açıklayacağız ;-)
Giriş
2001 yazında, bazı LinuxFocus editörleri LSM sırasında Bordeaux'da biraraya geldiler. LSM'nin özel-ilgi-grubu dokümanlarındaki konuşmalar ve tartışmalar aynı konuyu işaret etmekteydi: XML. Uzun (ve eğlenceli) saatler, XML tam olarak nedir, ne için iyidir ve nasıl kullanılır sorularını açıklamaya yetti. Eğer ilgiliyseniz, bu makalenin de tartışmaya çalışacağı konular tam olarak bunlar olacaktır..
Egon Willighagen ve Jaime Villate'e beni XML'le tanıştırdıklarından dolayı teşekkür etmek istiyorum. Bu makale, bir şekilde Jaime'nin makalelerindeki bilgilere dayanmaktadır ve bunları aşağıdaki bağlantılarda bulabilirsiniz.
XML Nedir
Dokümantasyonla ilgilenen bizler, aşağı yukarı XML'in ne olduğunu biliyorduk. Her şeyden önce, sözdizimi HTML'e çok benzemekte ve o da SGML ve (yine) HTML gibi başka bir markup dili, değil mi? Doğru. Fakat daha fazlası var.
XML'in hemen hemen her şey için onu yararlı bir data formatı yapan bazı özellikleri var. Bir çok karmaşık şeyi açıklar gözükür, ve hala kolay okunurluğunu korur, ve programlar için ayrıştırılması kolaydır. Bu nasıl olabilir? Şimdi bu garip dili inceleyelim.
Eddy, meta kedisi
İlk önce, XML bir markup dilidir. Markup diliyle yazılan dökümanlar temel olarak iki şey içerir: veri, ve metaveri. Verinin tam olarak ne olduğunu biliyorsunuz, bundan sonra metaveriden ;) bahsedelim. Basitçe; metaveri verinin kendisine içerik veya anlam katan bir ek bilgidir. Basit bir örnek verirsek: bir cümle ele alalım 'Kedimin adı Eddy'dir'. Bir insan 'kedi'nin bir hayvan türünün, ve 'Eddy'nin de kedinin ismi olduğunu bilir.Fakat, bilgisayar programları, insan değildir ve bütün bunları bilemez.Bu yüzden bilgiye anlam katmak için metaveri kullanırız (Tabii ki XML sözdizimi ile!):
Benim
Şimdi bir bilgisayar bile 'kedi'nin bir tür, ve 'Eddie'nin de onun ismi olduğunu bilir. Eğer bütün isimlerin mavi, bütün türlerin kırmızı yazıldığı bir döküman elde etmek istersek, XML bunu bizim için gerçekten çok kolay hale getirir. Aşağıdaki sonucu elde ederiz:
Benim kedimin adı Eddydir.
Şimdi teorik olarak, biçim bilgisini (bu durumda renkler) sitil dosyası denilen ayrı bir dosyaya koyabiliriz. Bunu yaptığımızda, biçim bilgisini içerikten ayırmış oluruz, Holy Grail'in Web Tasarımı TM'de bahsettiği gibi. Şimdiye kadar özel hiçbirşey yapmadık, metaveri eklemek markup dillerinin tasarım nedenidir. Öyleyse XML'i bu kadar özel yapan nedir?
Sözdizimi Polisi
Herşeyden önce, XML çok kesin bir sözdizimine sahiptir. Örneğin, XML'de her
Bir başka kural da etiketleri karıştıramazsınız. Etiketleri açtığınız sıranın ters sırasında kapatmak zorundasınız. Şunun gibi birşey geçerli değildir:
Koyu yazı Koyu ve italik yazı italik yazı
Sözdizimi kuralları etiketini etiketinden önce kapatmamız gerektiğini söyler.
Ve dikkat, XML dökümanındaki her eleman etiketler arasında olmalıdır (en dıştaki iki etiket hariç tabii!). Bu nedenle, üstteki örnekte bir cümlenin çevresine
Fakat, güçlü bir polis gücünün avantajları vardır: düzeni sağlarlar. XML çok kesin sözdizimi kurallarına sahip olduğundan, programlar tarafından okunması çok kolay olur. Ayrıca XML dökümanlarındaki bilgiler oldukça yapısaldır, bu da insanlar tarafından okunup yazılmasını kolaylaştırır.
XML'in 'teorik' varlıklarının pratikte çok da fark edilmediği not edilmelidir. Örneğin, en güncel XML ayrıştırıcıları hızlı olmaktan çok uzaktır ve genellikle çok büyüktür. Bu yüzden görünen odur ki XML'in yazılım tarafından okunması çok kolay değildir. Burada şunu da söyleyelim ki sadece yapabildiğiniz için *herşeyi* XML'de yapmak hiç de iyi bir fikir değildir. İçinde birçok tarama yapmanız gereken dökümanlarda veya gerçekten çok büyük dökümanlara sahip olduğunuz uygulamalarda XML genellikle doğru seçim değildir. Fakat bu, bu durumlar için XML'i kullanmanın imkansız olduğu anlamına gelmez.
XML'in gücünü, aynı zamanda yavaşlığını gösteren güzel bir örnek, içinde veri tabanı yazabileceğiniz gerçeğidir. (bir de HTML'le deneyin! :p). Bu tam olarak Egon Willighagen'in Alman LinuxFocus bölümü için yaptığıdır, bu sistemle ilgili makalesi bu sayfanın sonundaki bağlantılarda bulunabilir. Hızın ötesinde, homebrew dosya formatının esnekliği ve genişletilebilirliği tercih edilmiştir ( mySQL).
XML'in kesin sözdizimini dikkate alınarak: sözdizimi denetçileriyle iyi arkadaş olursanız, o zaman polise sizin işinizin bir kısmını yaptırmanızın bazı yolları olabilir. Eğer böyle birşey yapmak istiyorsanız DTD kullanmanız gerekir. ...
DTD
Yukarıdaki 'Eddy meta-kedi' örneğinde, XML etiketlerini keşfettik. Tabii ki, böyle yaratıcı bir davranış polis güçleri tarafından hoş karşılanmaz! 'Mavi giysili adamlar' neyi, nasıl, ne zaman (eğer mümkünse) neden yaptığınızı bilmek isterler. Hiç sorun değil, DTD ile her şeyi açıklayabilirsiniz...
DTD yeni etiketler icat etmenize izin verir. Gerçekten de XML, XML sözdizimini takip ettiğiniz sürece yeni diller yaratmanıza izin verir.
DTD ( Document Type Definition), bir XML dilinin tanımını içeren bir dosyadır. O gerçekten, bütün olası etiketler, onların olası özellikleri ve bileşimlerinin listesidir. DTD, XML dilinde neyin mümkün olup, neyin mümkün olmadığını tarif eder. Bu yüzden 'XML dili'nden bahsederken, gerçekte belli bir DTD'den bahsediyor oluruz.
Polisi çalıştırmak
Bazen DTD sizi belli bir yerde belli birşey yapmaya zorlar . Örneğin, DTD sizi dökümanın başlığını içeren bir etiket eklemeye zorlayabilir. Bunun güzel tarafı, gerekli etiketleri otomatik olarak yazan bir yazılımın var olmasıdır (örneğin bir emacs modülü).
Bu yolla dökümanın bazı bölümleri otomatik olarak doldurulur. Sözdiziminin çok kesin ve iyi tanımlanmış olması nedeniyle, DTD tüm yazım işlemi boyunca size rehberlik eder. Ve ne zaman yanlış yaparsanız, bir sonlandırma etiketini unutmak gibi, polis sizi uyarır. Sonuçta size çok da kızmazlar; gerçek dünyadaki polislerin 'Sessiz kalma hakkına sahipsiniz' dedikleri gibi, XML polisi size arkadaşça 'Sözdizimi hatası satır xx : '... :) der.
Polis bu işin hepsini sizin için yaparken, tabii ki *siz* içerik üzerinde devam eder ve yoğunlaşırsınız.
Karışım
XML'in çok iyi son bir özelliği de birden fazla DTD'yi bir kerede kullanabilmesidir. Bu birçok değişik veri tiplerini aynı zamanda bir dökümanda kullanabileceğiniz anlamına gelir.
Bu 'karışım' xml isim boşlukları ile yapılır. Örneğin, .xml dökümanınıza Docbook DTD'yi ekleyebilirsiniz (bu örnekte 'dbk' eki kullanılır).
Böylece bütün Docbook etiketlerini dökümanınızda kullanabilirsiniz. (
İsim boşluğu sistemini kullanarak, herhangibir xml DTD'nin herhangibir etiketini ve özelliğini kullanabilirsiniz. Gelecek bölümde de göreceğiniz gibi bu pek çok seçeneğe açıktır...
Mevcut DTDler
Kullanılmakta olan DTD'lerin küçük bir kısmı şunlardır;
- Docbook-XML
Docbook kitap ve makale gibi yapısal dökümanlar yazmak için kullanılan bir dildir. Fakat daha farklı görevler için de kullanılır. Docbook, gerçekte SGML DTD'dir (SGML bir markup standartıdır), fakat onun -yaygın- bir XML türü de vardır. Bu en yaygın XML DTDlerinden biridir. - MathML
MathML ( Mathematical Markup Language), matematiksel ifade ve formülleri yazmakta kullanılan bir dildir. Matematik dünyasındaki insanlar için oldukça düzgün bir araçtır. Diğer taraftan kimyacıların matematikçi meslektaşlarını kıskanmaları gerekmez, onlar için de CML (Chemical Markup Language) vardır. Mozilla 1.0'ın şimdi default olarak MathML desteği bulunmaktadır. - RDF
RDF (Resource De******ion Framework). Metaveriyi şifreleme ve tekrar kullanmaya yardım etmek için tasarlanmıştır; pratikte sanaldoku yöreleri tarafından diğer yörelere hangi haberleri gösterdiklerini bildirmek için kullanılır. Örneğin, Alman sanaldoku yöresi linuxdot.nl.linux.org diğer sanaldoku yörelerinin RDF dosyalarını onların haber maddelerini göstermek için kullanır. En bilinen haber-yöreleri (Slashdot gibi), onların haber başlıklarını kendi sayfanıza kopyalayabileceğiniz RDF dosyaları bulundurur. - SOAP
SOAP (Simple Object Access Protocol). İşlemlerin birbirleriyle haberleşmek için kullandığı bir dildir (veri değiş-tokuşu ve yöntem çağırma ). SOAP'la, işlemler birbirleriyle uzaktan iletişim kurabilirler, örneğin. http protokolü üzerinden (internet). Sanırım LF'deki Atif bu konuda size daha çok şey söyleyebilir, bağlantılara bakın :-) - SVG
Scalable Vector Graphics. Üç boyutlu PNG, JPEG2000 ve SVG'nin web'deki gelecekteki görüntüleri şekillendireceği tahmin edilmektedir. PNG GIF'in rolünü alacaktır (saydam kayıpsız sıkıştırılmış bitmapler), ve JPEG2000 birgün bugünün .jpg'sinin yerine geçebilir (ayarlanabilir derecede kayıplı sıkıştırılmış bitmapler). SVG bitmap tabanlı değil vektör tabanlı bir görüntü formatıdır, bu da görüntünün piksellerle değil, matematiksel şekillerle temsil edildiği anlamına gelir (çizgiler, kareler,...). SVG'nin yazı yazma ve animasyon gibi işler için de fonksiyonları vardır , bu yüzden onu bir şekilde Macromedia'nın Flash'ı ile kıyaslayabilirsiniz. .svg dosyalarında JavaScript kullanabilirsiniz, ve JavaScript kullanarak, .svg kodu yazabilirsiniz. Gerçekten esnek, değil mi ?
Fakat svg oldukça yeni; şu anda sadece Adobe'da Windows & Mac platformları için yüksek kaliteli SVG tarayıcı plugini var. Mozilla gömülü SVG göstericisi üzerinde çalışmakta, fakat henüz tamamlanmış değil ve bunu kullanmak için tarayıcının özel bir şekilde derlenmiş versiyonunu indirmeniz gerekiyor.
NOT: .svg dosyaları oldukça yüklü hale gelebilir, bu da sıklıkla .svgz dosyaları ile karşılaşmanızın nedenidir. Bunlar gzip algoritması ile sıkıştırılmış versiyonlardır. - XHTML
XHTML, HTML sürüm 4.01'in XML versiyonudur. XML'in kesin sözdizimi nedeniyle, bazı değişiklikler vardır - HTML'de XHTML'de geçerli olmayan bazı şeyler yapabiliriz. Fakat diğer yandan, XHTML'de yazdığınız bir sayfa aynı zamanda geçerli bir HTML sayfasıdır. HTML tidy programı mevcut HTML sayfalarınızı XML'e dönüştürebilir. - Diğerleri
Birçok yeni dosya formatı, genellikle .gz or .zip sıkıştırmasıyla birlikte, XML kullanır . Sadece bir örnek: KOffice dosya formatarı XML DTD'leridir. Bu çok yararlıdır, çünkü kullanıcıya değişik uygulamaların fonksiyonelliğini bir dökümanda kullanma izni verir. Örneğin: içine KChart spreadsheet gömerek KWord dökümanı yazabilirsiniz.
Bağlantılar
W3C(World Wide Web Consortium)
XML, MathML, CML, RDF, SVG, SOAP, XHTML .... hakkında bilgiler içeriyor...
www.w3.org
Jaime Villate tarafından yazılmıştır (ilk ikisini okumak için bir online sözlüğe ihtiyaç duyacaksınız:)
XML'e giriş(İspanyolca)
XML'le nasıl HTML oluşturulur(İspanyolca)
LSM-slaytları
HTML tidy, program:
www.w3.org/People/Raggett/tidy
Docbook
www.docbook.org
Mozilla.org SVG projesi
www.mozilla.org/projects/svg
İlgili LinuxFocus makaleleri:
XML ve XSLT 'yi LinuxFocus.org(/Hollanda) kurmak için kullanmak
DocBook ile PDF dökümanları yaratmak
Hiç yorum yok:
Yorum Gönder