Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Aziz Durmaz
Aziz Durmaz
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
4 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  XML / Web Serv. Aziz Durmaz
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : XML / Web Serv.
Yayınlanma Tarihi : 10.1.2003
Okunma Sayısı : 28503
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 23.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
XML Doküman tipi Tanımlanması Kısım 2
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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;





[







]

>



Aziz

DURMAZ



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.



Raif

Deniz

DURMAZ



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
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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