XML Attribute'ler ile Çalışmak

CorsaiR

Emektar
27 Ara 2005
1,228
18
Çekirdekten
Attribute'ler ile Çalışmak
Attribute’ler attribute deklerasyon listesi denilen bir liste içinde aşağıda belirtilen şekilde tanımlanırlar:


<!ATTLIST ElementName AttrName AttrType Default>


Görüleceği gibi bir attribute isim(AttrName) ve tip(AttrType) ve default olmak üzere üç bileşenden oluşmaktadır.Bir attribute deklerasyonu sırasında kullanılabilecek olan dört default değeri vardır:

  • #REQUIRED
  • #IMPLIED
  • #FIXED
  • default
#REQUIRED değeri attribute’ın element için mutlaka gerekli olduğunu belirtir. #IMPLIED değeri attribute ‘ın seçimsel olduğunu ve element için kullanımının zorunlu olmadığını belirtir. #FIXED değeri attribute’a atanacak değerin sabit olacağını ve bunun da attribute’u bir bilginin sabit bir parçası durumuna getireceğini belirtir.

XML 10 tane farklı attribute tipini desteklemektedir:

  • CDATA :parse edlmemiş karakter verisi
  • Enumerated :Bir dizi string değeri
  • NOTATION :DTD içinde herhangi bir yerde tanımlanmış olan notasyon
  • ENTITY: Dışsal bir binary entity
  • ENTITIES Birden fazla dışsal binary entity ler
  • ID :Unique bir tanımlayıcı
  • IDREF: DTD içinde tanımlanmış olan bir ID ye refere edilen değer
  • IDREFS: DTD içinde birden fazla ID lere refere edilen değerler
  • NMTOKEN: XML token değerlerini içeren isim
  • NMTOKENS:XML tone karakterlerini içeren isim boşlukları
String Attribute’leri

String attribute ler CDATA tarafından gösterilen ve en çok kullanılan attribute tipidir.CDATA tipi attribute’ın bir metin stringini içereceğini belirtir.Aşağıdaki örnekte CDATA tipi ile beraber oyuncu elementinin kullanılışı gösterilmiştir:


<!ATTLIST oyuncu takim CDATA #REQUIRED>


Bu örnekte oyuncu ‘nun ait olduğu takim’in oyuncu elementi için gerekli olan bir karakter verisi attribute dur.Bu takim attribute’ını seçimsel duruma getirmek isteseydik:


<!ATTLIST oyuncu takim CDATA #IMPLIED>


şeklinde kullanmamız gerekirdi.

Burada karşımıza önemli bir soru çıkmaktadır:XML parser acaba string attribute tipini diğerlerinden nasıl ayırdedebilmektedir?

Bir XML parser CDATA attribute değerinin işleme konması sırasında boşlukların tümünü reserve eder.Satır sonlarının whitespace boşluklarına dönüştürülme işlemi string attribute değerinin normalizasyonu olarak adlandırılır.

Enumerated Attribute’ler

Bu tür attribute ler daha önceden tanımlanmış bir metin dizisinin listesini içerirler.Enumerated tipi CDATA tipine benzemektedir ancak bu veri tipinde kabul edilebilir attribute değerleri attribute listesi deklerasyonu içinde sağlanmaktadır.Daha önce vermiş olduğumuz örneği biraz daha geliştirelim.oyuncu elementine enumerated bir attribute değeri olan pozisyon bilgisini de ekleyelim


<!ATLIST oyuncu pozisyon (ortasaha | forvet | savunma | kaleci ) "ortasaha">


Bu örnekte pozisyon değerinden birini seçebilmekteyiz.Eğer hiçbir şey seçmezsek default değer olan "ortasaha" devreye girmiştir.

Notasyon Attribute’ler

Enumeration attribute’ın özel bir kullanımı da notasyon attribute leridir.Notasyonlar DTD içinde biryerlerde tanımlanmış olan bir liste olarak düşünülebilir.Bu deklerasyonu DTD içerisinde NOTATION anahtarsözcüğünü kullanarak şu şekilde yazabiliriz:


<!ATTLIST image format NOTATION (gif | jpeg) #REQUIRED)>



info2.gif

Dikkat edilirse #REQUIRED sembolü attribute’un gerekli olduğunu belirtmeye yarıyordu.Enumerated attribute değerleri opsiyonel de olabilir.Bunun için #IMPLIED terimini kullanmamız gerekir.



Tokenize Attribute’ler

XML tarafından desteklenen son attribute tipi tokenize attribute’lerdir.Bunlar XML parser tarafından attribute’ların token larına ayrıştırılması işlemini yaparlar.XML parser bu token’larına ayrıştırma işlemi sonucunda tüm boşluk ve tek karakter sembollerini eleme işlemine tabi tutar. ENTITY,ENTITIES,ID,IDREF,IDREFS,NMTOKEN ve NMTOKENS tokenized attribute tipleridir.

ENTITY ve ENTITIES tipleri entity lere refere olmak için kullanılır.Örneğin image’ler tipik olarak binary entity’ler şeklinde refere olurlar.ENTITIES tipi ENTITY e benzemektedir ve bir entity listesi oluşturmamıza yararlar.Aşağıda ENTITY attribute tipinin reference işleminin oluşturulması gösterilmiştir.


<!ATTLIST bolum id ID #REQUIRED>


IDREF ve IDREFS tipleri ID lere yapılacak olan reference’leri belirtmek için kullanılır.Bu tipler ID tipine benzerler ancak burada akılda tutulması gereken şey bunların kendilerinin de unique yapıda olmalarıdır.

NMTOKEN ve NMTOKENS attribute tipleri token isim değerlerini içerirler.Bir isim token, string yapıda olan bir metin değeridir.Genelde isim token değeri sadece tek bir ismi içerir ve boşluk içermez.

Birden Fazla Attribute Deklerasyonu

Buraya kadar olan bölümde ayrı attribute’lerin örneklerini gördük.Elbette elementler birden fazla attribute içerebilirler.Bir elementin tüm attribute değerlerini tek bir attribute list’te tutmak elbette en mantıklı çözümdür.Aşağıda buna ilişkin bir örnek görülmektedir:

Software AG / TÜRKİYE
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.