|
XML Doküman tipi Tanımlanması Kısım 2 |
|
Gönderiliyor lütfen bekleyin... |
|
|
Geçen yazımızda
XML belgemize DTD ekleme konusunda bilgi verip nasıl eleman ve nitelik tanımlayacağımızı
anlatmıştık. Kaldığımız yerden devam ediyoruz.
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;
Bu
örnekte dikkat edecek olursanız YAZAR elemanı tanımlanırken AD ve SOYAD alt
elemanlarını içerir bir şekilde tanımlanıyor. AD ve SOYAD 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.
Aziz
DURMAZ
0212
212 21 21
|
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 YAZAR elemanları yukarıdaki
DTD ‘mize göre geçersiz elemanlardır.
Aziz
DURMAZ
veya
DURMAZ
Aziz
0212
212 21 21
|
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.
0535
555 5555
veya
0212
212 21 21
veya
0212
212 12 12
|
Ama herhangi bir
elamanın tekrarı veya belirtilen iki elemanın bir arada kullanılması durumunda
eleman geçersiz olur. Örneğin;
0535
555 5555
0212
212 21 21
veya
0535
555 5555
0535
666 5555
|
Peki Alt elemanlarımızın
tekrarı veya kullanılıp kullanılmayacağı belli değilse o zaman bu şartlar altında
DTD ‘mize uygun XML belge yazmamız imkansız olurdu. Bu yüzden Eleman sonlarına
( ? + * ) işaretleri eklenerek bu sorunlar ortadan kaldırılmaktadır.
Karakter
|
Açıklama
|
*
|
Elemandan
sıfır veya daha çok bulunabilir
|
+
|
Elemandan
bir veya daha çok bulunabilir
|
?
|
Elemandan
sıfır veya 1 tane bulunabilir
|
Yukarıdaki karakterleri kullanarak
özel durumlar için DTD ‘ler oluşturabiliriz. Örneğin; YAZAR elemanımızın alt
elemanlarından AD iki isimli olan arkadaşlarımıza göre özelleştirelim ayrıca telefon
numarasını bilmediğimiz için yazmayacağız fakat öğrenince eklemek istiyoruz.
Şeklinde bir eleman
bildirimi yapmamız yukarıdaki isteklerimiz yerine getirecektir. Aşağıdaki örnek
XML verisi yukarıda belirttiğimiz şartlara uygunluk göstermektedir.
Daha sonra telefon
numarasını öğrendiğimiz zaman telefon numarasını DTD üzerinde herhangi bir değişiklik
yapmadan eklememiz geçersiz eleman oluşmasına neden olmayacaktır. Örneğin;
Raif
Deniz
DURMAZ
0212
212 2121
|
Başka bir örnek
belirtmemiz gerekirse telefon elemanımızın alt elemanlarından GSM ve Ev ve İş
telefonları ile ilgili bir değişiklik yapmamız gerekirse mesela bunlardan birisi
gerekli fakat arkadaşımızın iki tane evi var diyelim ona göre bir veya Hiç telefonu
yok buna göre bir DTD yazmamız gerekirse;
Şeklinde bir DTD
oluşturduğumuz zaman * işaretinin özelliğinden yararlanarak;
0212
212 21 21
0312
312 21 21
veya
0
535 555 5555
veya
|
Yukarıdaki tüm
elemanlar yukarıda belirttiğimiz eleman tanımlamasına uymaktadır. * İşaretinin
özelliğinden dolayı YAZAR_TEL elemanı EV alt elemanından boş eleman olabilmektedir.
Tüm seçimli alt
elemanları etkileyecek bir karakter kullanmak istiyorsanız. Seçimli alt elemanların
parantezini kapattıktan sonra bir karakter kullanabilirisiniz. Örneğin yazar
arkadaşlarımızın birden fazla telefonu olabilir ,hem GSM hem Ev telefonu Hem
de iş telefonu olabilir, bu telefonlarından da birden fazla olabilir.
Şeklinde bir DTD
kullandığımız zaman yukarıdaki sorunumuza çözüm getirmiş oluruz. Ve aşağıdaki
elemanları oluşturabiliriz.
0535
555 5555
0212
212 2121
0312
312 2121
0536
666 5555
veya
0212
212 1212
0312
312 1212
veya
0535
555 5555
|
Peki ya hem seçimli
hem de sıralı bir DTD oluşturmamız gerekirse ne yapabiliriz. Böyle bir durumda
aşağıdaki örnek DTD ‘deki şekilde davranıp her iki bildirim şeklini birleştirebiliriz.
BU DTD 'ye göre
aşağıdaki XML verileri geçerlidir.
Aziz
DURMAZ
0535
555 5555
veya
Raif
DURMAZ
0535
555 5555
|
Bu yazımızda varlık
bildirimlerinden kısaca bahsedip, Eleman Bildirimlerini daha geniş bir şekilde
anlatmaya çalıştık. Bundan sonraki yazılarımızda DTD hakkında bilgiler vermeye
devam edeceğiz.
Makale:
XML Doküman tipi Tanımlanması Kısım 2 XML ve Web Servisleri Aziz Durmaz
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|