XML (Extensible Markup Language - Genişleyebilir İşaretleme Dili), birçok alanda stratejik bir araç olarak kullanılabilen basit ve esnek metin biçimi teknolojisidir. Veri yapılarını, içeriklerini ve kavramlarını platform, şirket ve dilden bağımsız bir yapıda temsiline imkan veren XML, uygulamalarda özel işaretleme dilleri tanımlanmasına olanak sağlayan bir dildir. Bu kadar geniş bir alanda kullanılmasını sağlayan ise birbirinden farklı plaformlar arasındaki iletişimi çok basit ve esnek bir hale getirmesidir.
XML’in temel avantajları şunlardır:
• Kendisinden önceki veri saklama ve iletişim yöntemlerinin aksine platformdan bağımsızdır. Windows platformundaki bir sistem sorunsuz bir şekilde Unix platformundaki bir sistem ile XML sayesinde haberleşebilir.
• Herhangi bir bir güvenlik açığı oluşturmadan iletişime imkan sağlamaktadır.
• Basit bir yapıya sahip olduğu halde karmaşık sistemleri ifade edebilir.
• Hem insanlar tarafından hem de bilgisayarlar tarafından okunabilmektedir.
• XML Web servisleri, Web üzerinden bilgiyi standart bir şekilde paylaşabilmektedir.
XML Sözdizimi (Syntax)
XML belgeleri işaretleme ifadeleri ve veri içeriğinden oluşan bir veri dosyası veya paketidir. Aşağıdaki örnekte XML dilinde tanımlanmış basit bir elektronik posta verilmiştir.
<?xml version="1.0" ?>
<!DOCTYPE e_posta SYSTEM "e-posta.dtd">
<e_posta>
<kime>Herkese</kime>
<kimden> Selim Akyokuş</kimden>
<tarih> 7 Eylül 2006</tarih>
<konu>XML ve XML Uygulamaları</konu>
<mesaj> XML, HTML gibi etiket tabanlı bir dildir</mesaj>
</e_posta>
Belgenin ilk satırı <?xml ... ?> her zaman tanımlanması gereken XML işlem komutu ifadesidir. Bu belgenin bir XML belgesi olduğunu ve hangi sürümü kullandığını belirtmektedir. İkinci satır isteğe bağlı tanımlanabilen belge tipi ifadesidir. Bu belge için tanımlanmış olan DTD (Veri Tipi Tanımlama) dosyasının isminin e-posta.dtd olduğunu ifade etmektedir. Bunların altındaki kısım XML belgesinin gövdesini oluşturmaktadır. XML belgesi gövdesi hiyerarşik bir ağaç yapısında oluşmuş belge elemanlarından oluşur. Her bir eleman bir başlangıç ve bitiş etiketi içerir. Örneğin: Tarih elemanı <tarih> başlangıç etiketi, 7 Eylül 2006 karakter verisi ve </tarih> bitiş etiketinden oluşmaktadır. Elemanlar diğer elemanları veya karakter verileri içerebilir. Bu örnekte e-posta elemanı kime, kimden, tarih, konu ve mesaj elemanlarını içermektedir. Bir belgenin en üst seviyesinde bulunan eleman kök eleman olarak adlandırılır. Bu örnekte kök eleman "e-posta"’dır. Bu etiketlerin isimleri esnektir ve XML’i hazırlayan kişi tarafından verilir.
Her bir etiket bir eleman tip ismi içerir ve bir çift (“<>”) açı parantezle içe alınır. Bitiş etiketi eleman tip ismi öncesinde bir bölü (“/”) karakteri içerir ve açı parantezleri ile kapatılır. Eleman tip isimlerini oluşturmakta olan kurallar diğer programlama dillerindeki isim kurallarına benzemektedir.
XML etiketleri büyük-küçük harf duyarlıdır. (Case sensitive) Bu nedenle açılış ve kapanış etiketlerinin tamamen aynı biçimde yazıldığına dikkat edilmelidir. Başlangıç bitiş etiketi ile kapatılmış bir tam XML elemanı aşağıdaki gibidir:
Ör: <kitap> XML Unleashed </kitap>
XML için verilen aşağıdaki örnek "kitapci" etiketi altında kitapların ismini, yazarını ve basım yılını tutan bir yapı içermektedir.
<?xml version="1.0" ?>
<!DOCTYPE e_posta SYSTEM "kitapci.dtd">
<kitapci>
<kitap id=”1”>
<ad>Sefiller</ad>
<yazar>Victor Hugo</yazar>
<basimYili>2000</basimYili>
</kitap>
<kitap id=”2”>
<ad>Suç ve Ceza</ad>
<yazar>Fyodor Dostoyevski</yazar>
<basimYili>2003</basimYili>
</kitap>
</kitapci>
Burada en dışarıda kitapci etiketi diğer kitap etiketlerini içermektedir. Böylece kitaplardan oluşan bir dizi kitapci etiketi altında tutulmaktadır. Kitap etiketinin altında ise ad, soyad ve basimYili etiketleri ile ilgili kitapla ilgili bilgiler saklanmaktadır. E-posta örneğinde olmayan diğer bir durum ise kitap etiketinin hemen yanındaki “id” bilgisidir. Bu bilgi kaçıncı kitabın ifade edildiğini tutmaktadır.
XML'in Özellikleri
Bir XML yapısının aşağıdaki özellikleri sahip olması gereklidir.
• Bütün XML elemanlarının kapanma etiketi olmalıdır.
Ör: <ad>Ahmet</ad>
• XML etiketleri büyük-küçük harf duyarlıdır. Örnekte <ad> ve <Ad> etiketleri XML’e göre birbirinden farklıdır. Bu nedenle açılış ve kapanış etiketlerinin tamamen aynı biçimde yazıldığına dikkat edilmelidir. Aşağıdaki örnekte ilk satır hatalıdır, ikinci satır ise doğrudur.
<Ad>Ahmet</ad>
<ad>Ahmet</ad>
• XML elemanları birbirini kapsayabilir ama iç içe geçemezler. XML dökümanlarında ise son açılan etiket ilk kapanır. Aşağıdaki örnekte ilk satır hatalıdır, ikinci satır ise doğrudur.
<b><i>Bu satır kalın ve italiktir</b></i>
<b><i>Bu satır kalın ve italiktir</i></b>
• Bütün XML dökümanlarının bir kök elemanı olmalıdır. Diğer bütün elemanlar kök elemanı tarafından kapsanır.
<kok>
<cocuk>
<torun>.....</torun>
</cocuk>
</kok>
• Özellik değerleri mutlaka çift tırnak işaretleri (“”) arasına yazılmalıdır. XML elemanlarının da HTML elemanları gibi özellikleri vardır. Bu özellik değerleri çift tırnak işareti arasına yazılmalıdır. Aşağıdaki XML dökümanının ilki hatalı, ikincisi doğrudur.
<?xml version="1.0" encoding="ISO-8859-1"?>
<not tarih=12/11/2002>
<kime>Tove</kime>
<kimden>Jani</kimden>;
</not>
<?xml version="1.0" encoding="ISO-8859-1"?>
<not tarih="12/11/2002">
<kime>Tove</kime>
<kimden>Jani</kimden>
</not>
İlk dökümandaki hata note elemanının tarih özelliğinin değerinin tırnak içine alınmamasıdır.
Doğrusu: tarih="12/11/2002".
• HTML’dekine benzer olarak XML’de de açıklama satırları aşağıdaki gibidir.
<!-- Bu bir açıklamadır -->
XML' in tanımlanmasını, biçimlenmesini, dönüştürülmesini ve içeriğinin okunmasını sağlayan teknolojiler aşağıda tanıtılmıştır.
DTD ve XML Şemaları (XML Schemes)
Bir uygulamadaki XML belgesinin hangi etiketleri içerebileceği, etiketlerin sahip olabileceği özellikleri, hangi elemanların diğer hangi elemanları içerebileceği gibi dil yapısı bilgileri o uygulama için geliştirilmiş olan XML DTD (Document Type Definition – Veri Tipi Tanımlama) veya "XML schema" olarak adlandırılan belge tanımlama dosyalarında belirtilir. Aşağıda elektronik posta örneği için tanımlanmış bir DTD dosyası bulunmaktadır. Bu dosyada bu DTD’ye göre oluşturulmuş bir adres listesinde hangi etiketlerin bulunabileceği, bu etiketlerin hangi etiketleri içerebileceği gibi bilgiler verilmektedir.
<!ELEMENT e_posta (kime, kimden, tarih, konu, mesaj)>
<!ELEMENT kime (#PCDATA)>
<!ELEMENT kimden (#PCDATA)>
<!ELEMENT tarih (#PCDATA)>
<!ELEMENT konu (#PCDATA)>
<!ELEMENT mesaj (#PCDATA)>
XML şemaları XML belgelerinin yapısını DTD’te olduğu gibi tanımlada kullanılan yeni bir yöntemdir. DTD’nin bazı sınırlamaları nedeniyle yeni bir alternatif olarak XML-Data note yayınlanmıştır. Bu yeni belge yapısı tanımlama yöntemi XML şema (XML Schema) olarak adlandırılmakta ve daha yaygın olarak desteklenmektedir.
XML şemaları bir XML sözlüğü olarak tanımlandığından normal bir XML belgesi olarak işlenebilir ve ayrıştırılabilir. Bunun yanında birçok veri tipini desteklemesi, açık bir model olarak genişleyebilmesi, katılım (inheritance) ilişkilerini desteklemesi gibi avantajları vardır. Bu yöntem, gelişme aşamasında olması nedeniyle henüz son şeklini alamamıştır. Aşağıda elektronik posta örneği için tanımlanmış bir XML şeması bulunmaktadır.
<?xml version="1.0"?>
<Schema name="ElektronikPosta"
xmlns="urn:schemas-microsoft-com:xml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="kime" content="textOnly"/>
<ElementType name="kimden" content="textOnly"/>
<ElementType name="tarih" content="textOnly"/>
<ElementType name="konu" content="textOnly"/>
<ElementType name="mesaj" content="textOnly"/>
</Schema>
CSS ve XSL
XML belgelerinin görsel olarak biçimlenlendirilerek sunumu CSS (Cascading Style Sheets) veya XSL (eXtensible Style Language) kullanılarak gerçekleştirilir.
CSS: CSS, HTML ve XML belgelerini görüntüleme amacıyla kullanılan bir biçimleme dilidir. CSS biçim sayfaları (sytle sheets) belge elemanlarına uygulanacak olan bir kurallar kümesi içerir. Her bir kural elemanların nasıl biçimlendirileceğini belirler. Biçim kuralları aşağıdaki yapıya sahiptir:
Seçiçi {özellik1: değer1;
özellik2: değer2;
......
}
XSL
XSL, XML belgelerinin biçimlendirilmesi tasarlanmış bir biçimleme dilidir. CSS’den çok daha güçlü bir yapıya sahip olmasına rağmen XSL yeni bir teknoloji olduğundan çok fazla yaygın değildir ve konudaki standartlaştırma çalışmaları henüz tamamlanamamıştır.
Bir XSL dosyasını XSL yorumlayıcılarından geçirirsek XML dosyasının görüntüsünü elde edebiliriz.
XSLT
XSLT (XSLT Trasformations), XML belgelerinin dönüşümü için kullanılır. XSLT bir yapıdaki XML belgesini, XSL biçim dosyasındaki tanımlamalara göre başka bir yapıya dönüştür. XSLT, XML belgesini HTML diline, diğer bir XML belgesine veya XSLF formatlama nesnelerine dönüştürebilir. Bugün XSLT en yaygın olarak XML belgelerinin HTML belgelerine dönüşümünde kullanılır. Dönüşüm sonuçunda elde edilen HTML belgesi tarayıcılar ile görsel olarak gösterilebilir.
XPATH
XPATH, XML dosyasının içinde dolaşabilmek için tasarlanmıştır. Bu sayede XML dosyasından istediğimiz verilere ulaşabilir ve XSLT ile bu verileri XHTML’e veya başka bir XML dosyasına çevirebiliriz.