XML'i Öğrenmek

ArticleCategory: [Artikel Kategorie]

Applications

AuthorImage:[Here we need a little image from you]

[Floris Lambrechts]

TranslationInfo:[Author and translation history]

original in en Floris Lambrechts

en to tr Ayşegül Kurşunlu

AboutTheAuthor:[Über den Autor]

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.

Abstract:[Here you write a little summary]

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 ;-)

ArticleIllustration:[This is the title picture for your article]

[Illustration: xml]

ArticleBody:[Der eigentliche Artikel]

Giriş

2001 yazında, bazı _LF_ 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 screenshot
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;

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