| 
 ![[Floris Lambrechts]](../../common/images/Floris_Lambrechts.png)  tarafından  Floris Lambrechts
 <floris(at)linuxfocus.org>
 
 Yazar hakkında:
 
 Yıllardır LinuxFocus/Hollanda'nın baş editörlüğünü yapmaktayım.Leuven,
    Belçika'da 'elektronikte endüstri mühendisliği' çalışmaktayım ve zamanımı
    Linux, PHP, XML ve LinuxFocus ile uğraşarak geçirmekteyim
    , aynı zamanda Stephen Hawking ve Jef Raskin (şu anda -'Uygarlık Arayüzü')
    gibi yazarların kitaplarını okuyorum.
      
 Türkçe'ye çeviri:
 Ayşegül Kurşunlu <akursunlu(at)be.itu.edu.tr>
 
 İçerik:
 | 
 
XML'i Öğrenmek
 ![[Illustration: xml]](../../common/images/illustration242.png) 
Ö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!):
     <sentence>
       Benim <animal>kedi</animal>
    min adı <name>Eddy</name>dir.
     </sentence>
    Ş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 <etiket> bir kapanış
    </etiket>ine sahiptir. [ Not: Aralarında hiçbirşey olmadığında
    <etiket></etiket>
   yazmak çok anlamsız olacağından <etiket /> de yazabilirsiniz ve hayatınızdan birkaç dakikayı tasarruf etmiş
    olursunuz.]
    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:
   <B> Koyu yazı <I>Koyu ve
    italik yazı </B> italik yazı </I>
    Sözdizimi kuralları  </I> etiketini </B> 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
    <sentence> etiketleri koyduk. Bunlar olmadan,
    cümledeki bazı sözcükler etiketler arasında olmayacaktı, ve bu da, bir çok şey gibi XML
    sözdizimi polisini gerçekten çok kızdıracaktı. 
     
 
    
      Mozilla'nın sözdizimi polisi iş başında...
    
    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.
    (<sadece_bir_etiket> diye bir Docbook etiketi olduğunu varsayalım): 
     <dbk:sadece_bir_etiket> sadece bazı kelimeler
    </dbk:sadece_bir_etiket>
    İ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 Description 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 
  
 
Bu yazı için görüş bildiriminde bulunabilirsiniz
Her yazı kendi görüş bildirim sayfasına sahiptir. Bu sayfaya yorumlarınızı yazabilir ve diğer okuyucuların yorumlarına bakabilirsiniz.
2002-09-23, generated by lfparser version 2.31