Xml Hakkında Bilgi

Xml Hakkında Bilgi

Genişletilebilir İşaretleme Dili ( eXtensible Markup Language ) SGML "den türetilmiş, basit ve çok esnek bir işaretleme dildir.( http://www.w3.org/XML/#intro "Extensible Markup Language (XML) is a simple, very flexible text format derived from SGML") W3C ye göre XML" in tanımıdır. Hala gelişim içinde bulunan XML bir çok kişinin düşündüğü gibi HTML in yerini almak için geliştirilmemiştir. Peki neden XML "e ihtiyaç duyarız. Aslında XML büyük ölçekli elektronik yayıncılıkta kullanılmak üzere dizayn edilmiş, aynı zamanda da geniş çeşitlilikteki verilerin web üzerinden veya herhangi bir platformda alış verişinin sağlanmasında önemli bir rol oynamaya başlamıştır. ( http://www.w3.org/XML/#intro "Originally designed to meet the challenges of large-scale electronic publishing, XML is also playing an increasingly important role in the exchange of a wide variety of data on the Web and elsewhere.") Maddeler halinde XML "i anlatmak gerekirse; - XML , HTML gibi bir işaretleme dilidir. - XML, veri yi tanımlamak için dizayn edilmiştir. - Önceden belirtilmiş etiketler (tag) yoktur. Kendi etiketlerinizi kendiniz oluşturmanız gerekir. - XML de veriyi tanımlamak için doküman tipi tanımlaması DTD (Document Type Definition ) veya XML Schema kullanmanız gerekmektedir. - XML DTD veya XML Schema ile birlikte kendini tanımlayıcı bir yapıda olması gerekmektedir. Biraz maddeleri açmamız gerekirse XML, HTML gibi bir işaretleme dilidir. (Markup Language). XML, HTML "in yerin almak için geliştirilmemektedir. İkisi de farklı amaçlar ile geliştirilmiştir. HTML verinin gösterilmesi için geliştirilmiştir ve verinin nasıl görüntülendiği ile ilgilenir. XML ise verinin tanımlanması için geliştirilmiştir ve verinin ne olduğu ile ilgilenir. Kısaca HTML, bilgiliyi gösterir, XML ise bilgiyi tanımlar. XML de HTML deki gibi önceden belirtilmiş etiketler (tag) bulunmaz, bunların yerine kendi etiketlerinizi oluşturursunuz. İlk bakışta çok serbest bir yapı gibi görünse de verdiğiniz etiketlerin sıralamaları, içerdiği veri veya öğeleri, DTD "iz de tanımlamanız ve bu kurallar sıkı sıkıya uymanız gerekmektedir. DTD yi kendiniz oluşturacağınız gibi hali hazırda başkaları tarafından kullanılmakta oldan DTD "leri kullanabilirsiniz. XML DTD veya XML Schema nızla beraber kendini tanımlayıcı bir yapıda bulunması gereklidir. Peki bu nedir? Az önce üst bölümde açıkladığım gibi DTD ler sayesinde XML belgenizde kullanmış olduğunuz etiketlerin niteliklerini, yapılarını ve içermesi gereken verileri veya diğer etiketleri tanımladığınız bölümdür. Bu bölüm XML belgesinin içinde olabileceği gibi bir dış belge olarak XML belgesinde link edilmiş olabilir. Bu DTD ler sayesinde XML belgeniz browser veya farklı bir program tarafında çözümlenerek görüntülenir.

XML"E GİRİŞ

