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:
- ? : sifir yada bir
- +: bi yada daha cok
- *: sifir yada daha cok
demektir.
« TimeML | Sınıf (class) »
Yorumlar
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
- Visual Basic ile Gösterici (Pointer) Kullanımı
- Hasse Çizgeleri (Hasse Diagrams)
- Zeki Vekiller (Akıllı Ajanlar, Intelligent Agents, Zeki Etmenler )
- Integral Kriptoanalizi ( Toplam Tecessüsü , Integral Cryptoanalysis)
- Diferansiyel Kriptoanalizi ( Fark Tecessüsü , Differential Cryptoanalysis)
- Sierpinski Üçgeni (Sierpinski Triangle)
- C ile programlamaya giriş final sınavı çözümleri
- Çok Seviyeli Sıralar (Multi Level Queues)
- Çift Özetleme (Double Hashing)
- İkinci Dereceden Sondalama (Quadratic Probing)
Yapılan Son Yorumlar
- Şadi Evren ŞEKER: Null, NULL, nil veya null olarak...
- Fatih Kabakci: hocam merhabalar,...
- kara: Çok güzel anlatılmış gerçekten teşekkürler...
- Şadi Evren ŞEKER: Bahsettiğiniz şekil dönüşümü...
- Caner: Kullanıcıdan açı girdisi almıyorsanız...
- Furkan Yediyildiz: Algoritmanin mantigi cok güzel...
- havva: çok sağolun çok güzel açıklamalar var tşk...
- Şadi Evren ŞEKER: typedef komutu, bir yapıdan yeni bir...
- fatih kabakci: hocam ben structures ile ilgili bir sorum...
- Şadi Evren ŞEKER: evet, yukarıda açıklanan, herhangi...
- Abdurrahman ulusoy: fi açısından teta kadar döndürme...
- Şadi Evren ŞEKER: Hayır yok, bir noktanın, herhangi...
- Abdurrahman ulusoy: Bu durumda yukarıdaki formüllerin...
- Abdurrahman ulusoy: Merhaba hocam Üstteki mesajımda...
- mustafa ekmekcioğlu: merhaba şadi bey ben hacettepe...
- Şadi Evren ŞEKER: Talebiniz üzerine...
- Evren Kocaturk: ve bunu matlab üzerinde, gerekli...
- Evren Kocaturk: teşekkürler, işime yarayacak gibi,...
- tuncay çavuşoğlu: Şadi bey teşekkürler.Kısa ve...
- attila: hocam bunun bir örneginide Visual Basic diliyle...
Yakın Yazılar
XML (extensible markup language , genişletilebilir işaretleme dili)
Veri Tanımlama Dili (Data Definition Language)
DTD (Document Type Definition, Döküman Tip Tanımı)
Değişken Tip Bağlama (Dynamic Type Binding, Müteharrik Şekil Bağı)
Veri yapıları üzerinde fonksiyonlar
http (hyper text transfer protocol, hipermetin transfer protokolü)
Bağlantılar
[...] denetimler de yapabilmektedir. Örneğin istenilen standartlara uymayan bir XML dökümanını DTD, XSD gibi ilave yapılar ile tespit etmek [...]
[...] etiketlerdir(tag) ve olayları tutmak için kullanılır. Genel olarak her olay bir fiildir ve DTD kayıdı aşağıda [...]