HTML gibi işaretleme etiketlerini kullanan, verilerin depolanmasını sağlayan ve bu verileri metin formatında saklayan bir dildir. HTML ile XML arasındaki temel fark XML işaretleme etiketlerinin bilginin içeriğini tanımlamak için kullanılmasıdır. HTML’deki yapının aksine XML’de kullanılacak olan etiketler önceden tanımlı değildir. Yani bir XML belgesinin yapısı tamamıyle kullanıcı tarafından oluşturulur Verinin tarif edilmesi için o DTD (Document Type Definition (XML belgesinde kullanılacak etiketleri ve yapıları önceden tarif ettiğimiz kütükler)) adı verilen yapılar kullanılmaktadır. XML ve DTD’nin birlikte kullanılması ile belgeler kendini tarif eden bir yapı halini alırlar. XML dökümanındaki nesne kavramı ve bu nesneleri belirten tag yapıları bizim tarafımızdan oluşturulduğu için XML genişletilebilir özelliğe sahiptir. XML'i HTML'in yerine geçecek bir dil değil de tanımlayıcısı olarak düşünmek daha uygundur. 2
XML ve HTML arasındaki en belirgin fark XML’in verinin kendisiyle ilgilenmesi, HTML’in ise verinin sunumuyla ilgilenmesidir. Buna bağlı olarak HTML belgeleri veriye ilişkin şekillendirme bilgilerini içerirken, XML dökümanları ise verinin tanım bilgilerini içermektedir. XML’in tasarım amaçlarından biri de verinin taşınmasıdır. Aşağıda basit bir XML örneği görmektesiniz. 3 Mehmet Levent Bilgisayar Mühendisliği 4. sınıf
XML kütükleri her zaman belgelerin mantıksal bölümlerinin (element) başlangıç ve bitişlerini işaret eder. HTML’de kullanılan ve gibi standart etiket yapıları yukarıdaki XML belgesinde kullanılmamıştır. Bahsedilen bu özelliği nedeniyle XML belgeleri genişleyebilir (extensible) bir yapıya sahiptir. Belgelerin bu hali gerçek anlamda herhangi bir şey ifade etmez. Belgenin iletimi (gönderim veya alım) ya da sunumu için başka şeylerin de yapılması gerekmektedir. 4 Mehmet Levent Bilgisayar Mühendisliği 4. sınıf Öğrenci nesnesi için bir etiket Öğrenci nesnesi ait bir özellik
XML ile veriler yapı bakımından modülerlik kazanmaktadır. XML belgeleri, verinin içeriğiyle ilgilenmektedirler. Bu sayede verilerin içerik, yapı ve sunum kısımları ayrı modüller halinde farklı XML belgelerinde tutulmaktadır. XML belgeleri Veri Adaları (Data Islands) adı verilen teknik sayesinde HTML sayfaları içerisinde de depolanabilmektedir. Bu teknik sayesinde verinizin sadece sunumuyla ilgilenilmektedir Veri Adaları(Data Islands) bir HTML sayfasında XML komutlarının gömülü olması ve onların işlenebilmesi demektir. Böylece HTML sayfasının içine artık sadece HTML etiketleri değil, aynı zamanda XML komutları da yazılabilir 5
Veriyi HTML’den ayırır. Böylece küçük JS kodları ile bir XML dosyasını okuyarak web sayfamızın veri içeriğini dinamik olarak güncelleyebiliriz. Veri paylaşımını basitleştirir. XML verisi düz metin şekline saklanır. Bu da verinin hem donanımdan hem de yazılımdan bağımsız saklanmasını sağlar. Böylece farklı platformlar arasında kolay veri paylaşımı gerçekleşir. Veri taşınmasını basitleştirir. Uyumsuz sistemler arasındaki en büyük problem veri taşınması sırasında yaşanan zaman problemidir. XML bu zorluğu ortadan kaldırır. Platform değişikliğini basitleştirir. Alt yapıda yapılacak bir işletim sistemi, uygulama, veritabanı veya tarayıcı değişikliğinden etkilenmez ve veri kaybını önler. 6
Data Island HTML sayfalarına iki şekilde gömülür: o Direk XML datasını HTML‘nin içine gömerek HTML sayfasından XML'i referans göstererek. 7 Mehmet Levent Bilgisayar Mühendisliği 4. sınıf
1. satır XML versiyonunu ve kullanılacak karakter setini deklare eder. 2. satır ise belgenin KÖK elemanını tanımlar. Sonraki 4 satır ise KÖK elemanın ÇOCUKLARINI tanımlar ÇOCUKLAR birbirleriyle kardeştirler ve her çocuğun kendi çocuğu da olabilir. Son satır ise KÖK elemanın bittiğini belirtir. 8 Erman Ozgur TBMM Ders Yarın yapılacak XML dersini unutmayalım!!! Satır 1 Satır 2 Satır 7
XML başlangıç ve bitiş etiketi kurallarına sıkı sıkıya bağlıdır. HTML’de örneğin ile başlamamız gereken bir paragrafı etiketiyle kapatmasak bile tarayıcı çoğu zaman bu hatayı göz ardı ederek HTML belgesini görüntüler. XML bunu kesinlikle kabul etmez. XML’in bu nitelikte bir başka özelliği de büyük/küçük harf duyarlı (case- sensitive) olmasıdır. Bu bağlamda bir elemanın başlangıç etiketinin bitiş etiketiyle tamamen aynı yazılışta olması gerekir. XML Yorum: XML sözdiziminin temel taşı olan elemanların(element) isimlendirilmesinde uyulması gereken kurallar şunlardır: o İsimler harf,sayı ya da diğer karakterleri içerebilir. o İsimler bir sayı veya _ (alt çizgi) karakteri ile başlamamalıdır. o İsimler “xml“(ya da XML veya Xml) şeklinde başlamamalıdır o İsimler boşluk içermemelidir. 9
5 tane ön tanımlı özel karakter vardır. Kullanım o maas YANLIŞ o if maas < 1000 then DOĞRU 10
Özellikler elemanlar hakkında ek bilgiler verir. o Özellikler tırnak için gösterilmelidir. o veya o Eğer bir özellik kendi içinde Tırnak karakterini içiyorsa: o veya o 11
Anna Smith female Anna Smith 12 Tercih edilen yöntem Erman Jani Reminder Dersi Unutma =10/01/2008 Erman Jani Reminder Dersi Unutma =10/01/ Erman Jani Reminder Dersi Unutma
DTD'leri, XML dokümanlarının yapı bilgilerini tutan modüller olarak tanımlamak mümkündür. Doküman içinde kullanılacak olan tüm varlıklar daha önceden DTD içerisinde tanımlanmalıdır. XML belgelerinin platformdan bağımsız olması ve kolayca oluşturulabilmesi uygulamada çok fazla anlam ifade etmiyor. Belgeyi kullanacak olan uygulamalara belgenin yapısı hakkında tanımlamalar da bulunulması gerekir. Bu tanımlamalar sayesinde belgeyi işleyecek olan uygulama belgenin içeriği hakkında bilgi sahibi olur ve işlemlerini bu çerçevede sürdürür. Kısaca DTD belgenin içeriğini tanımlamamıza yarar. DTD bildirim sözcükleri XML belgesine eklenir. 13
Örnek 14 Mehmet Levent Bilgisayar Mühendisli ğ i 4. sınıf Bu bilginin parser tarafından işlenebilmesini sağlamak amacıyla Mehmet Levent Bilgisayar Mühendisli ğ i 4. sınıf yukarıdada görüldüğü gibi sisteme öğrenci nesnesinin tanımını öğrenci.dtd isimli dosyada bulunduğunu belirtmiş oluyoruz.
Öğrenci.dtd isimli dosya: Eğer “Declaration” file kullanmasaydık ve “Definition”larımızı XML belgesinin içine gömmeye kalksaydık, bunu belgeye aşağıdaki satırları ekleyerek sağlamak zorundaydık. 15 <!DOCTYPE ö ğ renci[ ]>
DTD Oluşturma o Bir DTD oluşturmak için öncelikle XML’in temel özelliklerini bilmeliyiz. o Bir doctype bildirimi, DTD ile XML belgesini birbirine bağlar. o Doctype bildirisi XML belgesinin girişine yazılır ve herhangi bir elemandan önce gelir. o Bu bildiriden önce XML bildirisi yer alır. Bundan başka işleyici komutları, yorum satırları da olabilir. o Bir öğrenci elementini data halinde XML kullanarak geliştirebilmek için önce elementin hangi özellikleri bulunduğunu belirlememiz gerekir. o Diyelim ki buna karar verdik: o Özelliklerimiz isim, soyisim, numara, bölüm ve sınıf olsun. o O zaman içinde,,,, elementlerini bulunduran elementine ihtiyacımız var. 16
Eğer DTD yi XML kodunun içine yazıyorsak aşağıdaki gibi olmalıydı. 17 <!DOCTYPE ö ğ renci[ ]> <!DOCTYPE öğrenci [ Bu satırda adında bir kök elementi bulunan DOCTYPE bildirisi yapılıyor. Köşeli sol parantez ([), bir iç DTD alt kümesinin başladığını gösterir. Eğer bir dış DTD de bulunsaydı, bu parantezden önce dış DTD referansı yer alacaktı. Bu satır ise elementinin, bir, elementlerini içerdiğini, bunlardan sadece birer tane olabilceğini ve bu elementlerin sırasının yukarıdaki gibi olacağını ve örneğin elementini elementinden önce gelmemesi gerektiğini anlatmaktadır.
18 Bu satırlar ise bize, elementlerinin her birinin “parsed character” verisi tuttuğunu fakat herhangi bir çocuk element içermediğini belirtir.
XML önceden tanımlanmış etiketleri kullanmadığı için (kendi etiketlerimizi tanımlayabildiğimiz için), bu etiketlerin anlamı anlaşılmaz. , bir HTML çizelgesi anlamına gelebildiği gibi başka birçok anlama da gelebilir. XML’in doğal yapısından dolayı tarayıcı XML belgesini nasıl görüntüleyeceğini bilemez. Bu XML belgelerini göstermek için, belgelerin nasıl gösterilmesi gerektiğini tanımlayan bir mekanizmaya ihtiyaç vardır. Bunlardan biri CSS (Cascading Style Sheets)’dir. CSS, HTML ile kullanılmak üzere tasarlanmıştır. XML ile kullanılacak potansiyeli olmasına rağmen, CSS'in temel işlevi sadece web görsel ortamıdır. Yani web üzerinden sunum yapmaktır. CSS ile bir elemanın renk, büyüklük ve pozisyonu gibi özellikleri rahatlıkla ayarlanabilmektedir. W3C XML formatlamak için XSLT yi kullanmayı önermiştir. 19
XSL (eXtensible Stylesheet Language), XML’in tercih edilen “style sheet” dilidir. XSL, HTML tarafından kullanılan CSS’den daha beceriklidir. XSL de, XML'in yapısını kullanarak sunumlar hazırlamak için kullanılır. Fakat sunum, yalnız web üzerinden değil, aynı zamanda işitsel ya da yazılı da olabilir. Diyelim ki, BAŞLIK diye bir kitap başlığı etiketimiz var. XSL'e, “BAŞLIKı gördüğün zaman, içeriğini bold ve rengini kırmızı yap” kuralını tanımlıyoruz (verimizi webde yayınlamak istediğimizi düşünelim). XSL işlemcisi (mesela IE 5 içerisinde bulunan, ya da bir XSL viewer), bunu HTML'e çeviriyor. Yani XSL, XML kodlarını değişik biçimlere çevirmek için kurallar tanımlayan bir stil uygulaması olarak da düşünülebilir. Mesela, görme engelliler için bir web sayfasından verilerin sese çevrilmesi gibi amaçlar için kullanmak hayal değildir 20
XSL 3 kısımdan oluşur: o XML belgelerini çevirmeye yarayan yöntem. o XML’in bölümlerini ve şablonlarını tanımlamaya yarayan yöntem o XML belgelerini biçimlendiren yöntem. Daha basitçe XSL: XML’i HTML’e ya da başka yapıdaki XML belgelerine çevirmeye yarayan, XML verisini süzen ve sıralayan, XML belgesinin bölümlerini adresleyen, XML verilerini veri değerine göre biçimlendiren (örneğin negatif değerleri kırmızı renkle gösteren), XML verilerinin çıktısını değişik aygıtlara veren (ekran, kağıt vb.) bir dildir. Eğer belli yapıda bazı verilerimiz var ve aynı amaç içinde kullanmamız gereken başka yapılarda verilerimiz de varsa, ikisinin ortak bir yapıya dönüştürülmesi için, belgemizi başka bir XML belgesine çevirmek gereğini duyabiliriz. 21
XSL 3 kısımdan oluşur: XML belgelerini çevirmeye yarayan yöntem. XML’in bölümlerini ve şablonlarını tanımlamaya yarayan yöntem XML belgelerini biçimlendiren yöntem. Üstteki üç madde aslında XSL’i oluşturan üç ayrı dile denk düşer: XSLT : XML’i çevirir. XPath : XML’in bölüm ve şablonlarını tanımlar. XSL-FO(Formatting Objects) : XML görüntülenmesini tanımlar. XSLT, XML belgelerini diğer türden belgelere veya diğer XML belgelerine çevirmeye yarar. XPath, XML belgelerinin kısımlarını adreslemekte kullanılır. XPath, XSLT tarafından kullanılır. Biçimlendirme işlemi, XSL çevirisinin sonuçlarının, kullanıcı (okuyucu yada dinleyici) tarafından anlaşılabilen uygun bir biçime dönüştürülmesidir. 22
Tesekkurler 23