DTD (Document Type Definition, Döküman Tip Tanımı)


Yazan: Şadi Evren ŞEKER

XML veya HTML dosyalarındaki kayıtların uyması gereken koşulları belirlemeye yarar. Buna göre bir XML dökümanı istenilen bir DTD kuralına tabi tutularak bu kurala uyup uymadığı denetlenebilir. DTD’nin kendisi de bir dil olarak tanımlanabilir ve bu dilin de kendisine özgü kuralları bulunmaktadır.

Temel olarak bir dökümanda kullanılacak olan DTD’nin belirlenmesi iki türlü mümkündür. Birinci yöntemde dökümanda kullanılacak olan DTD tanımı harici olarak yapılmıştır ve dökümana bu harici tanım belirtilir. İkinci yöntemde ise DTD tanımı doğrudan dökümanın içinde yapılır.

İlk gruba örnek olarak aşağıdaki yapıyı alabiliriz:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Yukarıdaki örnek kodda bir HTML tamını içerisinde kullanılacak olan DTD dosyasının yolu verilmiş ve HTML kodlarımızın bu DTD dosyasındaki kurallara uygun olacağı tanımlanmıştır.

İkinci gruba yani döküman içerisinde DTD tanımının yapıldığı duruma örnek olarak aşağıdaki kodu inceleyelim:

<?xml version=”1.0”?>
<!DOCTYPE SIMPLE
	[
		<!ELEMENT SIMPLE ANY>
	]
>
<SIMPLE> Bu basit bir dtd'li xml ornegidir. </SIMPLE>

Yukarıdaki örnekte basit bir XML dosyası ve dosyanın içeriğinde bir DTD tanımı yapılmıştır. Bu DTD tanımı <!DOCTYPE ile başlayan ve > işareti ile biten aralıktır. DTD alanında bir SIMPLE etiketi(tag) tanımlanmış ve bu etiketin içerisine ANY yapısına uygun yani XML kurallarına uygun herhangi bir bilgi girilebileceği belirtilmiş. Dolayısıyla XML dökümanının içerik kısmında da benzer şekilde SIMPLE etiketi kullanılmış ve içerisine serbest olarak bir metin girilmiştir.

Biraz daha detaylı tanımların yapıldığı aşağıdaki DTD örneğini inceleyelim:

<!DOCTYPE INSAN
	[
	<!ELEMENT INSAN(ISIM,SOYISIM,MEMLEKET)>
	<!ELEMENT ISIM(#PCDATA)>
	<!ELEMENT SOYISIM(#PCDATA)>
	<!ELEMENT MEMLEKET(#PCDATA)>
	]
>

Yukarıdaki örnekte INSAN dökümanı içerisinde ISIM, SOYISIM ve MEMLEKET etiketleri bulunacağı belirtilmiş ve bu etiketlerin tipi olarak PCDATA tanımlanmış. PCDATA alanlar yanlızca karakter içerikli veriler bulundurabilir. Örneğin aşağıdaki XML kodu yukarıdaki DTD tanımına uygundur:

<INSAN>
	<ISIM>ŞADİ</ISIM>
	<SOYISIM>ŞEKER</SOYISIM>
	<MEMLEKET>İSTANBUL</MEMLEKET>
</INSAN>

Ancak aşağıdaki kod yukarıdaki DTD tanımı dahilinde çalışmaz:

<INSAN>
	<SOYISIM>VELI</SOYISIM>
	<ISIM>ALI</ISIM>	
	<MEMLEKET>GIRESUN</SOYISIM>
</INSAN>

DTD tanımlamaları içinde ayrıca mantıksal operatörler kullanılması da mümkündür. Örneğin yukarıdaki örnekte bir insan etiketi için mutlaka isim, soyisim ve memleket tanımı yapılması beklenmektedir ancak meslek için farklı bir durum söz konusudur bir insan postac, mühendis yada hemşire olabilir ama hepsini birden olması beklenemez. İşte böyle bir DTD tanımı aşağıda verilmiştir:

<!DOCTYPE INSAN
	[
	<!ELEMENT INSAN(POSTACI | MUHENDIS | HEMSIRE)>
	<!ELEMENT POSTACI(#PCDATA)>
	<!ELEMENT MUHENDIS(#PCDATA)>
	<!ELEMENT HEMSIRE(#PCDATA)>
	]
>

Yukarıdaki DTD örneğinde dikkat edilecek nokta etiketler arasına | (pipe) işareti konmuş olmasıdır. Bu işaretin anlamı mantıksal olarak veya’dır.

Yukarıdaki DTD tanımına uygun bir XML dökümanı aşağıdaki şekilde olabilir:

<INSAN>
	<POSTACI>ALI</POSTACI>
</INSAN>

veya

<INSAN>
	<MUHENDIS>ALI</HEMSIRE>
</INSAN>

ama asagidaki dokuman birden fazla komutu ayni anda icerdigi icin gecersiz kabul edilir.

<INSAN>
	<MUHENDIS>ALI</HEMSIRE>
	<POSTACI>ALI</POSTACI>
</INSAN>

Ayrıca DTD tanımı içerisinde bir etiketin ne kadar olması gerektiği de tanımlanabilir bunu için  ?, +, * sembolleri kullanılır

automata theorydeki regular expressionlardan esinlenen bu semboller kisaca:

demektir.


« TimeML   |   Sınıf (class) »



Yorumlar

Kullanıcı girişi yaparak ya da zorunlu olan * alanlarını doldurarak yorum yapabilirsiniz.

İsminiz *

Email adresiniz *

Web siteniz

Mesajınızı buraya yazabilirsiniz:

Toplam 2 yorum var.

  1. XML (extensible markup language , genişletilebilir işaretleme dili) : bilgisayar.kavramlari.com | 15 Jul 2008, 21:04

    [...] denetimler de yapabilmektedir. Örneğin istenilen standartlara uymayan bir XML dökümanını DTD, XSD gibi ilave yapılar ile tespit etmek [...]

  2. TimeML : bilgisayar.kavramlari.com | 15 Jul 2008, 21:22

    [...] etiketlerdir(tag) ve olayları tutmak için kullanılır. Genel olarak her olay bir fiildir ve DTD kayıdı aşağıda [...]

Bu Yazı Hakkında

Bilgisayar Kavramları üzerinde şu anda okumakta olduğunuz 'DTD (Document Type Definition, Döküman Tip Tanımı)' isimli yazı 15 Jul 2008 tarihinde, saat: 21:03 'de Şadi Evren ŞEKER tarafından gönderilmiş, toplam 544 defa okunmuştur.

Benzer yazıları Automata (otomatlar, özdevinirler), Programlama Dilleri, veri yapıları kategorilerinden okuyabilirsiniz. Yazar ile irtibat kurmak için email gönderebilirsiniz. Yazıya yorum yapabilir ya da yapılan yorumları RSS 2.0 ile takibe alabilirsiniz.


Yazarın Kitabı

Bu yazının yazarı Şadi Evren ŞEKER'in son çıkan kitabı "Programlama ve Veri Yapılarına giriş (C, C++ ve JAVA ile)" hakkında bilgi almak için Buraya tıklayabilirsiniz.
Eklenen Son Yazılar
Yapılan Son Yorumlar
Yakın Yazılar
Bağlantılar