XML (Extensible Mark-up Language) Hüseyin Kaya



Benzer belgeler
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.

BTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (2. Kısım)

Laboratuar Notları #3

Öğrenci nesnesi için bir etiket

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

Elbistan MYO Güz Dönemi Öğr.Gör. Murat KEÇECİOĞLU

XML'in Temelleri. XML veri tanimlamayi saglayan ve verilerin alisverisinde kullanilacak standart bir format olarak kullanilan bir dildir.

HTML (Hyper Text Markup Language)

XML. Ahmet Demirelli Sabancı Üniversitesi 2007

4. Bağlantı (Köprü) Oluşturma

2. HTML Temel Etiketleri

İNTERNET PROGRAMLAMA II. Tanımlar

HTML 5 ve CSS 3. Yrd. Doç. Dr. Murat Olcay ÖZCAN

Css Stillerinin Nesneyi Etkileme Yolları Ve Sırası, Diez, Nokta, Yıldız, Class Css De Neyi İfade Eder.

7. Çerçeveler. Bu bölümü bitirdiğinizde,

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 5

HTML Bloklar. CSS Display özelliği

Ç NDEK LER 1 XML E G R fi 1 XML Nedir? 1 XML in Avantajlar 3 HTML ve XML Aras ndaki Farklar 4 XML Dosyalar n Görüntülemek 6 XML Dosyas Oluflturmak 9


MODÜL 3 HTML İLE STİL ŞABLONLARI

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜH.

Html temelleri. Ders 4

HTML 5 ve CSS 3. Yrd. Doç. Dr. Murat Olcay ÖZCAN

BTP208 İnternet Programcılığı II XML ve XML Uygulamaları. (1. Kısım)

13 Aralık Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz

Kelime işlemcilerin işlevlerini öğrenmek. Başlıca kelime işlemcileri tanımak. Microsoft Word 2010 programı hakkında temel bilgileri öğrenmek.

2-Hafta Temel İşlemler

Regular Expressions Version 0.1

Metin İşlemleri, Semboller

HSancak Nesne Tabanlı Programlama I Ders Notları

HTML içerik oluşturmak için düşünülen bir işaret dilidir. Örnek

HAVAYOLU ELEKTRONİK BİLET RAPORU

Web Teknolojileri ve Programla

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Internet Programming II

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Bilgisayar Programcılığı Ön Lisans Programı WEB EDİTÖRÜ. Öğr. Gör. Rıza ALTUNAY

Üst Düzey Programlama

MENÜ AYARLAMA 1. MENÜ AYARLAMA. [X] [X] Standard. [X] [X] Yeni Fonksiyon

Basamaklı Stil Şablonları (CSS) BIM206 Web Programlama

Şekil 1. Sitiller ve biçimlendirme

WEB TASARIMIN TEMELLERİ

Dinamik Kodlama. [X] [X] Yeni Fonksiyon

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

Laboratuar Notları #2

CSS (Stil Şablon) (Cascading Style Sheets) YRD. DOÇ. DR. ENGİN CEMAL MENGÜÇ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

Öğr. Gör. Serkan AKSU 1

WebInstaller. 1. Kurulum Đçin Gereksinimler

Ekran 1: Ziraat Bankasından alınan Excel formatındaki ZIRAATBANKASI.XLS isimli dosya

E-UYGULAMALAR VE DOKÜMAN YÖNETİM SİSTEMİ PROJESİ (EUP)

Sevdiğiniz editörü açın, Notepad, vi, pico vb. Daha sonra da aşağıdaki kodu yazın:

WEB TASARIMI. Đnternet Nedir?

Web Tasarımının Temelleri

Arama Sonuçlarında Üst Sıralarda Olmak. Temel SEO Çalışması

PHP I PHP I. E. Fatih Yetkin. 26 Eylül 2011

5. Tablo İşlemleri. Bu bölümü bitirdiğinizde,

