ELEMAN TANIMI (ELEMENT)XML belgelerinin temel öğesi diyebileceğimiz eleman (ELEMENT) DTD ile şu şekilde tanımlanır.

<!ELEMENT eleman Adı (tanımlama şekli)>

Bir eleman; bir veya daha fazla elemana sahip olabilir, bilgi içerebilir, boş olabilir.

Eğer elaman sadece bilgi içerecekse;

<!ELEMENT elaman adı (#CDATA)> veya <!ELEMENT elaman adı (#PCDATA)>

Tanımı

<!ELEMENT isim (#PCDATA)>

Kullanımı<isim>Mehmet</isim>

PCDATA ile CDATA arasındaki fark ise yorumlayıcının PCDATA’yı yorumlaması ama CDATA tanımlı bilgileri yorumlamamasıdır. (Entity kavramında bu konu daha iyi anlaşılacaktır.) Yorumlama sık gerekebileceğinden genelde kullanılan biçimi PCDATA’dır.

Diğer bir durum, elemanın ne bir alt eleman, ne de bilgi içermediği durumdur. Bu tür eleman tanımı ise şu şekilde olur.

<!ELEMENT elaman adı (EMPTY)>

Şu an aklınıza “bu elemanın ne işe yarayacağı” şeklinde bir soru gelmiş olabilir. Burada unutulmaması gereken, elemanların özelliklerinin de bulunduğu ve böyle durumlarda kullanılabileceğidir.

Ancak bu elemanın özellikleri olabileceği unutulmamalıdır.

Alt elamanı bulunan elemanlar ise şu şekilde olur.

<!ELEMENT eleman adı (alt eleman)> veya <!ELEMENT eleman adı (1. alt eleman, 2. alt eleman,…)>

Tanımı<!ELEMENT kisi (isim,soyisim)>

<!ELEMENT isim (#PCDATA)>

<!ELEMENT soyisim (#PCDATA)>

Kullanımı<kisi>

<isim>Mehmet</isim>

<soyisim>Kaynak</soyisim>

</kisi>

Eleman tanımlamasında “hangi elemandan kaç tane” olacağına dair bilgi içeren ifade de önemlidir. +,?,* gibi belirli ifadeleri ilgili elemanın sonuna yazarak durumları belirlenir. Her karakterin ayrı bir anlamı vardır.

+: Sözkonusu elemandan en az bir tane olacak, daha fazlada olabilir.

Tanımı<!ELEMENT notlarim(not+)>

Kullanımı<notlarim>

<not>…</not>

<not>…</not>

</notlarim>

*: Sözkonusu eleman hiç olmayabilir, bir tane ya da daha fazla olabilir.

Tanımı<!ELEMENT not (Gonderen,GonderenTelefon*)>

<!ELEMENT Gonderen (#PCDATA)>

<!ELEMENT GonderenTelefon(#PCDATA)>

Kullanımı<not>

<Gonderen>Mehmet</Gonderen>

</not>

<not>

<Gonderen>Orhan</Gonderen>

<GonderenTelefon>212 1234567</GonderenTelefon>

</not>

<not>

<Gonderen>Orhan</Gonderen>

<GonderenTelefon>212 1234567</GonderenTelefon>

<GonderenTelefon>212 7654321</GonderenTelefon>

</not>

GonderenTelefon adlı eleman ilk elemanda yokken 2. elemanda bir adet, 3. elemanda ise iki adet eleman mevcuttur. Bu belge geçerli, hatasız bir belgedir.

?: Sözkonusu eleman hiç olmayabilir, bir tane olabilir, daha fazla olamaz.

Az önceki örneğimizi “herkesin yalnızca bir cep numarası olacağın, veya olmayayağını” varsayarak uyarlayabiliriz.

Tanımı<!ELEMENT not (Gonderen,GonCepTlf?)>

<!ELEMENT Gonderen (#PCDATA)>

<!ELEMENT GonCepTlf (#PCDATA)>

Kullanımı<not>

<Gonderen>Mehmet</Gonderen>

</not>

<not>

<Gonderen>Orhan</Gonderen>

< GonCepTlf >212 1234567</ GonCepTlf >

</not>

Veya (Or) (|)

Sözkonusu alanların yalnızca birinin kullanılacağı anlamına gelir.

Tanımı<!ELEMENT not(Gonderen,(isTlfNo|cepTlfNo))>

<!ELEMENT Gonderen (#PCDATA)>

<!ELEMENT isTlfNo (#PCDATA)>

<!ELEMENT cepTlfNo (#PCDATA)>

Kullanımı<not>

<Gonderen>Nese</Gonderen>

<cepTlfNo>542 1234567</cepTlfNo>

</not>

<not>

<Gonderen>Cemil</Gonderen>

<isTlfNo>212 1234567</isTlfNo>

</not>

Şimdi yanlış bir örneğe bakalım;

<not>

<Gonderen>Cemil</Gonderen>

<isTlfNo>212 1234567</isTlfNo>

<cepTlfNo>532 1234567</cepTlfNo>

</not>

Burada hem isTlfNo ve cepTlfNo adlı elemanın ikisi birden kullanılmıştır. Bu yanlıştır.

Eleman ve Bilgi Karışımlı DurumlarEleman tanımı yapılırken bilgi alanlarının belirtilmesi de eleman gibi olur.

Tanımı<!ELEMENT not (Gonderen|#PCDATA)*>

Kullanımı<not>

<Gonderen>Nese</Gonderen>

Personel giriş – çıkış bilgileri

</not>

Favorilerinize Ekleyin.
  • BlinkList
  • del.icio.us
  • Digg
  • Netvouz
  • DZone
  • ThisNext
  • MisterWong
  • Wists
  • blogmarks
  • Furl
  • Netscape
  • NewsVine
  • Reddit
  • Shadows
  • Technorati
  • YahooMyWeb
  • Fark
  • feedmelinks
  • Fleck
  • kick.ie
  • LinkaGoGo
  • Linkter
  • MyShare
  • Spurl
  • Webride