XML(Extendsible Markup Language - Gelişleyebilir Markup Dili) yeni çağın internet üzerinden veri taşıma ve verileri işleme dili olarak tasarlanmıştır. İsminden anlaşılacağı gibi bu dilin tag"lerini kullanıcı kendi ihtiyaçları doğrultusunda genişletebilir. HTML kullanırken bildiğimiz gibi belirli sayıda tag ile web sayfalarımızı dizayn ediyorduk. Fakat artık XML sayesinde web üzerinde verileri taşıma ve işleme gibi görevleri daha kolay yapabaliriyoruz. Burada şu hususa dikkat etmekte yarar var: HTML verinin kullanıcıya ulaştrırken hangi formatta sunulduğu ile ilgilenir. Buna karşın XML ise veriyi nasıl anlamlı bir bütün olarak ve sunulan verinin kendini programcı tarafından üretilen tag"larla nasıl tanımladığıyla ilgilenir. Aşağıda bir xml belgesi örneğimiz var:

istanbulseyrantepe

ankaraetimesgut

izmirbornova

erzincanrefahiye

Yukarıdaki XML belgesi örneğinde de görebileceğiniz gibi bir XML belgesinde ilk satır bulunmaz zorunda. Bu giriş satırı dosyanın bir XML belgesi olduğunu deklare eder. Sonraki satırda ise programcıya yardımcı olacak yorum/açıklama satırımız bulunuyor. Dikkat ederseniz XML" de yorum satırlarımızı aynı HTML"de olduğu gibi yazarabiliriz. Yukarıdaki kodumuz tag"larımız iç içice girmiş (nested-loops gibi). Burda tag"ından sonra tag"ı geliyor. Bu durumda önce yazar tagını, sonra yazarlar tagını kapatmalıyız. Yani en dıştaki tag en son kapanmalı.

............

 Yukarıdaki kod parçasında önce açılmıştır. Sonra ve en son ise açılmıştır. Buna göre önce sonra ve enson olarak "i kapatmak durumundayız. Son olarak XML"i HTML"den ayıran diğer bir önemli nokta ise XML büyük- küçük harf duyarlıdır (case-sensitive). , ve tag"larının hepsi birer tag olarak XML tarafından algılanır.

 BİR XML BELGESİNİN YAPISI

XML, HTML metin tabanli bir dil oldugundan dolayi basit bir metin düzenleyicisi ile yazila bilinir. Buradaki islemlerimiz için Notepad yeterli olacaktir. Simdi gelin asagidaki örnek xml belgesini olusturalim.

istanbulseyrantepe

ankaraetimesgut

izmirbornova