<html> <head> <title>sayfa Başlığı</title> </head> <body> Bu benim ilk sayfam <b>bu metin koyu</b> </body> </html>

GoFeed Kullanıcı Arayüzü

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 2

Atatürk Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü BM Web Programlama ÖDEV 1

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

TÜİK e-vt Teknik Kılavuz

C Programlama Dilininin Basit Yapıları

e-fatura Uygulaması (Zarf Yapısı) Versiyon : 1.4 2/10

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

BOOTLOADER MANUAL DOCUMENT

WEB TASARIMINDA TEMEL KAVRAMLAR

ENROUTEPLUS TA YAPILMASI GEREKENLER

İnternet,artık hayatımızın önemli bir parçası. Her gün interneti programlar aracılığı ile ya da internet siteleri aracılığı ile kullanıyoruz.

BİL435 LATEX ile Doküman Hazırlama

TecCom TecLocal Programı Kurulum ve Yapılandırma Rehberi

Temel Bilgisayar Programlama

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

Site Temizlik Projesi Kodları. Site Tasarım Çalışması -3

BİL-142 Bilgisayar Programlama II

HSancak Nesne Tabanlı Programlama I Ders Notları

Site Temizlik Projesi Kodları

Teknik Doküman. Autodesk Revit Building te yeni ölçü tipleri yaratmak

Kontrol: Gökhan BİRBİL

Elbistan MYO Güz Dönemi Öğr.Gör. Murat KEÇECİOĞLU

3. Metin ve Görünüm Etiketleri

ENVİSTA ARM MERKEZ YAZILIMINA VERİ AKTARMA PROSEDÜRÜ

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

EDI MIGROS (Sipariş) LOGO ENTEGRASYONU

İçindekiler. 1. Cep Anahtar Başvuru

BMT 202 Web Tasarımı Bahar Dönemi. Yük. Müh. Köksal GÜNDOĞDU 1

Bilgi Merkezi Web Siteleri

HTML Etiketleri Genel Özellikler (Global Attributes)

HALK SAĞLIĞI LABORATUARI WEB MODÜLÜ

A Temel İlkeler. B Kurumsal Evrak

Çözüm Bilgisayar. Çözüm İntSite

XML ile Mesaj İşlemleri

dinamo / Periyodik İşler

WEB TASARIM. Öğr.Gör. Ruhsar KAVASOĞLU

görüntüleyebilirsiniz. HTML, programlama dilleri bir programlama mantığı taşımadığından öğrenilmesi gayet kolay bir dildir.

1.1 Web Kavramlar URL terimini tanımlayınız ve anlayınız.

T.C. OSMANİYE KORKUT ATA ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ GIDA MÜHENDİSLİĞİ BÖLÜMÜ OSMANİYE STAJ RAPORU

Transkript:

XML (Extensible Mark-up Language) Hüseyin Kaya Mart 2002

2

XML e Giriş XML (Extensible Markup Language), W3C (Worl Wide Web Consortium) tarafından geliştirilen bir kaynak hazırlama standartıdır. XML aslında SGML (Standart Generalized Markup Language) adlı daha geniş ve kapsamlı bir standardın alt kümesi sayılabilir. 1980 den beri var olan SGML çok kapsamlı ve karmaşık yapısıyla bazı zorluklar içeriyordu. XML bu karmaşayı mümkün olduğunca azaltmak ve uygulama kolaylığı sağlamak amacıyla geliştirildi. XML bir dil olmaktan çok bir dil tanımlama aracıdır. Bu standartı kullanarak kendi dilinizi üretebilir, kendi kurallarınızı koyabilirsiniz. HTML ile XML aynı şey değildir. HTML in önceden belirlenmiş kuralları vardır ve HTML ile yazılan bir döküman bu kurallara uymak zorundadır. Mesela <BODY> ve <HEAD> gibi imler HTML de önceden tanımlıdırlar; bunları değiştiremezsiniz. Fakat XML de imleri siz tanımlarsınız. Bu sayede <BuyukBaslik>, <KucukBaslik>gibi imler tanımlamanız mümkün olabilir. XML dokümanlarında elemanlar aşağıdaki gibi yazılırlar: <Paragraf> Bu ilk paragraf </Paragraf> Yukarıdaki eleman iki im in arasına yazılmıştır. İmler <ve > sembolleri arasında yazılırlar. Bir im in etki alanını bitirmek, bir başka deyişle bir im i kapatmak için / sembolü kullanılır. Elemanlara bazı özellikler atanabilir. <Para kur="dolar">34.25</para> Bu örnekte <Para>adlı imin kuradlı bir özelliği olduğu anlaşılıyor. XML de boş elemanlar tanımlanabilir. Buna örnek vermek gerekirse; <Resim kaynak="/home/user/resim.gif"></resim> veya 3

