xml lazım olanlar buraya

tgundogdu

Yeni üye
8 Nis 2007
16
0
Ankara

a. İŞARETLEME DİLLERİ VE TARİHÇESİ


XML’in ne olduğunu tanımlayabilmemiz için önce Markup Language (İşaretleme Dili) ne anlama geldiğini açıklamamız gerekir. Basılı yayının gelişmesiyle yayıncıların yazılı metinlerin baskı makinalarında nasıl bir şekilde biçimde yayınlanması için hazırladıkları notlar ve özel sembolller markup olarak ifade edilmekteydi. Bu metinin belirli kısımlarının özel bir anlam kazandırmak üzere işaretlenmesi işlemidir. Bu amaçla kullanılan işaretler, kurallar ve gramer kümesi markup language (işaretleme dili) tanımlanır. Bu tip işaretleme yapılarını biz bir çok ortamda görebiliriz. Örneğin ASCII kodlama standardının içerdiği bir çok kontrol karakteri veri iletişimi için kullanmaktadır. Kelime işlem programları bir metin’nin içerdiği kısımları, yazı tiplerini, font ve stilleri ayırmak için metin içeririsine gömülü bir çok işaret’leri içermektedir. Programlama dilleri fonsiyonları, data yapılarını, verileri ayırmak için bir takım sembolller veya işaretler kullanmaktdadır. Bu tip bir standard ayıraç, işaret veya etiketler kümesi kullanmadan taşınabilir ve paylaşılabilir bir uygulama geliştirilebilmesi çok güçtür.

Metin ve belgelerin kolay bir şekilde taşınabilmesi, paylaşılabilmesi ve işlenebilmesi için ilk işaretleme dili GML (Generalized Markup Language) 1960 sonlarında IBM’de yapılan araştırma çalışmaları sonunda ortaya çıktı. GML daha sonra ANSI (American Natitional Stardard Institute) 1978 te oluştuturlan bir grup tarafından geliştirilerek SGML (Standardized Generalized Markup Language) adı altında 1986 yılında ISO (the International Organization for Standardization) kurumunca uluslararası bir standard olarak kabül edildi. SGML bir metin veya belge kümesinde kullanılan dilin gramer ve sözlük yapısını belirtmek için kullanılan bir dildir. SGML Amerikan hükümeti kuruluşlarında, havacılık ve otomobil gibi büyük endüstri kuruluşları ve basın endüstrisinde bir belgeleme standardı olarak kullanılmaktadır. SGML çok güçlü bir dil olmasına rağmen son derece karmaşık yapısı ve yüksek uygulama geliştirme maliyeti bu dilin yaygın bir şekilde kullanımını engellemiştir.

Tim Berners-Lee ve Anders Berlung 1989 yılında internet ortamında belge paylaşımını kolaylaştırmak için Web uygulamalarının temel öğelerinden biri olan HTML (Hypertext Markup Language) dilini geliştirdiler. HTML bir SGML uygulaması olarak geliştirildi. Diğer bir deyişle HTML dilinin yapısı SGML dilinde tanımlandı. HTML dili çok basit yapısı ile son derece başarılı oldu. Albert Einstein’nin dediği gibi her şey daha basit olmamalı ama mümkün olduğunca basitleştirilmelidir. HTML dili bir belgenin içerdiği başlık, font, resim ve tablo gibi bilgileri bilgisayar ortamında standard bir şekilde görüntülemek ve biçimlendirmek için geliştirilmiş bir dildir. Belgenin istenen formatta sunulması tag (etiket) olarak ifade edilen işaretler ile sağlanmaktadır. Bu dilin geliştirilmesindeki temel amaç belgenin standard bir formatta görüntülenerek sunulmasıdır.

