Elemanlar XML dilinin en temel yapı taşlarıdır. Bir eleman veri içeriğini kapsayan bir kutudur. Karakter verileri, diğer elemanları veya diğer işaretleme yapılarını içerebilirler. Elemanlar etiketlerle ayrılırlar. Her bir etiket bir eleman tip ismi (element type name) içerir ve bir çift (“<>”) açı parantezle içe alınır. Eleman tip isimlerini oluşturmakta olan kurallar diğer programlama dillerindeki isim kurallarına benzemektedir. Her bir isim bir harfle veya alt çizgi (_) başyababilir. Tire (-) veya sayı ile başlayan isimler kulanılamazlar.
Boş elemanlar (empty elements) haricindeki her bir elemanın bir başlagıç etiketi bir de bitiş etiketi bulunur.
Başlangıç Etiketleri
Bir elemanın başlama ayıraçı başlangıç etiketi (start-tag) olarak adlandırılır ve bir çift (“<>”) açı parateziyle kapatılır. Aşağıda bir bazı doğru başlangıç etiketleri verilmiştir.
XML:
<kime>
<kimden>
<Kitap>
<kitap>
Unutulmaması gereken bir diğer kural XML dili harflerin büyük veya küçük olmasına duyarlı (case sensitive) olduğudur. Örnekteki <Kitap> ve <kitap> etiketleri aynı değildirler.
Bitiş etiketleri
Bir elemanın bitiş ayıraçı bitiş etiketi (end-tag) olarak adlandırılır. Bitiş etiketi eleman tip ismi öcesinde bir bölü (“/”) karakteri içerir ve açı parantezleri ile kapatılır. Aşağıda bitiş etiketi örnekleri verilmiştir.
XML:
</kime>
</kimden>
</Kitap>
</kitap>
XML’de her bir başlangıç etketi bir bitiş etiketi ile mutlaka kapatılmalıdır. Başlangıç bitiş etiketi ile kapatılmış bir tam XML elemanı aşağıdaki gibidir.
XML:
</kitap> XML Unleashed </kitap>
Boş Eleman Etiketleri
Aşağıdaki örnekteki ilk satırda olduğu gibi boş elemanlar (empty elements) her hangi bir içerik içermezler. Boş etiketler istenirse etkiketin sonuna tek bir bolü (/) işareti eklenerek kısatılmış bir biçimde gösterilebilir. İkinci satırda bunun bir örneği verilmiştir.
Belge Elemanı
XML belgeleri mutlaka hiyerarşik etiket yapısında olmalıdır. Etiket hiyerarşisi içindeki en üst sevyideki etiket kök etiket (Root tag) veya belge kökü (Document root) olarak adlandırılır. Kök etiketin oluşturduğu eleman Belge elemanı (Document Element) olarak adlandırılır. Bu eleman belgenin ağaç yapısındaki diğer bütün elemanları içine alır ve diğer bir elemanın içinde bulunamaz. Örneğin Şekil 4’te verilen elektronik posta örneğinde belge kökü e_posta’dır.
Elemanlar iç içe yuvalandığında yuvalama (nesting) kurallarına uymalıdırlar. Yoksa bu bir XML belgesinin hiyerarşik ağaç yapısını bozacaktır. Aşağıda bir yanlış yuvalama örneği verilmiştir.
XML:
HTML allows <B>
<I> improper nesting <B>
<I>
Aşağıda doğru bir yuvalama örneği verilmiştir.
XML:
XML requires <B>
<I> improper nesting <I>
<B>
Özellikler (Attributes)
Elemanlara eklemek istediğimiz ek bilgiler özellikler olarak ifade edilir. Özelikler başlangıç etiketi içerisinde isim ve değer ikilileri olarak geçer. Aşağıda bir özellik örneği verilmiştir:
XML:
<kitap kitap_no=”123456”>
Buradaki kitap_no kitabın bir özelliğidirr. Özellik değerleri mutlaka çift tırnak (“) veya tek tırnak (‘) içine alınmalıdır.
Karakter Veri
Bir elemanın başlangıç ve bitiş etiketleri içinde geçen metin içeriği karakter veri (character data) olarak adlandırılır. XML içinde özel amaçlı olarak kullanılan (&,<,>,”,’) karaterleri olduğu gibi bir karakater veri içerisinde geçemezler. Bu karakterler işaretleme etiketleri içinde özel amaçlarla kullanılan ayıraçlardır.
XML’de HTML’den farklı olarak etiketler içine yazılmış olan veri içerisinde geçen boşluklar (White Space) korunur ve uygulamalara iletilir. Etiket tanımları içerisinde veya özellik tanımı içerisinde geçen boşluklar ise HTML’de olduğu gibi parser tarafından yok edilir.
Karakter ve Varlık referansları
SGML ve HTML gibi ASCII karakter seti içinde karakterleri göstermek için XML iki yöntem kullanmaktadır. Birinici yöntem karater refereranslarıdır. Karater referansları gosterilecek karateri onluk bir sayının başına “&#”, onaltılık bir sayının başına ise “&#x” ekleyerek gösterme imkanı sağlar. Örneğin copyright karateri ondalık olarak “©” veya onaltılık olarak “©” XML’de gösterlebilir.
Varlık referansları verilecek bir isim vasıtasıyla istenilen karaterleri göstermek için kullanılır. Varlık referansları bir amersend (&) karateri, bir isim ve noktalı virgülden (;) oluşur. Örneğin XML’de özel olarak kullanılan (&,<,>,’,”) karakterleri (& < > ' ") varlık referansları ile gösterilir. Bu referanslar XML de daha önce tanımlanmış standard referanslardır. Bu referanslar haricinde özel olarak kullanmak isteiğimiz varlık referansları DTD içinde tanımlanmalıdır.
Açıklamalar (Comments)
Açıklamalar HTML’de olduğu gibi “<!--“ ile başlar ve “-->” ile biter. Açıklamalar bir XML belgesinin herhangi bir kısmında geçebilir ve belgenin bir parçası sayılmazlar.
İşlem Komutları (Processing Instructions)
XML belgelerini kullanan uygulamalara her hangi bir komut geçilmesi istenildiğinde bu işlem komutları ile yapılır. İşlem komutları aşağdaki yapıya sahiptir:
XML:
<?hedef ...komutlar ... ?>
İşlem komutları XML işlemiçisi tarafından uygulamaya iletilir. İşlem komutları açıklamalar gibi bir XML belgesinin parçası sayılmazlar.
CDATA bölümleri (CDATA Sections)
CDATA bölümleri XML’de kullanılan işaretleme ifadelerinin göz ardı edilmesi gereken metinleri yazmada kullanılır. XML parsır’ı bu bölümde metin içerisinde yer alan işaretleme ayıraçlarını ve etiketlerini normal karaterker olarak algılar. Bir CDATA bölümü şu yapıya sahiptir:
Bu yapıda “...” olarak ifade edilen kısım “]]” hariç herhangi bir metini içerebilir. Aşağıda bir CDATA bölümü örneği verilmiştir.
XML:
<![CDATA[
*P = &A
C = (i <= 5) ;
]]>
Belge Tipi Deklarasyonu (Document Type Declaration)
Belge tipi deklarasyonları bir XML belgesinin giriş kısmında tanımlanan belgenin gramer tanım kurallarını belirleyen hangi harici ve dahili DTD (Document Type Definiton)’yi kullandığını belirtir. Bu kısım varlık referansı tanımlamaları gibi ek bilgilerde içerebilir. Harici belge tipi deklarasyonları şu formatta olabilir:
XML:
<!DOCTYPE kök_eleman_ismi SYSTEM "sistem_tanımlayıcısı">
<!DOCTYPE kök_eleman_ismi PUBLIC
"public_tanımlayıcısı""sistem_tanımlayıcısı">
Bu tanımdaki kök_eleman_ismi belge DTD’sinde en üst seviyede tanımlanan kök elemanı belirtir. Sistem_tanımlayıcısı ise harici olarak kullanılan DTD’ye URI (Uniform Resource Idenifier) bir referansı içerir. İkinci satırdaki formatta XML parser’ı ilk önce public_tanımlayıcısı’nı kullarak bir URI referansı oluşturmaya çalışır. Eğer bu mümkün olmazsa sistem_tanımlayıcısı’ndaki referansı kullanır. Aşağıdaki Şekil 2’de verilen adres belgesinin belge tipi deklarasyonu kısmı gösterilmiştir:
XML:
<?xml version="1.0"?>
<!DOCTYPE addressbook SYSTEM "http://xyz.com/AddressBook.dtd" [
<!ENTITY amp "&#38;">
<!ENTITY apos "'">
]>
İlk satır adres belgesindeki kök elemanın adressbook olduğunu belirtmektedir. Belgenin DTD’si http://xyz.com/AddressBook.dtd dosyasında saklanır. Bunun haricinde köşeli parantez içinde tanımlanan kısım ise varlık referanslarını tanımlamaktadır. Bu kısımda istenirse dahili belge tipi tanımlamalarıda bulunabilir.
İyi Oluşmuş (Well-formed) ve Doğru (Valid) Belgeler
XML söz dizimi (syntax) kurallarına uyan XML belgeler iyi-oluşmuş (Well-formed) belgeler olarak adlandırılır. Eğer belge için tanımlanmış olan DTD’de geçen gramer kurallarına uyuyorsa bu durumdaki belgelerde doğru (Valid) belgeler olarak adlandırılır.