4 <Resim kaynak="/home/user/resim.gif"/> XML in bazı kurallarından bahsedelim: Elemanların özellikleri her zaman tırnak işaretleri içerisinde tanımlanmak zorundadır. <Yazi tip="italik">maslak</yazi> Boş elemanlar hariç bütün elemanlar açma ve kapama imleri arasına yazılmak zorundadır. Bu kurala göre aşağıdaki satırlar XML kurallarına uygun değildir. <Paragraf>Ilk paragraf <Paragraf>Ikinci Paragraf Doğrusu şöyle olmak zorundaydı <Paragraf>Ilk paragraf</paragraf> <Paragraf>Ikinci Paragraf</Paragraf> İçiçe geçen imler doğru yapılmalıdır. Bu kurala göre aşağıdaki tanımlama yanlıştır. <Kalin><italik>Bu satır yanlış</kalin></italik> Doğrusu şöyle olmalıydı <Kalin><italik>Bu satır doğru</italik></kalin> Yukarıdaki 3 kural XML kullanıcılarının en yaygın olarak çiğnedikleri kurallardır. Bunun kaynağı ise HTML kullanma alışkanlığıdır. Tarayıcı (Browser) üreticilerinin yazım hatalarını mümkün olduğunca tolere edebilme kaygısı yüzünden kurallara uygun olmayan HTML dökümanları sanaldoku üzerinde sorunsuz yayımlanabilmektedir. Ancak bu kaygı, beraberinde karmaşık yazılımları gerektirdiği için tarayıcıların dökümanları işleme hızlarında dikkate değer bir düşüş yaşanmaktadır. Bir XML dökümanı sözkonusu olduğunda 3 önemli dosya gündeme gelir. XML kaynak dökümanı stylesheet denilen, dökümanın herhangi bir yayım aracında nasıl görüneceğini belirleyen dosya.