1996 yılında Word Wide Consortium (W3C, http://www.w3.org)’u SGML güç ve esnekliğini içereçek basit bir işaretleme dili oluşturmak amaçıyla XML dilini tasarlamaya başladı. Şubat 1998’de XML 1.0 bir standard olarak W3C tarafından yayınlandı. XML dili SGML dilinin bir çok özelliğini içeren basitleştirilmiş dildir. SGML dilinin bir alt kümesidir. XML SGML gibi bir **** dildir. Yani başka dillerin yapısını tanımlamakta kullanılan bir dildir.

b. HMTL ( Biçimsel ve İçeriksizdir sadece belgelerin biçim özelliklerini belirler)


HTML dili bir belgenin formatlanması amaçıyla daha önceden tanımlanmış bir etiket (tag) kümesine sahiptir. Her bir etiket özel bir formatlama anlamı içerir. Şekil 1’deki HTML örneğine bakalım. Burdaki <P> etiketi bir paragrafın başını göstermektekdir. </P> ise paragrafın bitiş etiketidir. Tarayıcı bu etiketlere bakarak bu başlangıç ve bitiş etiketleri arasındaki metini bir paragraf olarak yorumlayarak buna göre biçimlendirme işlemini gerçekleştirecektir. <b> ve </b> ekiteleri ise bu iki etiket arasındaki metinin bold (kalın) fontta basımı sağlayaktır. <br> etiketi ise yeni bir satır başına geçilmesini ifade eden satır atlama etiketidir.



HTML


TARAYICI






<P>
<b> Sn. Tevrat Gündoğdu </b>
<br>
ivedik caddesi no:474
<br>
Yenimahalle Ankara

</p>



Sn. Tevrat Gündoğdu

İvedik caddesi no:474
Yenimahalle Ankara



Biçimle














Şekil 1 – Tarayıcıda Biçimlendirilmiş HTML Belgesi







Bu örnekte gördüğümüz gibi HTML dilindeki bir çok etiket yalnızca biçimlendirme ile ilgili tarayıcın kullandığı bir anlam ifade etmektedir. HTML’in bu yapısı esnek, güçlü ve çok amaçlı bilgi sistemlerinin geliştirilmesini engellemektedir. HTML’in bu anlamda getirdiği bu takım sınırlamalar şunlardır:

  • HTML genişleyebilir bir dil değildir. HTML daha öceden tanımlanmış sabit bir etiket kümesi içermektedir. Bu etiket kümesini uygulamara özgü kendimizin ekleyeceği yeni etketlerle genişletemeyiz.

  • HTML yalnızca sunum amaçlıdır. HTML etiketlerinin bir çoğu tarayıcının metni yalnızca nasıl biçimlendirmesi ile ilgili bilgi içermektedir. Veri kopyalama, paylaşımı, iletişimi ve uygulama bütünlenleştirmesi gibi diğer ağ uygulmalarının gereksinimlerine cevap vermemektedir.

  • HTML belgeleri genellikle direkt olarak yeniden kullanılamazlar. Örneğin, bir hava tahminleri hakkında bilgi veren bir sitedeki bir HTML belgesindeki sıcaklık, ve hava tahminleri ile ilgili bilgileri kendi uygulamamızda kullandığımızı düşünelim. Kendi uygulamamız bu sayfanın yapısını inceleyerek bu bilgileri istediğiz formata dönüştürsün. Hava tahmini sitesindeki en ufak bir değişiklik olması durumunda bizim uygulamamızı değiştirmemiz gerekeçektir. Bunun temel nedeni bir HMTL belgesi içindeki bilgi içeriğiyle sunum yapısının birbirinden ayrılmamasıdır.

  • HTML verilerinizin yalnızca bir "görüntüsü"nü sağlar. Kullanıcı isteklerine bağlı olarak bir HTML belgesindeki bilgilerin farklı formatlarda görüntülenmesini istersek bu işlem HTML ortamında çok zor olaçaktır. Bunun işlemi gerçekleştirmek için çok fazla script kodu yazmamız gerekçektir.

  • HTML verileri çok az veya hiçbir anlamsal yapı bilgisi içermezler. Örneğin yukarıda vermiş olduğumuz adres örneğinde metin içeriği hakkında ise hiç bir bilgi yoktur. Bu metne bakarak bir uygulamanın bu metindeki hangi verinin ad, soyad veya posta kodu olduğunu anlaması zordur.
c. GİRİŞ
XML’den bahsetmeden önce SGML’i incelemekte fayda görüyorum. Sonuçta bu bir giriş olduğuna göre temeli sağlam atmalıyız. SGML International Standards Organization(ISO) tarafından 1986 yılında kabul edilmiş ve onaylanmış bilgi-yönetimi standardıdır. SGML platform-bağımsız ve uygulama-bağımsız dökümanlar yaratmak sağlamak için oluşturulmuştur. Dilbilgisi gibi bir mekanizma kullanılarak dökümanların yapısını özel tanımlanmış tag’ler kullanarak yapısını tanımlamamıza yarar. HTML’in bir nevi kardeşi olduğunu, ama tabi ki SGML(Standard Generalized Markup Language)’in bir alt kümesi olduğunudda unutmamak gerek. SGML bir ****-dildir. ****-dil demek dil yaratmaya yarayan dil demektir. (Yapay zeka’da ****knowledge’in knowledge about knowledge olduğu gibi.) Örneğin HTML, SGML’den türetilmiş bir anlamlandırma dilidir. Aynı şekilde XML’de temel olarak SGML’e dayanır. İlginç olan XML’in SGML gibi bir ****-dilden türemesine rağmen kendisi de bir ****-dil olmasıdır. Yani XML’den de yeni diller türetilebilir.
XML’i içeriğin nasıl görüneceğinden ziyade içeriğin yapısını tanımlamada kullanırız. Diğer taraftan HTML dökümanın nasıl gösterileceğini belirtir, dökümanın ne olduğundan hiç bahsetmez.
d. DTD

Diğer önemli bir konu ise DTD’dir. HTML’de dikkat ettiyseniz ilk satır:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 FINAL //EN">
olarak görünür. Burada Web browser’a html’in hangi DTD’sini kullanacağı söylenir. Burada DTD Document Type Declaration’dır. Fakat kesinlikle bu XML’de ileride kullanacağımız DTD yani Document Type Definiton ile karıştırılmamalıdır. HTML’deki Document Type Declaration bize hangi tür bir dökümana sahip olduğumuzu söylerken , XML’de Document Type Definition ise dökümanın syntax’ının geçerli(valid) olduğu yerleri tanımlar. DTD parser’ın izleyeceği kuralları belirler. Dökümanda ne gibi elemanların olduğunu ve bu elemanların neler yaptığını açıklar. Ayrıca DTD dökümanın tag yapısının ve içeriğindeki organizasyon hiyerarşisinin önceden tanımlanmış HTML kurallarına uyup uymadığını kontrol etmek için parser tarafından kullanılır.
Bir XML belgesinin yapısı DTD’de aşağıda verilan dört çeşit işaretleme ifadesi ile tanımlanır.


DTD ifadesi
Anlamı
ELEMENT

ATTLIST


ENTITY


NOTATION
Bir XML elemanı tanımlar.

Bir eleman tipinin alabileceği özellikleri tanımlar.

Belli bir içeriğin bir isme bağlanarak o isimle ilişkilendirilmesini sağlar.

XML hariçi içeriğin tanımlanmasını sağlar. Bu tanımlaran içerik XML belgesinin bir parçası olarak parse edilmez.


e. XML'İN GELİŞİMİ

Internetin ilk yıllarında birkaç HTML tag’i kullanarak gri web sayfaları yapmak oldukça büyük bir işti. Ama zamanla insanlar bunun çok iyi bir reklam aracı olabileceğini farkedip, üzerinde çalışmaya başladılar. Birçok grafiksel öğe geldi, insanlar tasarım yapmaya başladılar. Bunu Html 2.0 ve 3.0 izledi. Gün geçtikçe internetin altyapısı da düzeldi. Türkiye’de inanılmaz bir ISS(Internet Servis Sağlayıcı) patlaması yaşandı. Paket fiyatları düştü düştü , firmalar bu rekabetten oldukça etkilendi ve geriye oldukça köklü firmalar kaldı. Internet 2. boyutunu yani insanlardan bilgi toplama yakalamıştı. Ve halen belki de bu boyuttayız. Asp bize sunucu taraflı uygulamalar geliştimeye olanak tanıdı hem de cgi, perl gibi dilleri bilmeden sadece Vbscript ile bunu yapmamızı sağladı. Artık web sayfaları dinamik içerik sağlıyordu, sizin kim olduğunuzu anlayıp size özel işlemler yapıyordu ki, veri transferinin önemi oldukça büyüdü. Artık herşey veriye bağlanmıştı. Bir web sitesinin arkasına SQL Server’lar, Oracle’lar SAP R/3 sistemleri durmaya başlamıştı. İşte XML bu veri değişimi işlemini kolaylaştırmak için doğdu. 3. kuşak internette de bu ve yeni teknolojiler kullanılarak insan faktörü ön plana çıkacak ve etkileşimli web siteleri yapılacak. B2B ve B2C’ler yerini Marketplace’lere bırakacak. Biz şu an 2. kuşağı yaşayan ama 3. kuşağa geçmeye hazırlanan bir ülkede bulunuyoruz.


XML ile veri değişiminin kolay hale gelmesi hedeflenmişti ve başarıldı. Artık sizin verilerinizi alacak sistemin ne olduğunu bilmeniz ve ona göre çıktı üretmeniz gibi birşey söz konusu değil. Siz bir XML paketi oluşturup karşı sisteme yolluyorsunuz. O da bu paketi açaral kendi sistemine dahil ediyor. Yani artık internet aracılığıyla farklı sistemler veri değişiminde aynı dili konuşuyor: XML.
f. ASP VE XML İLİŞKİSİ

Peki ASP bunun neresinde diyeceksiniz, hatta daha komik birşey bir iş arkadaşıma SAP Türkiye’de XML dersi verirken sorulan bir soru: "Asp mi Xml’i kapsıyor, Xml’mi Asp’yi?". İki teknoloji de birbirinden bağımsız görünse de birbirine bağlı teknolojiler. Ama kimse kimseyi kapsamıyor. Asp bir teknoloji Xml de. Xml üretmek için illaki Asp’ye ihtiyaç yok, tam tersi Asp için Xml’e de. Ama bu iki teknoloji ortak kullanıldığında veri değişiminde oldukça kolay ve başarılı uygulamalar geliştirilebilir. XML bize karşı sistemin ne olduğunu bilmemize gerek kalmadan paket oluşturmamıza yararken, ASP de bu paketleri kullanılabilir halde oluşturmamıza yarıyor.


XML başlığı altında işleyeceğimiz diğer bir konu ise XSL yani eXtensible Stylesheet Language. Kısaca XSL , XML dökümanlarının biçimini belirleme ve değiştirmede kullanılır. XSL kullanarak XML dökümanlarını daha başka XML dökümanlarına dönüştürebilirsiniz. Şimdilik XSL’i kafanızda CSS olarak canlandırabiliriz, sanki XML verilerine şekil kazandırıyormuş gibi.

g. XML NEDİR?

---> eXtensibe Markup Language kelimelerinin baş harflerinden oluşan HTML gibi Markup Language (yani <> tagları kullananılarak hazırlanan ) bir Web programlama ve bilgi transformasyonuna yarayan bir dildir.
---> XML verileri(data) tanımlamak için dizayn edilmiştir.
---> XML tagları HTML deki gibi önceden tanımlanmamıştır,bu tagları programcı yapar.(Örneğin HTML'de <p>(paragraf),<table>(tablo) gibi)



h. XML VE HTML ARASINDA NE FARK VARDIR?

---> XML veri transferi yapmak için dizayn edilmiştir.HTML ise Web sayfasında Web master tarafından tasarlanan bilgi ve resimlerin client tarafından görüntülenmesini sağlayan bir dildir.
---> HTML bilginin kullanıcıya gösterilmesini(sunulması) sağlarken XML bu bilginin irdelenmesi,hesaplanması,tanımlanması gibi işlemlerle ilgilenir.
--à HTML gibi XML'de tag"lerden oluşur. Fakat, ikisi arasında tag kullanımı anlamında çok büyük bir mantık farklılığı vardır. HTML tagleri yalnızca sayfaya biçim vermek için kullanılır. (Misal bold, italik, resim, bgcolor vs..) XML'de ise tagler bilgi saklamak, ve saklanan bilgi türü hakkında bilgi vermek için kullanılır.


i. XML'İN TASARIM AMAÇLARI
XML tasarlanırken düşünülen birçok düşünce var. W3C’nin birleşip ortaya çıkardığı 10 temel XML’in tasarım amacı şunlar:
1- XML internet üzerinde çalışabilmelidir.
2- XML neredeyse tüm uygulamalar tarafından desteklenmelidir.
3- XML SGML ile uyumlu olmalıdır.
4- XML üreten programlar oldukça kolay olmalıdır.
5- XML’de opsiyonel özellikler minumum olmalı veya hiç olmamalıdır.
6- XML dökümanları okunabilir ve açık olmalıdır.
7- XML tasarımı tek bir firma bu işi ele almadan acilen hazırlanmalıdır.
8- XML tasarımı biçimlendirilmiş ve kısa olmalıdır.
9- XML dökümanlarının yaratılması çok kolay olmalıdır.
10- XML dökümanlarında anlam belirsizlikleri olmamalıdır.

j. XML GELİŞTİRME PROGRAMLARI
Tabiki yine Notepad. Microsoftun en sorunsuz çalışan ürünü olsa gerek. Tabiki XML için de yazılımlar gün geçtikçe artıyor.



En çok kullanılanlardan biri Microsoftun XML notepad’i.(Notepad’e olan talebi görmüş olmalı ki.) Oldukça güzel bir arayüzü var. XML’de amaçlandığı gibi çok basit bir şekilde XML dökümanı yaratmanızı sağlıyor. Ayrıca ücretsiz.



örnek:

<?xml version="1.0"?>
<OGRENCI>
<ISIM>
<AD>TEVRAT</AD>
<SOYAD>GUNDOGDU</SOYAD>
</ISIM>
<UNIVERSITE>
<BOLUM>BILGISAYAR OGRETMENLIGI</BOLUM>
<YIL>2007</YIL>
</UNIVERSITE>
<ADRES>
<CADDE>IVEDIK CADDESI</CADDE>
<APARTMAN>SAADET APARTMAN</APARTMAN>
<NO>474</NO>
<ILCE>YENIMAHALLE</ILCE>
<IL>ANKARA</IL>
</ADRES>
</OGRENCI>


Farzedelim ki bir vakıf kurduk ve bu bilgileri tutmak istiyoruz. Okulundan bir XML dökümanı istiyoruz ama yapısının bu şekilde olmasını istiyoruz. Onlar bize bu yapıda bir döküman yolluyorlar biz de bunu otomatik olarak çalışan sistemimize kaydediyoruz diyelim. Böylece okuldan biri mezun olduğunda mezunlar derneğimize katılması için mektup yollayableceğimiz bir adresi var. Sistem otomatik olarak güncelleniyor. Sizin büronuz Istanbul’da okul Ankara’da. Veriyi oluşturmak için sisteminizi çalıştırmanız yeterli, diğer tarafta nasıl sisteme entegre olacağı sizi ilgilendirmiyor.

Web üzerinde kullanacağımız XML uygulamalarında XML dökümanını derleyen msxml.dll dosyasıdır. Eğer Internet Explorer 5.0 ve üzerini kullanıyorsak XML dökümanlarını rahatça görüntüleyebiliriz. Eğer yukarıdaki kodu düzgün kodladıysak xml dosyasını kişisel sunucumuzda çalıştırdığımız da aşağıdaki görüntüyü elde ederiz. + ve – ‘lere tıklayarak tag’leri açıp kapayabiliriz. Bu yapı XML dökümanlarının eleman-çocuk ilişkisini anlamınıza yarayacaktır.
k. XML HATA MESAJLARI

Şimdide biraz xml hata mesajlarından bahsedelim

Eğer bir hata yaptıysanız ki neredeyse her zaman ilk yazılışta hata çıkar, Internet Explorer hata verecektir. Şimdi olası hataları değerlendirelim:

1- Eğer üstteki hatayı görüyorsanız sizde anlayacaksınızdır ki, <IL> tagini kapatmayı unutmuşsunuzdur. XML dökümanı iyi-oluşturulmalıdır demiştik ya işte orada bundan söz etmiştik.

2- Eğer üstteki hatayı alıyorsanız çift-tırnak koymadığınızı anlayacaksınızdır. Bu da bir iyi-oluşturamama hatasıdır.

3- Eğer üstteki hatayı alıyorsanız, Büyük-küçük harfe dikkat etmemiş olduğunuzu göreceksiniz.

4- Eğer üstteki hatayı alıyorsanız, aynı tag’i birden fazla kullanmışsınızdır.
L. XML TABANLI TEKNOLOJİLER VE UYGULAMALAR
XML değişik veri, kavram ve içeriklerin tanımlanması ve temsil edilmesi için uygun bir ortam sunmaktadır. Bu nedenle XML farklı alanlarda uygulama verilerinin tanımlanması ve taşınması için üretici, dil, ve platformdan bağımsız stratejik bir araç olarak hızla yaygınlaşmaktadır. Aşağıda XML’in kullanıldığı ve kullanılaçağı bazı temel uygulama alanları tanıtılmıştır.

L.1.Internet Arama Makinaları
Internet çok büyük bir haçimdeki yapısal olmayan veri içermektedir. Bir arama makinasının (search engine) ingilizçe “chip” kelimesini aradğını düşünelim. Karşımıza “chip” kelimesini içeren binlerce doküman gelecektir. Bu dokümanlar patates “chip”leri, bilgisayar “chip”leri veya “chip” isimli kişiler hakında olabilir. Şu anda Internet belgeleri HTML ortamında saklandığından veri içeriği hakkında her hangi bilgi yoktur. XML yaygın bir şekilde Internet’te belge saklama ortamı olarak kullanıldığında, arama makinaları veriler hakında verilen bilgileri (****data) kullanarak daha akıllı seçimler sunabilecektir.

L.2.Aygıt ve Uygulamadan bağımsız Veri Erişimi
Şu andaki Web ortamındaki HTML belgelerine masaüstü bilgisayarlardaki tarayıcı (browser) programları kullanarak erişilmektedir. Bu yapı değişmeye başlamıştır. Cep telefonları ve kişisel sayısal yardımcı PDA (Personel Digital Assistant) gibi araçlar ile bugün web erişimi hızla artmaktadır. Bu araçlardaki görüntü, band genişliği, bellek ve işlemçi sınırlamaları Web’te yeniden bir yapılanmayı gerektirmektedir.

HTML dili belgelerin Web tarayıcılarında gösterilmesi amaçı ile geliştirlmiştir. XML belge içeriğini belge sunumundan ayırmaktadır. XML ortamındaki belgeler aygıtın yapısına bağlı olarak istenilen şekilde formatlanarak sunulabilir. XML tabanlı bilgilere erişim cep telefonu gibi bir aygıtla erişileceği gibi bu iş amaçlı bir web uygulaması ile de olabilir. Bu uygulama XML ortamındaki bilgi içeriğini alarak istediği şekilde kullanabilir veya formatlayabilir.

Aşağıda aygıt ve veri uygulamadan bağımsız başlığımızı daha iyi açıklayacak bir şekil aşağıda gösterilmiştir.


L.3. Elektronik Veri Değişimi ve Elektronik Ticaret
XML’in en fazla ilgi çeken tarafı e-ticaret, tedarik zinciri yönetimi ve iş akışı (workflow) yönetimi gibi elektronik iş web uygulamalarında bir veri değişim formatı olarak kullanılmasıdır. Bugünkü bilgisayar iletişimindeki çok büyük gelişimlere ve birikime rağmen, bilgisayar sistemlerindeki ve veritabanlarındaki farklı formatlardaki verilerin şirket içi ve şirketler arası taşınması ve işlenmesi en büyük problemlerden birisidir. Bu verilerin XML formatına dönüştürülerek taşınması bu problemin çözümünü kolaylaştırmaktadır.









L.4. Yazılım Geliştirme
XML büyük çaplı uygulama gelişmede uygulama mimarilerinin paylaşımını kolaylaştıracaktır. OMG (Object Management Group) bir XML tabanlı bir uygulama olan XMI (XML ****data Interchange) spesifikasyonunu kullanacağını belirmiştir. XMI, UML (Unified Modelling Language) kullanarak tasarlanmış olan uygulamaları tanımlamada kullanılan bir dildir. XMI, geliştirme ekibinin çok farklı uygulama geliştirme araçlarını kullanarak, tek bir UML modelinin paylaşımına imkan vermektedir. Bu yazılım geliştirme sürecinde geliştirme ekibi arasındaki iletişimi artırarak geliştirme sürecini kısaltmakta ve ekibi daha üretken kılmaktadır.

Yazılım geliştiricileri XML **** bir dil olduğundan uygulamalarının gerektirdiği yeni dilleri gelişitirebilir. Bu dillerde tanımlanmış olan verileri ve yapıları hazır olarak bulunan XML kütüpaneleri ve araçları ile kolaylıkla işleyebilir.

M. XML SÖZ DİZİMİ (SYNTAX)
XML belgeleri işaretleme ifadeleri ve veri içeriğinden oluşan bir veri dosyası veya paketidir. İşaretleme ifadeleri elemanlar (elements), varlık referansları (entity refererences), açıklamalar (comments), işleme komutları (processing instructions), CDATA bölümleri ve veri tipi tanımlamalarından (document type declaretions) oluşur.

XML’de geçen temel işaretleme ifadelerini detaylı incelemeden önce aşağıdaki Şekil 4‘teki örneği inceleyelim. Bu örnekte XML dilinde tanımlanmış basit bir elektronik posta verilmiştir. Belgenin ilk satırı <?xml ... ?> her zaman tanımlanması gereken XML işlem komutu deklarasyonudur. Bu belgenin bir XML belgesi olduğunu ve hangi versiyonu kullandığını belirmektedir. İkinci satır opsiyonel olarak tanımlanabilen belge tipi deklarasyonunudur. 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 aşağıdaki tarih elemanı <tarih> başlangıç etiketini, 22 Mart 2007 karakter verisini ve </tarih> bitiş etiketindan 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.


<?xml version="1.0" ?><!DOCTYPE e_posta SYSTEM "e-posta.dtd">
<e_posta> <kime>Herkese</kime> <kimden> Tevrat Gündoğdu</kimden> <tarih> 22 Mart 2007</tarih> <konu>XML ve XML Uygulamaları</konu> <mesaj> XML HTML gibi etiket tabanlı bir dildir</mesaj></e_posta>

















Şekil 4 – Elektronik posta XML belgesi







Elemanlar (Elements)

Elemanlar XML dilinin en temel yapı taşlarıdır. Bir eleman veri içeriğini kapsayan bir kutudur. Karakter verileri, diğer elemanları veya diğer işaretleme yapılarını içerebilirler. Elemanlar etiketlerle ayrılırlar. Her bir etiket bir eleman tip ismi (element type name) içerir ve bir çift (“<>”) açı parantezle içe alınır. Eleman tip isimlerini oluşturmakta olan kurallar diğer programlama dillerindeki isim kurallarına benzemektedir. Her bir isim bir harfle veya alt çizgi (_) başyababilir. Tire (-) veya sayı ile başlayan isimler kulanılamazlar.

Boş elemanlar (empty elements) haricindeki her bir elemanın bir başlagıç etiketi bir de bitiş etiketi bulunur.

XML’de çeşitli amaçlarla kullanılan sembollerin anlamları aşağıda listelenmiştir:



Eleman
Tanımı

Anlamı

A?

A+

A*

A,B

A | B

( )
Opsiyonel; A alt elemanı bir defa veya hiç gözükmeyebilir.

A alt eleman mutlaka bir defa veya daha fazla gözükür.

A alt eleman sıfır veya daha fazla gözükebilir.

B elemanı A’dan sonra gözükmelidir.

A veya B’den bir tanesi gözkebilir.

Paratez içinde geçecek elemanları guruplar. Örneğin (A,B)+ ifadesi A ve B’nin ardışık olarak bir veya daha fazla geçeceğini ***ermektedir.




Başlangıç Etiketleri

Bir elemanın başlama ayıraçı başlangıç etiketi (start-tag) olarak adlandırılır ve bir çift (“<>”) açı parateziyle kapatılır. Aşağıda bir bazı doğru başlangıç etiketleri verilmiştir.
<kime>
<kimden>
<Kitap>
<kitap>










Unutulmaması gereken bir diğer kural XML dili harflerin büyük veya küçük olmasına duyarlı (case sensitive) olduğudur. Örnekteki <Kitap> ve <kitap> etiketleri aynı değildirler.

Bitiş etiketleri

Bir elemanın bitiş ayıraçı bitiş etiketi (end-tag) olarak adlandırılır. Bitiş etiketi eleman tip ismi öcesinde bir bölü (“/”) karakteri içerir ve açı parantezleri ile kapatılır. Aşağıda bitiş etiketi örnekleri verilmiştir.
</kime>
</kimden>
</Kitap>
</kitap>










XML’de her bir başlangıç etketi bir bitiş etiketi ile mutlaka kapatılmalıdır. Başlangıç bitiş etiketi ile kapatılmış bir tam XML elemanı aşağıdaki gibidir.
</kitap> XML uygulamaları </kitap>













Boş Eleman Etiketleri

Aşağıdaki örnekteki ilk satırda olduğu gibi boş elemanlar (empty elements) her hangi bir içerik içermezler. Boş etiketler istenirse etkiketin sonuna tek bir bolü (/) işareti eklenerek kısatılmış bir biçimde gösterilebilir. İkinci satırda bunun bir örneği verilmiştir.
</br></br>
<br/>






Belge Elemanı

XML belgeleri mutlaka hiyerarşik etiket yapısında olmalıdır. Etiket hiyerarşisi içindeki en üst sevyideki etiket kök etiket (Root tag) veya belge kökü (Document root) olarak adlandırılır. Kök etiketin oluşturduğu eleman Belge elemanı (Document Element) olarak adlandırılır. Bu eleman belgenin ağaç yapısındaki diğer bütün elemanları içine alır ve diğer bir elemanın içinde bulunamaz. Örneğin Şekil 4’te verilen elektronik posta örneğinde belge kökü e_posta’dır.

Elemanlar iç içe yuvalandığında yuvalama (nesting) kurallarına uymalıdırlar. Yoksa bu bir XML belgesinin hiyerarşik ağaç yapısını bozacaktır. Aşağıda bir yanlış yuvalama örneği verilmiştir.
HTML allows <B>
<I> improper nesting <B>
<I>









Aşağıda doğru bir yuvalama örneği verilmiştir.
XML requires <B>
<I> improper nesting <I>
<B>












Özellikler (Attributes)
Elemanlara eklemek istediğimiz ek bilgiler özellikler olarak ifade edilir. Özelikler başlangıç etiketi içerisinde isim ve değer ikilileri olarak geçer.

Bir eleman hakkındaki özellik bilgileri aşağıdaki formatta tanımlanır.
<!ATTLIST Elemanİsmi Özellikİsmi ÖzellikTipi Default>









Bir özellik bir isim ve tip bilgisini içerir. Default bir değer olabilir veya özellik kullanımı hakkında bilgi verir.

Dört çeşit default değer tipi aşağıda verilmiştir.

Default

Anlamı

#REQUIRED

#IMPLIED

#FIXED Değer




Değer
Özellik her zaman tanımlanmalıdır.

Özellik opsiyoneldir.

Özellik sabit bir Değer’e sahiptir. Özellik eleman içinde tanımlı olmazsa, parser bu sabit değer’in olduğunu varsayar.

Özellik eleman içinde tanımlı olmazsa, parser bu değer’in olduğunu varsayar. Eğer tanımlı ise özellik farklı bir değer içerebilir.




Aşağıda bir özellik örneği verilmiştir:
<kitap kitap_no=”123456”>









Buradaki kitap_no kitabın bir özelliğidirr. Özellik değerleri mutlaka çift tırnak (“) veya tek tırnak (‘) içine alınmalıdır.


XML 10 değişik özellik tipini destekler. Bu özellik tipleri şunlardır.

Özellik Tipi


Anlamı


CDATA

Enumarated

NOTATION

ENITITY

ENTITIES

ID


IDREF

IDREFS

NMTOKEN


NMTOKENS

Karakter veri (Unparsed)

Özelliğin sahip olabileçeği değerler kümesi

DTD’de tanımlanmış herhangi bir notation.

Harici bir varlık.

Bir den fazla boşlukla (white space) ayrılmış varlıklar.

Bir belge içerisinde geçebilecek tek tanımlayıcı bir değer (unique identifier).

DTD’te tanımlanmış olan bir ID’ye olan referans.

Boşlukla (white space) ayrılmış ID’ler serisine referans.

XML token karaklerlerinden (harf, sayı, nokta, tire, iki nokta, alt cizgi) oluşan bir isim.

XML token karakterlerinden oluşan boşlukla ayrılmış bir çok isim.



Enumerated özellikler bir dizi değer kümesi içerir. Özellik bunlardan bir değeri alabilir:
Aşağıdaki örnek kalem elemanının renk özeliğininin mavi, kırmızı, yeşil veya beyaz olabileceğini göstermektedir. Eğer bir renk seçilmezse default olarak kırmızı renk alınır.
<!ATTLIST kalem renk (mavi | kırmızı | yeşil | beyaz) “kırmızı”>












Karakter Veri

Bir elemanın başlangıç ve bitiş etiketleri içinde geçen metin içeriği karakter veri (character data) olarak adlandırılır. XML içinde özel amaçlı olarak kullanılan (&,<,>,”,’) karaterleri olduğu gibi bir karakater veri içerisinde geçemezler. Bu karakterler işaretleme etiketleri içinde özel amaçlarla kullanılan ayıraçlardır.

XML’de HTML’den farklı olarak etiketler içine yazılmış olan veri içerisinde geçen boşluklar (White Space) korunur ve uygulamalara iletilir. Etiket tanımları içerisinde veya özellik tanımı içerisinde geçen boşluklar ise HTML’de olduğu gibi parser tarafından yok edilir.


Karakter ve Varlık referansları

SGML ve HTML gibi ASCII karakter seti içinde karakterleri göstermek için XML iki yöntem kullanmaktadır. Birinici yöntem karater refereranslarıdır. Karater referansları gosterilecek karateri onluk bir sayının başına “&#”, onaltılık bir sayının başına ise “&#x” ekleyerek gösterme imkanı sağlar. Örneğin copyright karateri ã ondalık olarak “&#169” veya onaltılık olarak “&#xA9” XML’de gösterlebilir.

Varlık referansları verilecek bir isim vasıtasıyla istenilen karaterleri göstermek için kullanılır. Varlık referansları bir amersend (&) karateri, bir isim ve noktalı virgülden (;) oluşur. Örneğin XML’de özel olarak kullanılan (&,<,>,’,”) karakterleri (& < > &apos; ") varlık referansları ile gösterilir. Bu referanslar XML de daha önce tanımlanmış standard referanslardır. Bu referanslar haricinde özel olarak kullanmak isteiğimiz varlık referansları DTD içinde tanımlanmalıdır.

Açıklamalar (Comments)
Açıklamalar HTML’de olduğu gibi “<!--“ ile başlar ve “-->” ile biter. Açıklamalar bir XML belgesinin herhangi bir kısmında geçebilir ve belgenin bir parçası sayılmazlar.

İşlem Komutları (Processing Instructions)
XML belgelerini kullanan uygulamalara her hangi bir komut geçilmesi istenildiğinde bu işlem komutları ile yapılır. İşlem komutları aşağdaki yapıya sahiptir:
<?hedef ...komutlar ... ?>







İşlem komutları XML işlemcisi tarafından uygulamaya iletilir. İşlem komutları açıklamalar gibi bir XML belgesinin parçası sayılmazlar.

CDATA bölümleri (CDATA Sections)
CDATA bölümleri XML’de kullanılan işaretleme ifadelerinin göz ardı edilmesi gereken metinleri yazmada kullanılır. XML parsır’ı bu bölümde metin içerisinde yer alan işaretleme ayıraçlarını ve etiketlerini normal karaterker olarak algılar. Bir CDATA bölümü şu yapıya sahiptir:
<![CDATA[ ... ]]>









Bu yapıda “...” olarak ifade edilen kısım “]]” hariç herhangi bir metini içerebilir. Aşağıda bir CDATA bölümü örneği verilmiştir.
<![CDATA[
*P = &A
C = (i <= 5) ;
]]>










XML Veri Tipi Tanımlamaları (DTD)




Belge Tipi Deklarasyonu (Document Type Declaration)
Belge tipi deklarasyonları bir XML belgesinin giriş kısmında tanımlanan belgenin gramer tanım kurallarını belirleyen hangi harici ve dahili DTD (Document Type Definiton)’yi kullandığını belirtir. Bu kısım varlık referansı tanımlamaları gibi ek bilgilerde içerebilir. Harici belge tipi deklarasyonları şu formatta olabilir:
<!DOCTYPE kök_eleman_ismi SYSTEM "sistem_tanımlayıcısı">
<!DOCTYPE kök_eleman_ismi PUBLIC
"public_tanımlayıcısı""sistem_tanımlayıcısı">







Bu tanımdaki kök_eleman_ismi belge DTD’sinde en üst seviyede tanımlanan kök elemanı belirtir. Sistem_tanımlayıcısı ise harici olarak kullanılan DTD’ye URI (Uniform Resource Idenifier) bir referansı içerir. İkinci satırdaki formatta XML parser’ı ilk önce public_tanımlayıcısı’nı kullarak bir URI referansı oluşturmaya çalışır. Eğer bu mümkün olmazsa sistem_tanımlayıcısı’ndaki referansı kullanır. Aşağıdaki Şekil 2’de verilen adres belgesinin belge tipi deklarasyonu kısmı gösterilmiştir:
<?xml version="1.0"?>
<!DOCTYPE addressbook SYSTEM "http://xyz.com/AddressBook.dtd" [
<!ENTITY amp "&#38;">
<!ENTITY apos "'">
]>












İlk satır adres belgesindeki kök elemanın adressbook olduğunu belirtmektedir. Belgenin DTD’si http://xyz.com/AddressBook.dtd dosyasında saklanır. Bunun haricinde köşeli parantez içinde tanımlanan kısım ise varlık referanslarını tanımlamaktadır. Bu kısımda istenirse dahili belge tipi tanımlamalarıda bulunabilir.


İyi Oluşmuş (Well-formed) ve Doğru (Valid) Belgeler

XML söz dizimi (syntax) kurallarına uyan XML belgeler iyi-oluşmuş (Well-formed) belgeler olarak adlandırılır. Eğer belge için tanımlanmış olan DTD’de geçen gramer kurallarına uyuyorsa bu durumdaki belgelerde doğru (Valid) belgeler olarak adlandırılır.

N. XML ŞEMALARI (XML SCHEMAS)
XML şemaları XML belgelerinin yapısını DTD’te olduğu gibi tanımlada kullanılan yeni bir yöntemdir. World Wide Web Konsonsiyumu (W3C) DTD’nin bazı sınırlamaları nedeniyle yeni bir alternative olarak 1998 yılında XML-Data note yayınladı. XML-Data note’u belge yapılarının bir XML sözlüğü olarak tanımlanmasını önermiştir. Bu yeni belge yapısı tanımlama yöntemi XML şema (XML Schema) olarak adlandırılmakta ve Microsoft tarafından desteklenmektedir.







W3C standardlaştırma çalışmaları aşamalarında farklı seviyelerde standard spesifikasyonları yayınlamaktadır. Bunlar şunlardır:
  • Note : Bir fikir veya açıklamayı içeren en aşağı seviyedeki spesifikasyon
  • Working Draft : Standardlaştırma çalışmalarının devam ettiğini sürede yayınlanan spesifikasyonlar.
  • Recommendation : Working Draft aşaması sonucu elde edilen en son seviye standard specifikasyonu.















XML şemaları ilgili iki tane Working Draft yayınlanmıştır. Bunlar şunlardır:



XML şemaları bir XML sözlüğü olarak tanımlandığından normal bir XML belgesi olarak işlenebilir ve parse edilebilir. 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.






ALINTIDIR...
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.