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
�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