XML kaynağının kurallarının yazıldığı DTD adlı dosya. DTD (Document Type Definition) dosyası XML dosyası içinde kullandığınız imlerin tanımlarının yapıldığı dosyadır. Örnek <?xml version="1.0" standalone="no"?> <!DOCTYPE OReilly:Books SYSTEM "sample.dtd"> <!-- XML dokumani burada basliyor --> <OReilly:Books xmlns:oreilly= http://www.oreilly.com/ > <OReilly:Product>XML Pocket Reference</Oreilly:Product> <OReilly:Price>8.95</Oreilly:Price> </OReilly:Books> İlk satırda <?xml ve?> arasında kalan kısım temel tanımların yapıldığı yerdir. versionxml dökümanının versiyonunu belirtir. standaloneseçeneği XML dökümanının dışarıdan verilecek bir DTD dosyasına ihtiyacının olup olmadığını belirler. standalone= no buyruğu dökümanın kendisini tanımlayabilmesi için bir DTD ye ihtiyac duyduğunu söyler. Bu örnekte ihtiyaç duyulan dosyanın sample.dtdadlı dosya olduğu ayrıca belirtiliyor. Aslında DTD ve stylesheet dosyalarını XML dökümanının içine gömmek mümkündür. Ama genelde tercih edilen bir yöntem değildir. <!DOCTYPE OReilly:Books SYSTEM "sample.dtd"> satırı dökümanın kök elemanını ve kök elemanı içerisinde yazılacak bütüm imlerin tanımlarının yer aldığı DTD dosyasını belirler. Bizim örneğimizde dökümanın kök elemanı OReilly:Books adlı elemandır. SYSTEM anahtar sözcüğü ise DTD dosyasının ayrı bir yerel dosya içerisinde bulunduğunu belirtir. <!-- ve -->sembolleri içerisinde yer alan bütün cümleler yorum olarak algılanır ve XML yorumlayıcıları tarafından ihmal edilir. Son olarak OReilly:Books,OReilly:Productve OReilly:Price imlerini kullandık. Çoğu XML imi gibi bunlar da kendilerini tanımlayan DTD ler olmadan anlamsızlardır. Bu imler görüldüğü gibi iki parçadan oluşmaktadır. Parçalar arasında : sembolü kullanılmış. Bunun sebebi im adlarını seçerken alanadı kullanmamızdır. : sembolünün sol tarafı alanadı nı, sağ tarafı ise imin kendisini ifade eder. Alanadı kullanımı XML dünyasında yeni kullanılmaya başlamıştır. Kabaca im tanımlarının karışmaması için tasarlanmıştır. Örnek vermek gerekirse; OReilly:Books yerine Books imini kullansaydık ve başka bir yayıncı da Books imini kullansaydı, iki üreticinin ürettikleri dökümanları ortak olarak 5

6 kullanmaları mümkün olamazdı. Alanadları xmlnsanahtar sözcüğü ile belirtilir. Eşsizlik sağlası amacıyla alanadları olarak genellikle sanaldoku yörelerinin adları kullanılır. Bizim verdiğimiz örnekte http://www.oreilly.com alanadı olarak kullanılmış. Alanadı olarak sanaldoku sayfalarını kullanmanın bir diğer faydası ise kullanılan XML dökümanı ile ilgili dosyaların herkes tarafından bilinen bir yere konulabilmesine imkan tanımasıdır. Buraya XML i tanımlayan DTD dosyaları konulabileceği gibi, bazı stylesheet dosyalarıda konulabilir. Son olarak eklenmesi gereken bir nokta ise şudur; ilerleyen zamanlarda tarayıcıların XML programlarını istenilen ölçüde tanımaları durumunda ilgili dökümanlar on-line olarak işlenebilecektir. Tarayıcı bir XML dökümanı ile karşılaştığında onu tanımlayan DTD yi ilgili yerden çekecek ve varsa stylesheet dosyasını kullanarak görüntüleyecektir.