erzincanrefahiye

 Yazdigimiz Örnek xml metinini yukaridan asagiya dogru incelemeye baslayalim. Ilk üç satirdan olusan blok giris bölümü olarak adlandirilir. Bu blogun ilk satir ise XML bildirimini içerir Bu satirla yazdigimiz dokumanin bir xml belgesi oldugunu deklare edip, versiyonunu belirtmis ve kullanacagimiz dil biçiminiz (encoding) belirtmis durumdayiz.

 Ikinci satira bosluk satiridir. Bu satir sadece xml belgesinin baskalari tarafindan rahat okunmasi amaciyla birakilmistir. XML islemcisi bu satirlari göz ardi edecektir. Üçüncü satir ise yorum satiridir. ile biten bölüm arasina -- isaretleri haricinde herhangi bir sey yazila bilinir. Bu kismin her xml belgesinde olacak diye bir kosul yoktur. Bu yorum kismi xml belgemizin baskalari tarafindan daha rahat anlasilmasi için yazmaktayiz. Hatirlarsak XML amaçlarindan biri okunabilirligi yüksek olan belgeler olusturmakti.

 Giris bölümünde, örnekte bulunan bildirimler ve yorumlar haricinde belgenin türünü ve yapisini belirleyen bir bildirim veya XML görüntülemek için CSS gibi bir belgeyi ekleye bilirsiniz. Giris bölümünden sonra gelen ilk etiket (tag) kök elemanina ait etiket(tag)dir. Örnegimizde kök eleman denemeler`dir. Tüm XML belgelerinde tek bir kök eleman bulunmalidir. Bu elemanin içine yerlesmis olan diger elemanlar ve veriler esas verinin bulundugu ve siniflandirildigi bölümdür.

 Herhangi bir sekilde XML belgemizin nasil görüntülenecegine dair bir bildirim yapmadigimizdan dolayi Internet Explorer belgemizi kendinde mevcut olan default biçimde bize gösterecektir.

 XML Belgemize bir CSS belgesi ekleyerek belgemizi bizim belirledigimiz formatlarda görüntülenmesini saglaya biliriz. Ekleyecegimiz CSS dosyasinin link ni yukarida belirttigimiz gibi giris bölümünde tanimlamamiz gerekmektedir. Isterseniz ilk önce CSS dosyamizi bir olusturalim.

deneme{ display:block; margin-top:12pt; font-size:10pt}

il{ font-size:16pt; font-weight:bold; font-style:italic; margin-left:20pt;}

ilce{ font-size:16pt; font-weight:bold; font-style:italic;}

 XML belgemize css dosyasini giris bölümüne satirini ekleyerek eklemekteyiz. Buradaki

istanbulseyrantepe

ankaraetimesgut

izmirbornova

erzincanrefahiye

 Herhangi bir elemani veya elemana ait olmasi gereken bir biçim özelligini CSS belgemizde belirtmeseydik. Bir üstündeki elemana ait özellikleri alarak görüntülenecektir.

XML DOKÜMAN TİPİ TANIMLAMASI - 1

XML belgemizi neden standart bir hale sokmalıyız? XML ‘in ana çıkış amaçlarından birisi de veri depolamadır. Örneğin bir projede XML belgeleri oluşturulması isteniyor ve bu belgeler özel bir yazılım sayesinde işlenecek. Tüm kullanıcıların XML belgeleri önceden tanımlanmış ortak bir DTD (Document Type Defination) içerirse, bu belgelerin istenilen yapıya uygun olması, çalışanların gelişigüzel yeni etiketler eklememeleri, etiketlerle depolanan bilgiyi hatalı sıralamamaları, etiketlerine hatalı nitelikler eklememeleri sağlanır. Ayrıca işlem yapan programında bu belgeleri tanıması ve işlemesi garanti altına alınmış olunur. DTD (Document Type Defination) nedir? XML belgelerimizin giriş bölümünde tanımlanan ve belgenin yapısını belirleyen Doküman Tipi Belirleyicisidir. DTD’nin amacı yukarıda belirttiğimiz gibi XML belgemizin kurallara uygun yapısal bloklarını tanımlamaktır. Bir DTD’nin genel biçimi aşağıdaki gibidir.

 Buradaki name kısmı belgemizdeki kök elemanının adını belirtir. DTD kısmı ise belgede geçecek olan etiketlerin, etiket niteliklerinin ve diğer özelliklerinin tanımlarının bulunduğu kısımdır.

 Tâbi ki DTD bildirimlerimizi sadece belgemizin içinde yapmamaktayız. Ayrıca dışarıdan herhangi bir DTD "yi belgemizin içinde kullanmak amacıyla XML belgemize ekleyebilmekteyiz. Bir DTD belgesini XML belgemize eklememiz için gerekli olan söz dizilimi aşağıdaki gibidir.

 DTD tanımlamasını dış bir dosyadan alırsak aşağıdaki şekilde düzenlememiz gerekecektir. basit.xml :

Basit bir XML Dökümaný

basit.dtd:

Bir doküman tipi tanımlamasında aşağıdaki işaretleme bildirimleri bulunur.Eleman Türü Bildirimleri : XML "de kullandığımız elemanlar, içerikleri ve sıralanışları DTD ‘in içinde tanımlanmaktadır. Bir eleman bildiriminin söz dizimi aşağıdaki gibidir.

veya

---- Boş Elemanlar: XML ‘de boş içerikli elemanlara sahip olabiliriz. Örneğin HTML "deki
veya etiketleri gibi. Bu elemanların bildirimleri için EMPTY anahtar sözcüğünü kullanırız. Örnek:

XML belgemizde IMAGE elemanýný aþaðýdaki þekillerde kullanabiliriz. veya

----- Herhangi bir içerikli Elemanlar: XML belgemizde karışık içerikli elemanlarımız bulunabilir. Bu elemanımız içinde herhangi bir sırada ve tekrar edilebilen elemanlar karakter verisi içeren veya içermeyen sıfır veya daha fazla alt eleman içerebilir. Herhangi bir data kombinasyonunu içerebilir. En serbest içerik tanımıdır. Örnek;

---- Alt elemanlı Elemanlar: XML belgemizde bir elemanımızın içine yerleştirilmiş elemanlarımız bulunabilir. Bu konu ile ilgili örneklerimize konumuzun ilerleyen kısmında geniş bir şekilde yer vereceğiz.

---- Karışık içerikli Elemanlar: Karakter verisi ile seçimimize bağlı istediğimiz kadar alt eleman barındıran elemanlardır. Bu konu ile ilgili örnekler ilerleyen kısımda verilecektir.

Nitelik Bildirimleri: Elemanlarımızın alabilecekleri veya almaları gereken nitelikleri dtd içerisinde tanımlamanız gerekmektedir. Bu bildirim sayesinde: Elemanla ilişkili nitelik adları tanımlanır. Geçerli bir XML belgesinde bir elemanın başlangıç etiketinde yalnızca bu eleman için tanımladığımız nitelikleri kullanabiliriz. Bu niteliklerin veri türleri belirlenir. Her niteliğin gerekli olup olmadığı (REQUIRED), eğer gerekli değilse ve belirtilmediyse işlemcinin ne yapacağını belirtir. Bir nitelik bildiriminin söz dizimi aşağıdaki gibidir:

Burada Eleman_adi olarak nitelik belirteceğimiz elemanın adını, nitelik adı olarak verilecek niteliğin adını yazmaktayız. Ayrıca nitelik tipi ve eğer nitelik belirtilmezse default değer yerine verilen değer ile işlemcinin nasıl bir işlem yapacağını belirtmekteyiz. Örneğin;

Nitelik tipleri aşağıdaki değerleri alabilir.

Değer

Açıklaması

CDATA

Değer Karakter verisi olması

(en1|en2|..)

Değer parantez içindeki değerlerden birisi olmalı

ID

Değer tekil ID olmalı

IDREF

Değer başka bir elemanın ID si olmalı

IDREFS

Değer başka ID ‘lerin listesi olmalı

NMTOKEN

Değer geçerli XML adı olmalı

NMTOKENS

Değer geçerli XML adı listesi olmalı

ENTITY

Değer bir varlık olmalı

ENTITIES

Değer bir varlık listesi olmalı

NOTATION

Değer bir notasyon olmalı

xml:

Değer önceden tanımlamış bir XML değeri olmalı

 

Default Değer aşağıdaki değerleri alabilir.

 

Değer

Açıklama

deger

Niteliğin Default değeri

#REQUIRED

Nitelik değeri Eleman içinde geçmek zorundadır.

#IMPLIED

Nitelik değeri Eleman içinde geçmek zorunda değildir.

#FIXED value

Nitelik değeri sabittir. Eğer nitelik değeri belirtirseniz default değeri yazmak zorundasınız.

 

XML DOKÜMAN TİPİ TANIMLAMASI - 2

 Varlık (Entity) Bildirimleri: Varlık bildirimleri XML belgemizde kullanacağımız değişik tür ve biçimlerdeki verilerimizi XML belgemize aktarmamızın bir yoludur. Örneğin sıklıkla kullandığımız bir metin bloğunu varlık olarak tanımlayarak istediğimiz yerde bu metni kolayca ekleyebilir ve bu metin üzerindeki değişiklikleri varlık bildiriminden yapabiliriz. Bunun yanı sıra XML belgemizin dışındaki harici bir dosyayı varlık olarak tanımlayarak içindeki veriyi XML belgemizde kullanabiliriz. Bu veri metin olmak zorunda değildir. XML belgemiz içinde tanımladığımız varlık için bir veri pratikte metin olmak zorundadır. Ama varlık olarak tanımlayacağımız harici bir dosyanın içeriği herhangi türden bir veri olabilmektedir. XML belgemizin içinde tanımlayacağımız bir varlık için söz dizimi aşağıdaki gibidir.

 Harici bir dosyadan alınacak bir varlık için söz dizimi ise aşağıdaki gibidir.

 (Not: URL = Uniform Resource Locator / URI = Uniform Resource Identifier ) Geçen yazımızı da gözönüne alacak olursak bir döküman tipi tanımlamasında bulunan işaretleme bildirimlerini yüzeysel olarak tanımlamış durumdayız. Şimdi biraz daha ayrıntıya girelim. 1- Eleman Bildirimleri : Bir önceki yazımızda kısaca değindiğimiz eleman bildirimlerine bu başlığımızda daha geniş bir şekilde yer vermeye çalışacağız. Bir eleman bildirimi aşağıdaki söz dizimine sahiptir.

Buradaki eleman_adi XML belgemizde kullanacağımız elemanın adıdır. Alabileceği değerler şu kurala uygun olmak zorundadır; ”İsim bir harf ya da alt tire (_) ile başlayıp sıfır ya da daha fazla harf, rakam, nokta(.), tire(-) veya alt tire (_) ile devam etmelidir. Ayrıca xml öneki (Küçük veya Büyük harflerin kombinasyonundan olabilir) ile başlayan eleman adları standartlar için ayrılmıştır. Şart koşulmasa da, ileride problemlerle karşılaşmamak için kullanılmaması uygun olur.” Elemanlarımızın alabileceği içerik türlerini Kategorisi kısmında belirtmekteyiz. Kategori kısmında içeriği belirlenir. Eğer bir eleman alt elemanlara sahipse sadece belirtilen alt elemanları içerebilir. Örneğin;

]>izmirbornova

 Bu örnekte dikkat edecek olursanız deneme elemanı tanımlanırken il ve ilce alt elemanlarını içerir bir şekilde tanımlanıyor. il ve ilce elemanları ise sadece karakter verisine sahip olacak şekilde tanımlanmıştır. Not: #PCDATA anahtar sözcüğü karakter verisinin tanımıdır. Kategori bölümü iki temel şekilde bulanabilinir. Bunlardan birisi sıralı, yani içerilen elemanlar belirtilen sırada bulunmak zorundadır. Ya da seçimli, yani belirtilen elemanlardan birisi seçilip yer verilmesi şeklindedir. Sıralı : Alt elemanların belli bir sıra içinde bulunması gerektiği zamanlarda eleman bildiriminde, kullanılacak alt elemanlar virgülle ayrılmış ve bulunacakları sırayla kategori kısmında belirtilirler. Örneğin;

]>

şeklinde bir DTD belgesine sahip olan bir XML belgesinin aşağıdaki şekilde olması gerekir.

erzincanrefahiye

Eğer ki bu satırlardan herhangi birisi bulunmazsa ya da yerlerinin sıralarında bir değişiklik olursa XML belgemiz DTD ‘mize uygun olmaz. Örneğin aşağıdaki deneme elemanları yukarıdaki DTD ‘mize göre geçersiz elemanlardır.

erzincanrefahiye

veya

erzincanrefahiye

Bir alt elemanı birden fazla tekrarlamak da geçersizliğe neden olacaktır. Seçimli : Alt elemanlardan birisinin elemanın içinde bulması için eleman bildiriminde kategori bölümünde alt elemanlar ( | ) işareti aralarına konularak tanımlanırlar. Örneğin;

]>

Şeklindeki bir DTD ‘e sahip olan XML belgesi aşağıdaki şekillerde olabilir.

erzeneveya

ergenekon

veya

3

 Ama herhangi bir elamanın tekrarı veya belirtilen iki elemanın bir arada kullanılması durumunda eleman geçersiz olur.

Döküman Arama

Başlık :

Kapat