|
Bu belge, HTML bilen kullanıcılara yönelik olarak yazılmıştır. HTML ve XML arasındaki benzerlikleri ve farklılıkları göstererek, XML mantığını temel seviyede göstermek için yazılmıştır. XML ile ilgili temel kavramları tanımlar, iyi şekillendirilmiş bir XML belgesinin özelliklerini, XML tanımları yaparken dikkat edilmesi gerekenleri basitçe anlatır.
Belge Künyesi
|
| Tanımlayıcı: |
xml1 |
| Başlık: |
Her Yönüyle XML ve Uygulamaları |
| Dil: |
Türkçe |
| Kodlama: |
ISO-8859-9 |
| Yazar: |
Ali AYEN (a2@aliayen.com) |
| Son Güncellenme: |
03/08/2003 |
| Güncellemeler: |
0.0 - 03/08/2003 - Ali AYEN |
1- Belgenin Amacı
Bu belge, HTML bilen kullanıcılara yönelik olarak yazılmıştır. HTML ve XML
arasındaki benzerlikleri ve farklılıkları göstererek, XML mantığını temel
seviyede göstermek için yazılmıştır. XML ile ilgili temel kavramları tanımlar,
iyi şekillendirilmiş bir XML belgesinin özelliklerini, XML tanımları yaparken
dikkat edilmesi gerekenleri basitçe anlatır.
2- Önbilgi ve Gereksinimler
Bu belge, okuyucunun HTML bildiğini varsayarak hazırlanmıştır. HTML bilmekten
kastım, tüm HTML etiketlerini ve kullanımlarını ezbere bilmek değil, HTML
in mantığını ve yazılıp çalıştırılmasını bilmektir. XML yazmak için üçüncü
programlar bulunmaktadır. Ancak Notepad (Visual Notepad :] ) fazlasıyla
yeterli bir programdır. XML dosyalarınızı yerel olarak denemek istiyorsanız
Microsoft Internet Explorer 5 ve üstü bir tarayıcı kullanabilirsiniz. XML
dosyalarının ayrıştırılması için bilgisayarınızda MSXML (Microsoft XML Core
Services) kurulu olması gerekmektedir. MSXML in bilgisayarınızda kurulu
olup olmadığını anlamak için:
http://alexfung.info/xml4test.htm
adresindeki testi uygulayabilirsiniz. Ayrıca xml-xsl uygulamalarınızı
denemek için:
http://download.microsoft.com/download/d/6/9/d69f1a03-7aab-4f6d-9c9b-3c30e8744086/iexmltls.exe
programını kullanabilirsiniz.
3- Yazar Notu
3.1- Yasal Sorumluluk Reddi
Bu belgede yazılanları uygulamak okuyucunun sorumluluğundadır. Yazara ulaşmak
için belirtilen e-posta adresini kullanabilirsiniz, ancak yazıdaki mantık
hataları ve/veya yazım hataları konuları dışındaki mesajlar göz ardı edilecektir.
(Yardım talepleri vs.) Bu belgede yazılanlardan doğacak herhangi bir hasardan
yazar sorumlu tutulamaz. Örnekler Microsoft Windows ortamında çalıştırılmıştır.
Belirtilen ipuçları bu sisteme aittir. Sizin sisteminiz farklı ise sisteme
bağlı ipuçları işinize yaramayabilir. Bu belgenin yayımı yazarına ve geliştiricilerine
herhangi bir sorumluluk getirmez. Kullanılacak programların lisansları okuyucunun
sorumluluğundadır.3.2- Bu Belgenin Kopyalanması
Bu belge yazar ve telif hakkı bilgilerinin saklanması şartı ile kısmen ya
da tamamen -koşulsuz olarak- çoğaltılabilir, Ticari amaçlı olarak yapılacak
alıntılarda yazara haber verme şartı aranır. Belge XML standartlarında şekillendirildiğinden
yayınlandığı herhangi bir sunucu üzerinden kullanılabilir. Belgeyi çoğaltırken
orijinaline saygı duymak sorumluluğunu kabul etmiş sayılırsınız. Belge üzerinde
bir geliştirme/düzeltme yaptığınızda bunu yazarına bildirmekle yükümlüsünüz.
Belgenin çevirilerinin yapılması, çevirmenlere ticari ayrıcalıklar sağlamaz.
Bu şartlar altında belgenin kopyalanması ve dağıtılması serbesttir.
4- Yazı
4.1 Giriş
Son günlerde adını sıkça duyduğumuz bir kavram olan XML, web sayfası tasarlayıcılarının
yakından tanıdığı HTML ile benzerlikler göstermekte, bu da bazılarımızın
kafasında XML in HTML den çok da farklı olmadığı izlenimini uyandırmaktadır.
XML 'in HTML e benzediği kesindir, ancak benzerlikleri kadar şeklen ve
mantıken ayrıldığı noktalar da vardır, hatta bunlar çoğunluktadır.
4.2 XML, HTML 'e benzer
XML etiket yapısında kodlandığı için HTML e benzer. Aslında XML ve HTML
in ikisi de SGML den türemiştir. Bu nedenle iki kardeşin birbirine benzerliği
kadar benzerlik göstermektedir. Tabi ki iki kardeşin yüzlerinin benzemesi,
onların karakterlerinin ve huylarının aynı olması anlamına gelmez. Bunun
yanında, şimdiye kadar HTML yazmak için kullandığınız araçları, başta
Visual (!) Notepad olmak üzere, XML yazmak için de kullanabilirsiniz.
4.3 XML in HTML den ayrıldığı noktalar
XML bir çok noktada HTML den farklılık göstermektedir. Bu farklılıkları
iki çatı altında toplayabilmekteyiz:
4.3.1 Sözdizimi Farklılıkları
XML ve HTML in ikisinde de ortak olan etiketlerden bahsetmiştik. Bu
etiketler her iki dilde de < ve > karakterleri arasına yazılır. HTML
önceden tanımlanmış bir şemadır, ancak XML 'de kendi etiketlerinizi
ve standartlarınızı kendiniz belirlersiniz. Bu nedenle XML etiketlerini
işlemek konusunda, XML ayrıştırıcıları, HTML işleyen tarayıcılar kadar
bağışlayıcı değildir. Bunun anlamı, bazı tarayıcılar (Buna MS Internet
Explorer da dahil olmak üzere) karışık yazılmış bir HTML kodunu işlerken
en mantıklı çözüme yatkın davranırlar. Ancak XML ayrıştırıcıları XML
belgelerinin çok iyi şekillendirilmesini şart koşarlar. Tabi ki XML
etiketleri de birbirleri içerisine yuvalanabilir, ancak bu işlemin yapılması
sırasında bazı kuralları göz önünde bulundurmak gerekir.
4.3.2 Mantık farklılıkları
HTML önceden tanımlı bir şema iken, XML de kendi etiketlerinizi kendiniz
oluşturursunuz. Burada kesinlikle şöyle bir yanılgıya düşmeyin, XML,
veriye yöneliktir, yani şekillendirme kısmı biraz daha geri planda kalır.
XSLT ile şekillendirme yapabilirsiniz, ancak bunun için de standart
HTML etiketlerini kullanırsınız, yani XML kullanmakla, herhangi bir
kaynaktaki verilerinizi tanımlı hale getirirsiniz, şekillendirme kısmı
XSLT e aittir. XML, küresel anlaşabilirlik sağlamak için geliştirilmiştir.
Verilerinizi iki farklı sistem arasında, hiç bir özelliğini kaybetmeden
iletebilmek bunun en güzel örneğidir. DTD ler, verilerinizin türünü
tanımlarken size yardımcı olurken, XSLT ve CSS ile verilerinizi sunabilirsiniz.
Bu özelliklerin tümüne ek olarak, XML, ayrıştırıcısı tanımlanmış her
dil ve sistem üzerinde çalışabilir. XML düz metin dosyalarından bile
daha ortam bağımsızdır. XML bilgisayar dünyasındaki en ortam bağımsız
ve evrensel şeydir. Kısacası, XML in mantığı verileri ifade etmek iken,
HTML daha çok bunun şekillendirme yanı ile ilgilenir.
4.4 İyi şekillendirilmiş belgeler
XML belgelerinin iyi şekillendirilmiş olması için bazı kurallar olması
gerektiğini söylemiştim. Aslında XML in sözdizimi konusunda HTML tarayıcıları
kadar bağışlayıcı olmaması geliştiriciler için bir nimettir. Bu bahsettiğimiz
bağışlayıcı olmamak kavramı, XML in dünyadaki en sıkı kurallı dil olduğu
anlamına gelmez. Sisteminizdeki XML ayrıştırıcısı, işini yaparken, belirli
esneklik sınırları içerisinde davranır. XML in şekilsel farklılıklarını
anlatırken, XML de kendi etiketlerinizi kendinizin oluşturduğundan bahsetmiştik.
Bunu örneklendirmek gerekirse, HTML tarayıcıları için <i> etiketi her
zaman aynı şeyi ifade ederken, XML in ruhunda olan özgürlük anlayışı
sayesinde kendi etiketlerinizi kendiniz oluşturabilirsiniz. Tabi bu
işi yaparken, standartlar içinde kalmak dolayısıyla bu özgürlüğün çığırından
çıkmasını engellemek için bazı kurallar tanımlanmıştır. Şimdi isterseniz
bu kurallara bir göz atalım.
4.4.1 Sadece Bir Belge Etiketi
Öncelikle belge etiketinin ne demek olduğuna deyinelim isterseniz.
Belge etiketi, XML belgeniz içerisindeki diğer tüm etiketleri kapsayan,
kök öğedir. Diğer tüm XML etiketleri belge öğesinin alt öğesidir:
<?xml
version="1.0"
encoding="iso-8859-9"
?>
<kitaplarim>
<kitap
nu="1">
<yazarlar>
<yazar>Richard
Petersen</yazar>
</yazarlar>
<yayinci>Alfa</yayinci>
<isim>Herkes
İçin Linux</isim>
<isbn>975-316-719-9</isbn>
<sayfa>768</sayfa>
<kapak>Standart</kapak>
</kitap>
<kitap
nu="2">
<yazarlar>
<yazar
nu="1">Görkem
Çetin</yazar>
<yazar
nu="2">Kaan
Güneş Çelik</yazar>
<yazar
nu="3">Barış
Metin</yazar>
</yazarlar>
<yayinci>Seçkin</yayinci>
<isim>Linux
Ağ Yönetimi</isim>
<isbn>975-347-494-6</isbn>
<sayfa>366</sayfa>
<kapak>Standart</kapak>
</kitap>
<kitap
nu="3">
<yazarlar>
<yazar
nu="1">Görkem
Çetin</yazar>
</yazarlar>
<yayinci>Seçkin</yayinci>
<isim>Linux
Doktoru</isim>
<isbn>975-347-579-9</isbn>
<sayfa>212</sayfa>
<kapak>Standart</kapak>
</kitap>
</kitaplarim> |
Bu iyi şekillendirilmiş XML dosyasından da görülebileceği üzere,
kendi belirlediğimiz XML etiketleri başka XML etiketlerinin içerisine
yuvalanmıştır. Ancak tüm XML etiketleri kitaplarım etiketinin içindedir.
Bir XML belgesini ayrıştırıcıya tanımlayan, o belgenin belge elementidir
(kitaplarım) Bir XML belgesinin sadece bir tane ve mutlaka bir belge
etiketi bulunmalıdır. Diğer elementler bazı değerler içerir, ancak
bulunmaları zorunlu değildir. Örneğin aşağıdaki de geçerli bir XML
dosyasıdır:
<?xml
version="1.0"
encoding="utf-8"
?>
<kitaplarim/>
|
Bu ise kötü şekillendirilmiş bir XML belgesidir ve ayrıştırıcıda
hata oluşmasına sebep olacaktır:
<?xml
version="1.0"
encoding="utf-8"
?>
<kitaplarim>
<kitap
nu="1">
<yazarlar>
<yazar>Richard
Petersen</yazar>
</yazarlar>
<yayinci>Alfa</yayinci>
<isim>Herkes
İçin Linux</isim>
<isbn>975-316-719-9</isbn>
<sayfa>768</sayfa>
<kapak>Standart</kapak>
</kitap>
</kitaplarim>
<yayinevleri>
<yayinevi
nu="1">
<ad>Seçkin</ad>
<adres>vs.</adres>
</yayinevi>
</yayinevleri> |
Bu belge, bir belge etiketi içerisine alınarak geçerli yapılabilirdi..
4.4.2 Tüm XML Etiketleri Kapatılmalıdır
XML etiketleri, herhangi bir değer içermiyor olsalar bile </> ile
kapatılmalıdırlar. Yukarıdaki örneklerde de görüldüğü gibi tüm etiketlerin
birer kapatma etiketi vardır. Bir tane kitabımızı yazarın kendisinin
bastırdığını bu nedenle yayınevinin olmadığını farz edelim. Bu durumda
hiç bir değer içermeyen bir XML etiketi şu şekilde basitçe kapatılabilir:
Bu aslında, etiketin açılıp kapatıldığını gösterir. HTML içerisinde
kullanmaya alışık olduğumuz meta, input, hr, br gibi bazı etiketler,
HTML belgelerinin XML standartlarına getirilmesi sırasında bu şekilde
kapatılmalıdır.
İpucu: Microsoft Front Page,
belgelerinizi XML standardında yayınlamanız için büyük kolaylıklar
sağlıyor. Yapmanız gereken tek şey, belgenizi yazmayı bitirdikten
sonra, HTML görünümüne geçerek sağ tıklamak ve "XML Biçimlendirme
kurallarını uygula" seçeneğini tıklamaktır.
4.4.3 Üst üste geçmiş etiketler
XML etiketlerinin birbirlerini kapsayabileceğinden bahsetmiştim. Ancak
bu kapsama özelliği sırasında dikkat edilmesi gereken bir altın kural
var. Bunu bir örnekle açıklamak istiyorum. Çoğu HTML Tarayıcısı aşağıdaki
HTML yazma hatasını en uyguna yaklaşım yaparak tolere edebilmektedir,
ancak bu ifade XML ayrıştırıcıları tarafından kesinlikle kabul edilemeyecek
bir hatadır:
XML tarayıcısı, bu şekilde biçimlendirilmiş belgeyi işlemeye çalışırken,
<b> etiketinin açılmasını onaylayacak, ardından <i> etiketinin <b>
etiketi içerisine yuvalanmasını da onaylayacak, <i> etiketinin değerine
"Merhaba" kelimesini atayacak, ardından <i> içerisine yuvalanacak
yeni bir etiket, ya da i etiketinin kapatılmasını bekleyecektir. Ancak
<b> etiketinin daha önce kapatılmasını kabul edemeyeceğinden hata
verecek ve ayrıştırmayı durduracaktır. Aynı kod, iyi şekilli olarak
şöyle yazılabilir:
Bu, iyi şekillenmiş XML belgeleri için uygulanması gereken altın
kurallardan biridir.
4.4.4 XML Nitelikleri
Bir XML niteliğini basit bir şekilde HTML diline bir eşleştirme yaparak
açıklamak gerekirse, HTML içinde kullanılan font etiketinin size özelliği
gibi kullanımı olan yapılara benzetme yapılabilir. size, font etiketine
ait bir özellik olduğu gibi, tüm XML nitelikleri de bağlı olduğu XML
etiketlerini tanımlamaya yardımcı olur:
Bu örnekte, nu niteliği, yine kendimizin belirlediği bir isimdir.
Ve Türk Dili dersimizin hocası Dr. Ahmet Öcal 'ın kullandığı şekilde
"numara" kelimesinin kısaltması yerine kullanılmıştır.
XML nitelikleri tanımlanırken dikkat edilmesi gereken iki kural
vardır, nitelik isimleri oluşturulurken etiket isimlerine ait kurallar
geçerlidir, ve nitelik değerleri içerisinde boşluk karakterinin kullanıldığı
zamanlarda nitelik değerleri tek veya çift tırnak içerisinde sunulmalıdır.
XML kodunuzun çeşitli kaynaklar tarafından işlenebileceğini, ve herhangi
bir ayrıştırıcının bu konuda daha hassas davranabileceğini göz önüne
alarak, nitelik değerlerinizi her zaman standartlara uyarak tek veya
çift tırnak içerisinde yazmanızı tavsiye ederim.
4.4.5 Özel Karakterler
XML belgeleri için özel anlam taşıyan bazı karakterler, XML belgelerinin
herhangi bir yerinde kullanılamazlar. Bu karakterlerden bazıları:
<, >, &, ' (tek tırnak), " (çift tırnak) tır. Bu bizim için bir kısıtlama
değildir, ancak bir miktar ek işe neden olabilmektedir. Bu karakterleri
kullanmanız gerektiğinde aşağıdaki tablodaki karşılıkları ile değiştirmeniz
gerekmektedir:
| Tanım |
Kullanılabilecek
Kod |
Anlamı |
|
lt |
< |
< (Küçüktür) |
|
gt |
> |
> (Büyüktür) |
|
amp |
& |
& (Ve) |
|
apos |
' |
' (Tek tırnak - ayıraç) |
|
quot |
" |
" (Çift tırnak) |
4.4.6 Büyük-Küçük Harf Duyarlılığı
Tüm XML belgeleri, etiketleri ve nitelikleri büyük küçük harf duyarlıdır.
Bu nedenle, etiketlerinizi kapatırken, veya XML dosyasından veri toplarken
bunu göz önünde bulundurmalısınız. Örneğin şu kullanım yanlıştır:
| <isim>Herkes
İçin Linux</Isim> |
4.4.7 Türkçe Karakterler
XML belgeleri içerisinde, <?xml ?> referansı içerisinde gerekli tanımı
yaptığınız sürece, etiket adlarında, niteliklerde, nitelik değerlerinde
kısacası XML belgesinin her yerinde Türkçe karakterler kullanabilirsiniz.
Tabi Türkçe karakterleri kullanırken, hedef aldığınız kullanıcıların
Türkçe karakter setlerine sahip olduğunu kabul ettiğinizi unutmayın.
Bu bir kısıtlama değildir, İngilizce karakterlerin yüklü olduğu neredeyse
tüm sistemlerde Türkçe karakterler de yüklüdür. Ayrıca, bu Internet
sayfanızda Türkçe karakterler kullanmakla neredeyse aynı şeydir.
4.5 Sonuç Olarak
Gelecek 20 yılın teknolojisinin tabanını oluşturan dilin temellerini
ve yazım kurallarını öğrenmiş bulunuyorsunuz. Burada her şey bitmiyor
tabi. XML gibi geniş bir konuda, her şeyde olduğu gibi tecrübe konuşuyor,
daha çok belge tanımı yaparak, ve XML tabanlı daha çok uygulama geliştirerek
bu dilin temellerini çok daha iyi öğreneceksiniz.
Bir sonraki makalemde, XML in kullanım alanlarını gerçek örneklerle
göstereceğim, ve inanıyorum ki, bu dili öğrendikçe, bu kadar basit
bir dilin nasıl bu kadar yetenekli ve hayat kolaylaştırıcı olduğunu
görüp hayretler içinde kalacaksınız.
Hepinize XML hayatınızda başarılar dilerim!
5- Kaynaklar
- MSXML 4.0 SDK - XML Developers Guide
- XML101.com
- Adım Adım Microsoft XML - Arkadaş Yayınları 2001
- MSDN Collection May 2003
- xml.com
- xml.org
6- Ekler
Makale içerisinde kullanılan bazı kısaltmaların açıklamaları burada
verilmiştir:XML: (eXtensilble Markup Language) Esnek işaretleme
dili, verileri tanımlamak için geliştirilmiş, Microsoftun gelecek
20 yıllık yatırımı olduğunu söylediği bir işaretleme dili.
HTML: (HyperText Markup Language) Geniş metin işaretleme dili,
ifadedeki geniş, metinlerin geniş olmasından değil, metinlerin işaretlenmesi
için kullanılan dilin geniş olmasından geliyor.
SGML: (Standart Generalized Markup Language) Standart genelleştirilmiş
işaretleme dili, XML ve HTML in atası sayılan, ortaya atılması çok
eskilere dayanan bir işaretleme dili.
ISO: (International Standards Organization) Uluslararası Standartlar
Kurumu, özellikle bilgisayar teknolojileri konusunda, standartlar
koyan kurumlardan bir tanesi. Türkçe dili için kullanılan uluslararası
ISO-8859-9 karakter setini ortaya koyan kuruluş. (
http://www.iso.org/ )
XSLT: (Extensible Stylesheet Language Transformation) XML verilerinizin
sunumu için geliştirilmiş bir dil. XML tabanlı olarak çalışır, ve
HTML etiketleri yardımıyla verinizin sunumunu yapabilirsiniz.
CSS: (Cascading Sytle Sheets) HTML belgelerinin şekillendirilmesi
esnasında, her web tasarımcısının can simidi olmuş bir standart şekillendirme
dili.
DTD: (Document Type Definition) XML belgelerinizde, hangi etiketle
hangi tür veri tuttuğunuzu, ve o etikete ait verilerin sınırlandırmalarını
belirlediğiniz bir yan belge türü. XML belgelerinizin "iyi şekillendirilmiş"
olması gibi "tam tanımlı" olması kavramı için gerekli belge türü.
Microsoft Front Page: Microsoft firmasının, Windows işletim
sistemleri altında çalışan, görsel web tasarım aracı.
Ayrıştırıcı: XML belgelerinizi inceleyerek, bu verileri platforma
özel veriler biçimine sokan özel program.
Not: Belgenin baş tarafında, Microsoft 'un işletim
sistemleri altındaki standart metin editörü Notepad 'e esprili bir
yaklaşımla Visual Notepad adıyla çağrımda bulunulmuştur. Bu Microsoft
'un Visual editörlerine dokundurma yapmak için yapılmış bir espridir.
Bilgisayar dünyasında bulunan bu isimdeki bir program kastettiğim
program değildir. Notepad programına, Windows un başlat mönüsü altındaki
çalıştır bölümüne "notepad" yazarak erişebilirsiniz.
|