DTD (Document Type Definition) Bu bölümde DTD kavramını kabaca bir örnek üzerinden anlatmaya çalışacağız. Örnek DTD dosyası aşağıda verilmiştir. <!-- Örnek bir DTD dosyası --> <!ELEMENT OReilly:Books (OReilly:Product, OReilly:Price)> <!ELEMENT OReilly:Product (#PCDATA)> <!ELEMENT OReilly:Price (#PCDATA)> Bu DTD dosyasının amacı bir önceki bölümde yazdığımız XML kaynağını tanımlamaktır. <!ELEMENT buyruğu XML dökümanı içerisinde kullanılan bütün imleri tanımlamak için kullanılır. OReilly:Product ve OReilly:Price imleri OReilly:Books iminin içerisinde ve belirlenen sıra ile kullanılmak zorundadır. Bu iki im e OReilly:Books iminin çocukları denir. OReilly:Product ve OReilly:Price imlerinin tanımlarında ise #PCDATA sözcüğü kullanılmıştır (PCDATA= Parsed Character Data ). Bunun anlamı OReilly:Product ve OReilly:Price imleri arasında < ve & hariç bütün karakter veya karakter kümesini kullanabilirsiniz. Mesela <OReilly:Product>O Reilly Books</OReilly:Product> satırı doğru bir XML satırıdır. 7

8

XSL (Extensible Stylesheet Language) Yazdığımız DTD ile XML dökümanını tanımlamış olduk. Bu çerçeve içinde elimizdeki dökümana doğru tanımlanmıştır (valid) diyebiliriz. Ancak dökümanın görüntülenişi hakkında hiçbirşey yapmadık. Bu iş için stylesheet kullanmamız gerekecek. Stylesheet olarak şu an yaygın olarak kullanılan CSS (Cascading Style Sheet) aracını kullanabilirsiniz. CSS daha çok HTML dökümanlarını biçimlendirmek için kullanılmakla birlikte XML i de desteklemektedir. Biçimlendirme için kullanılabilecek ikinci bir araç ise XSL (Extensible StyleSheet Language) adı verilen ve kendinize özgü stylesheet kodları oluşturabilmenize olanak sağlayan dildir. XML kullanmamızın sebebi yanlızca sanaldoku olmadığı için biz XSL kullanmayı tercih edeceğiz. Bu bölümde XSL kavramını kabaca bir örnek üzerinden anlatmaya çalışacağız. Örnek XSL dosyası aşağıda verilmiştir. <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/tr/wd-xsl" xmlns:fo="http://www.w3.org/tr/wd-xsl/fo"> <xsl:template match="/"> <fo:block font-size="18pt"> <xsl:apply-templates/> </fo:block> </xsl:template> </xsl:stylesheet> Bu örnekte dikkati çeken ilk şey bir XSL dosyasının aynı zamanda düzgün tanımlı bir XML dökümanı olmasıdır. XML dökümanını biçimlendirecek buyruklar <xsl:stylesheet> ve </xsl:stylesheet> imleri arasında yer alırlar. Genel olarak bakıldığında XML dökümanı içerisinde yer alan imlerin formatları <xsl:template> ve </xsl:template> imleri arasında tanımlanır. <xsl:template match="/"> 9

10 Yukarıdaki satır, / ile belirtilen im için bir şekil tanımlar. /sembolü kök elemana karşılık gelir. Bizim örneğimizde kök eleman OReilly:Books idi. Bizim XSL örneğimize göre kök elemanı içerisindeki yazıların font büyüklükleri 18pt olmak zorunda. Bu XSL dosyasını XSL yorumlayıcılarından birinden geçirirsek XML dosyasının görüntüsünü elde edebiliriz. Bir XML dökümanının doğru olması için gereken şartlar: Bir XML dökümanı ya DTD kullanmalı ya da dökümanın başında <?xml version="1.0" standalone="no"?> deklerasyonu yer almalıdır. Elemanların bütün özellikleri çift tırnaklar içinde belirtilmelidir. Bütün elemanlar açma ve kapama imleri arasında yazılmalıdırlar. Boş bir im kullanılacaksa im in bitiminden önce \ işareti kullanılmalıdır. <Resim kaynak="demiralp.jpg"/> Bazı XML buyrukları <?xml...?> <?xml version="number" [encoding="encoding"] [standalone="yes[no]"]?> version XML dökümanının versiyonu gösterir ve kesinlikle yazılması gerekir. encoding Kullanılacak karakter kümesini belirtir US-ASCII, iso-8859-1 gibi. standalone Eğer no ise, dökümanı tanımlayan bir DTD belirtmek zorunludur. Bunun için <!DOCTYPE> buyruğu kullanılır. <!DOCTYPE> <!DOCTYPE root-element SYSTEM PUBLIC ["name"] "URI_of_DTD">

Bu buyruk XML dökümanını tanımlayan DTD kaynağını belirtmek için kullanılır. İki şekilde kullanılılabilir. <!DOCTYPE root-element SYSTEM "URI_of_DTD"> <!DOCTYPE root-element PUBLIC "name" "URI_of_DTD"> SYSTEM DTD dökümanının yerini belirtir. <!DOCTYPE <Book> SYSTEM "http://www.domain.com/dtd/mydoctype.dtd"> PUBLIC Eğer kullanılan DTD çok büyük bir yaygınlık kazandı ise özel bir isimlendirme şeması kullanılır. XML işlemcisi bu tanımı gördüğü zaman ilgili DTD kaynağını sistemde kayıtlı olduğu yerlerden bulmaya çalışacaktır. Eğer ilgili dosyayı bulamaz ise SYSTEM buyruğu ile tanımlanmış DTD yi kullanacaktır. <!DOCTYPE <Book> PUBLIC "-//O Reilly/DTD/EN" "http://www.oreilly.com/dtd/xmlbk.dtd"> <![CDATA[...]]> XML dilinde özel anlamları bulunan karakterleri özel anlamları haricinde kullanmaya yarar.... ile belirtilen yere yazılan herşey XML işlemcisi tarafından salt metin olarak algılanacaktır. <![CDATA[ Burada XML dilinde özel anlamları bulunan karakterleri bir problem olmadan rahatça kullanabiliyorum. Mesela <?xml version="3.145678"?> yazmam bir hata mesajı üretmeyecektir. ]]> <!--...--> <!--Yorumlar--> XML dökümanı içerisine bazı açıklamalar veya yorumlar yazabilmemizi sağlar. 11

12

XML e Has Özelikler xml:lang xml:lang="iso_639_identifier> xml:lang özeliği bütün elemanlar için kullanılabilir. Elemanın hangi dilde yazıldığını belirtmek için kullanılır. <Paragraf xml:lang="en">hello</paragraf> <Paragraf xml:lang="fr">bonjour</paragraf> xml:space xml:space="default preserve" Elemanın içerisinde yer alan boşluk veya tab karakterlerinin dikkate alınıp alınmamsını belirler. Eğer preserve seçeneği kullanılırsa boş ve tab karakterleri dikkate alınacaktır. xml:link xml:link="link_türü" Elemanın bir link olduğunu belirtmek için kullanılır. Özel Karakterler XML de özel manaları bulunan karakterleri ifade edebilmek için değişik bir metod kullanılır. XML de yaygın olarak kullanılan 5 özel karakter şöyle gösterilir. & & < < > > " " &apos; Kolaylıkla görüleceği gibi özel karakterleri ifade etmek için & ve ; işaretleri beraber kullanılır. 13

14 DTD İçinde Eleman Tanımları XML dökümanı içerisinde kullandığınız elemanların tanımlarını DTD dosyaları içerisinde yapmak zorunluluğu vardır. Bunun için şu kalıp kullanılır. <ELEMENT eleman_ismi kural> Eleman isminin içerisinde < ve > karakterleri olmamalıdır. Eleman isimleri karakter veya _ sembolü ile başlamalıdır. Ayrıca eleman isimleri xml ile başlamamlıdır. Bu son kurala uyulmaması aslında ciddi bir probleme yol açmayabilir. Ancak xml sözcüğü ile başlayan ve XML yapısı içerisinde özel anlamları olan bir takım imler bulunmaktadır. Bu imlerde çakışma olasılığı bulunduğundan ötürü bu kısıtlamaya uyulması çok yerinde olacaktır. 111 ANY ve PCDATA 222 En basit eleman tanımı ANY buyruğu ile yapılır. <!ELEMENTkutuphaneANY> ANY sözcüğü ile <kutuphane> ve </kutuphane> imleri arasında herhangi bir karakterin veya karakter katarının veya başka imlerin bulunabilmesi sağlanır. Eğer iki im arasında sadece özel bir takım karakterlerin tanımlanması isteniyorsa PCDATA anahtar sözcüğü kullanılır. <!ELEMENTkutuphane(#PCDATA)> Bu buyruk ile <kutuphane> ve </kutuphane> imleri arasında eleman isimleri hariç diğer karakterlerin yer alabileceği belirtilir. Bir örnek vermek gerekirse <kutuphane>itu Kütüphanesi</kutuphane> <kutuphane></kutuphane> kullanımları doğru olduğu halde <kutuphane> <universite>itu</universite> Kütüphanesi </kutuphane> kullanımı yanlıştır. Bununla beraber bir elemanın içerisinde başka elemanların bulunma zorunluluğu şu şekilde belirtilir. <!ELEMENT Kitap (Baslik>> <!ELEMENT Baslik (#PCDATA>> Yukarıdaki örnekte Kitap imi içerisinde Baslik imi bulunmak zorundadır.

15 <!ELEMENT Kitap (Baslik, Tarih)> <!ELEMENT Baslik (#Baslik)> <!ELEMENT Tarih (#Tarih)> Yukarıdaki örnekte Kitap im i içerisinde Baslik ve Tarih imleri olmak zorundadır ve belirtilen sıraya uymak zorundadır. <!ELEMENT Kitap (Baslik Tarih)> <!ELEMENT Baslik (#Baslik)> <!ELEMENT Tarih (#Tarih)> Yukarıdaki örnekte Kitap im i içerisinde Baslik veya Tarih imlerinden birisi olmak zorundadır. Ancak ikisi birden bulunamaz. Gruplama ve Yineleme İmlerin XML dökümanı içerisinde yer alma sırasını belirlemek mümkündür. <!ELEMENT kitaplar ((baslik, yazar) aciklama)> <!ELEMENT baslik (#PCDATA)> <!ELEMENT yazar (#PCDATA)> <!ELEMENT aciklama (#PCDATA)> Yukarıdaki örnekte kitaplar im i içerisinde ya aciklama im i olmak zorundadır ya da baslik ve yazar im i ardarda olmak zorundadır. Ayrıca bu imlerin? Ya bir kere, ya hiç kaçar defa yer alabileceğini belirleyebilirsiniz. + En az bir kere * Bir çok kere veya hiç <!ELEMENT yazar (yazarismi+)> <!ELEMENT yazarismi (#PCDATA)> Yukarıdaki örnekte yazar im i içerisinde yazarismi im i ya bir kere yer alacaktır veya hiç kullanmayacaktır. Buna benzer fakat daha karmaşık tanımlamalar yapmak mümkündür. Boş İmler XML dökümanı içerisinde yer alan boş elemalar ayrıca tanımlanmak zorundadır. <!ELEMENT elemanismi EMPTY>

16 Entities General Entities Bir karakter kümesi için makro tanımlamak için kullanılır. <!ENTITY isim "karsilik"> <, >, &, ve " karakterleri için gereken tanımlamalarıkendi DTD dökümanınız içerisinde yapmak zorunda değilsiniz. Bunlar XML işlemcisi tarafından önceden yapılmıştır. Copyright sembolu için bir makro tanımı aşağıdaki gibi yapılabilir. Bu sembolün Unicode karşılığı 169 (Hexadecimal 0xA9) dur. <!ENTITY copyright " "> Parameter Entities Bir önceki gibi makrolar tanımlamak için kullanılır ancak tanımlanan makrolar sadece DTD içinde kullanılmak içindir. Bu şekilde tanımlanan bütün makro isimlerinin başına % sembolü konulur. Bu sembol makronun sadece DTD içerisinde kullanılabileceğini gösterir. <!ENTITY % isim "karsilik"> External Entities Dısarıdan yapılan linkler için kullanılır. <!ENTITY alinti SYSTEM "http://www.oreilly.com/stocks/quoates.xml"> Eğer alinti adli makro, XML dökümanı içerisinde kullanılacak olursa, işaret edilen URL den yani http://www.oreilly.com/stocks/quoates.xml adresinden içerik alınacak ve XML dökümanı içerisine gömülecektir.

Örnekler prog01.xml <?xml version="1.0" standalone="yes"?> <!DOCTYPE Kitap SYSTEM "file:///bilisim/hkaya/doc/xml/prog01.dtd"> <Kitap>Beginning XML</Kitap> prog01.dtd <!ELEMENT Kitap (#PCDATA)> prog01.xsl <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> prog02.xml <?xml version="1.0" standalone="no"?> <!DOCTYPE Kitap SYSTEM "file:///bilisim/hkaya/doc/xml/prog02.dtd"> <Kitap> Kitap <Baslik>Beginning XML</Baslik> </Kitap> prog02.dtd <!ELEMENT Kitap (Baslik)> <!ELEMENT Baslik (#PCDATA)> 17

18 prog02.xsl <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <xsl:value-of select="."/> </xsl:template> <xsl:template match="baslik"> <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet> prog03.xml <?xml version="1.0" standalone="no"?> <!DOCTYPE Kisi SYSTEM "file:///bilisim/hkaya/doc/xml/prog03.dtd"> <Kisi> Madonna </Kisi> prog03.dtd <!ELEMENT Kisi (#PCDATA)> prog03.xsl <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <HTML> <xsl:value-of select="."/> </HTML> </xsl:template> </xsl:stylesheet> prog04.xml

<?xml version="1.0" standalone="no"?> <!DOCTYPE Kitap SYSTEM "file:///bilisim/hkaya/doc/xml/prog04.dtd"> <Kitap> <Baslik>System Performance Tuning</Baslik> </Kitap> 19 prog04.dtd <!ELEMENT Kitap (Baslik, Konu)> <!ELEMENT Baslik (#PCDATA)> <!ELEMENT Konu (#PCDATA)> prog04.xsl <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <HTML> <xsl:value-of select="."/> </HTML> </xsl:template> </xsl:stylesheet> prog05.xml <?xml version="1.0" standalone="no"?> <!DOCTYPE Kitap SYSTEM "file:///bilisim/hkaya/doc/xml/prog05.dtd"> <Kitap> <Baslik>System Performance Tuning</Baslik> </Kitap> prog05.dtd prog05.xsl <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform">

20 <xsl:template match="/"> <HTML> <xsl:apply-templates/> </HTML> </xsl:template> <xsl:template match="baslik"> <HEAD> <xsl:value-of select="."/> </HEAD> </xsl:template> </xsl:stylesheet> prog06.xml <?xml version="1.0" standalone="no"?> <!DOCTYPE Kitap SYSTEM "file:///bilisim/hkaya/doc/xml/prog06.dtd"> <Kitap> <Baslik>System Performance Tuning</Baslik> <Konu>System Performance Monitoring Tools in Unix</Konu> </Kitap> prog06.dtd <!ELEMENT Kitap (Baslik, Konu)> <!ELEMENT Baslik (#PCDATA)> <!ELEMENT Konu (#PCDATA)> prog06.xsl <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:template match="/"> <HTML> <xsl:apply-templates/> </HTML> </xsl:template>

21 <xsl:template match="baslik"> <HEAD> <xsl:value-of select="."/> </HEAD> </xsl:template> <xsl:template match="konu"> <P> <xsl:value-of select="."/> </P> </xsl:template> </xsl:stylesheet>

22

Kaynakça [1] DocBook, The Definitive Guide, Norman Walsh and Leonard Muellner, O Reiily Assoc., 1999 [2] Beginning XML, David Hunter, Wrox, 2000 [3] Cascading Style Sheets, The Definitive Guide, Eric A. Meyer, O Reiily Assoc., 1999 [4] http://www.w3c.org [5] http://www.tasaryum.com 23