Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Bölüm 3 – Geçerli-XML Belgeleri Oluşturmak
İçindekiler 1.1 Geçerli XML Belgeleri 1.2 DTD 1.3 Element Tiplerini Tanımlamak 1.4 Element İçerik Tipleri 1.5 Element İçeriğini Tanımlamak 1.6 DTD’de Nitelik Tanımlamaları 1.7 DTD’yi Ayrı Dosya Olarak Tanımlama 1.8 Özet
2
Giriş Geçen bölümde “iyi-biçimli” XML belgesi nasıl oluşturulur konusundan bahsetmiştik. Herkesin kolayca XML belgesi oluşturabileceğini görmüş olduk Ama bu uygulamalar için yeterli değildir. Belgenin yapısı hakkında bilgiye sahip olamamız gerekir.
3
Giriş
4
Dökümanı Tanımlamak Neden Önemli?
Giriş Dökümanı Tanımlamak Neden Önemli? Standartlaşma ve yaygın kullanım MathML , CML,AML Standartlaşmış veya geniş kabul gören bir döküman tanıtım belgesi
5
DTD (Document Type Definition)
DTD, XML belgesinin giriş kısmına eklenir. DTD <!DOCTYPE işaretlemesi ile başlar. Daha sonra root elementin ismi yazılır. Köşeli parantezler içinde tip tanımları yapılır. <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [<! Tip tanımlaması_1> <! Tip tanımlaması_2> <! Tip tanımlaması_3> ]> <turlar-rehberi> <tur> <tur-adi cinsi="kültür gezisi">Ege Turu</tur-adi> <güzergah>Ayvalık, İzmir, Çeşme, Kuşadası, Aydın</güzergah> <baslangic-tarihi> </baslangic-tarihi> <bitis-tarihi> </bitis-tarihi> <ulasim>Otobüs</ulasim> <konaklama>3,4 yıldızlı oteller</konaklama> </tur> </turlar-rehberi>
6
Element Tiplerinin Tanımlamak
<?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (#PCDATA)>]> ]> <turlar-rehberi> Ege Turu </turlar-rehberi> Eğer DTD tanımına bağlı kalarak döküman oluşturursak bu dökümana “geçerli” döküman denir. İyi oluşumlu Geçerli
7
Element İçeriğini Tanımlamak
Element_sira.xml <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(tur-adı,güzergah, başlangıç-tarihi)> <!ELEMENT tur-adı(#PCDATA)> <!ELEMENT güzergah(#PCDATA)> <!ELEMENT başlangıç-tarihi(#PCDATA)> ]>
8
Element İçeriğini Tanımlamak
Element_secenek.xml <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(tur-adı | güzergah | başlangıç-tarihi)> <!ELEMENT tur-adı(#PCDATA)> <!ELEMENT güzergah(#PCDATA)> <!ELEMENT başlangıç-tarihi(#PCDATA)> ]> Seçenekleri Artırmak Eklenen karakter Açıklama + Element bir yada daha çok kullanılabilir. * Element sıfır yada daha çok kullanılabilir. ? Element sıfır veya bir kere kullanılabilir.
9
Element İçeriğini Tanımlamak
Element_secenek.xml <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(tur-adı? | güzergah | başlangıç-tarihi)> <!ELEMENT tur(tur-adı | güzergah | başlangıç-tarihi)+> <!ELEMENT tur(tur-adı , güzergah , başlangıç-tarihi | bitiş-tarihi)> <!ELEMENT tur(tur-adı , güzergah , (başlangıç-tarihi | bitiş-tarihi)+)> <!ELEMENT tur(#PCDATA | tur-adı | güzergah | (başlangıç-tarihi )*> <!ELEMENT tur-adı(#PCDATA)> <!ELEMENT güzergah(#PCDATA)> <!ELEMENT başlangıç-tarihi(#PCDATA)> ]>
10
ANY ve EMPTY içerik tanımlaması
Her türlü olasılıkta içerik kullanımını tanımlar.DTD’nin en esnek tanımlamasıdır. <!ELEMENT tur (tur-adı,güzergah, (başlangıç-tarihi | bitiş-tarihi)+)> tanımlaması yerine <!ELEMENT tur ANY> yazılabilir. EMPTY Boş içerikli elementler için EMPTY ifadesi kullanılır. <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(resim)> <!ELEMENT resim EMPTY> ]>
11
DTD’de Nitelik Tanımlama
Nitelik_tanımlama.xml <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(tur-adı,güzergah, başlangıç-tarihi)> <!ELEMENT tur-adı(#PCDATA)> <!ELEMENT güzergah(#PCDATA)> <!ELEMENT başlangıç-tarihi(#PCDATA)> <!ATTLIST tur cinsi CDATA #IMPLIED> ]> XML dosyasında <turlar-rehberi> <tur cinsi=“kültür”>
12
DTD’de Nitelik Tanımlama
Nitelik Tipleri Niteliğin karakter verisi içereceğini belirten ve CDATA ile gösterilen nitelik tipi tanımlaması Niteliğin değerinin belirtilmesinde seçim sunan “seçimli nitelik tipi” Özel ifadelerle tanımlı nitelik tipleri Nitelik varsayımı Element içinde, nitelik kullanımının zorunlu olup olmadığını belirler.Dört çeşit olabilir #REQUIRED #IMPLIED #FIXED Tanımlı Değer
13
Nitelik Varsayımı #REQUIRED
Element içinde belirtilen niteliğin tanımlanmasını zorunlu kılar. Eğer nitelik tanımlanmazsa geçersiz belge hatası oluşur. <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(#PCDATA)> <!ATTLIST tur cinsi CDATA #REQUIRED>
14
Nitelik Varsayımı #IMPLIED Niteliğin tanımlaması seçime bağlıdır.
<?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(#PCDATA)> <!ATTLIST tur cinsi CDATA #IMPLIED>
15
Nitelik Varsayımı Tanımlı Değer
Elementin nitelik değerini belirtmemizi sağlar.Element içinde nitelik tanımı yapılıp yapılmaması zorunlu değildir. <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(#PCDATA)> <!ATTLIST tur cinsi CDATA “pansiyon”>
16
Nitelik Varsayımı #FIXED Kullanımı tanımlı değer gibidir.
Farklı olarak tanımlı değerleri sabitler ve farklı değer tanımlamaya izin vermez. <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(#PCDATA)> <!ATTLIST tur cinsi CDATA #FIXED “pansiyon”>
17
Seçmeli nitelik değerleri tanımlaması
Nitelik Tipleri Seçmeli nitelik değerleri tanımlaması <?xml version ="1.0" encoding ="ISO " ?> <!DOCTYPE turlar-rehberi [ <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(#PCDATA)> <!ATTLIST tur konaklama (pansiyon | otel) #REQUIRED> <!ATTLIST tur konaklama (pansiyon | otel) #IMPLIED> <!ATTLIST tur konaklama (pansiyon | otel) “otel”> ]>
18
Özel İfadelerle tanımlı nitelik tipleri
ID: Ayni nitelik her elementte farklı değer almalıdır. IDREF: ID referansı tanımlayan bir anahtar kelimedir. Belirtilen ID’nin atnımlayıcısına başvurur.
19
1 <?xml version = "1.0"?> 2 3 <!-- Fig. 6.8: IDExample.xml > 4 <!-- Example for ID and IDREF values of attributes --> 5 6 <!DOCTYPE bookstore [ 7 <!ELEMENT bookstore ( shipping+, book+ )> 8 <!ELEMENT shipping ( duration )> 9 <!ATTLIST shipping shipID ID #REQUIRED> 10 <!ELEMENT book ( #PCDATA )> 11 <!ATTLIST book shippedBy IDREF #IMPLIED> 12 <!ELEMENT duration ( #PCDATA )> 13 ]> 14 15 <bookstore> 16 <shipping shipID = "s1"> <duration>2 to 4 days</duration> 18 </shipping> 19
20
20 <shipping shipID = "s2">
<duration>1 day</duration> 22 </shipping> 23 24 <book shippedBy = "s2"> Java How to Program 3rd edition. 26 </book> 27 28 <book shippedBy = "s2"> C How to Program 3rd edition. 30 </book> 31 32 <book shippedBy = "s1"> C++ How to Program 3rd edition. 34 </book> 35 </bookstore>
21
DTD’yi Ayrı Bir Dosya Olarak Tanımlamak
Avantajları: DTD’yi birden fazla XML belgesi kullanabilir. DTD ‘de yapılacak değişikler onu kullanan tüm XML dosyalarını etkileyecek. Nasıl oluşur? Ayrı bir dosyada düzenlenir. Dtd uzantılı olarak kaydedilir. [] parantezler kullanılmaz.
22
Dıştadtd_tanimlama.dtd <?xml version ="1.0" encoding ="ISO " ?> <!ELEMENT turlar_rehberi (tur)> <!ELEMENT tur(tur-adı,güzergah, başlangıç-tarihi)> <!ELEMENT tur-adı(#PCDATA)> <!ELEMENT güzergah(#PCDATA)> <!ELEMENT başlangıç-tarihi(#PCDATA)> <!ATTLIST tur cinsi CDATA #IMPLIED> Dışdtd_döküman.xml <!DOCTYPE turlar-rehberi SYSTEM “dıştadtd_tanimlama.dtd”> <turlar-rehberi> <tur> <tur-adı> Karadeniz turu</tur-adı> ...... </turlar-rehberi>
23
Özet DTD, XML belgelerinin şablonu, tipini çıkarmaya yarayan yöntemdir. Bu yönteme uyan belgelere “geçerli”, uymayanlara “geçersiz” belge denir. “Geçerli” belge aynı zamanda “iyi biçimli” belge anlamına da gelir. Ama yukarıdaki ifadenin tersi doğru değildir.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.