XML Dosyası ve XML Söz Dizimi Kuralları

XML-Syntax--XML-Söz-Dizimi

XML Dosyası ve XML Söz Dizimi (XML Syntax)

XML söz dizimi (XML syntax), XML belgesi/dosyası oluştururken bağlı kalınması gereken kuralları belirten XML’nin dilbilgisidir.

XML söz dizimi konusuna geçmeden önce XML ve XML dosyası ile ilgili giriş niteliğindeki XML Nedir? Neden ve Nasıl Kullanılır? Her Yönüyle XML Rehberi yazısını incelemeniz faydalı olacaktır.

XML dosyası (yani aslında bir XML belgesi) oluştururken bu dosyanın kendi alanında kullanılabilmesi için belirli kuralları olan bir dilbilgisine bağlı kalmak gerekmektedir. XML söz dizimi işte bu dilbilgisini sağlar. Yani bir XML uygulamasının nasıl yazılacağını belirleyen kuralları ifade eder. XML söz dizimi çok basittir dolayısıyla kolaylıkla bir XML dosyası oluşturulabilir.

XML 1.0 tarafından belirtilen söz dizimi kurallarına bağlı kalan XML belgeleri iyi biçimlendirilmiş (well formed) belgeler olarak adlandırılır. Doğru söz dizimine bağlı kalan iyi biçimlendirilmiş (well formed) dokümanın bazı temel özellikleri bulunmaktadır.

XML Dosyası Söz Dizimi

Bir XML dokümanını oluşturan ve ayrı ayrı göreceğimiz alanlar şunlardır:

  • XML Bildirimi (XML Declaration)xml-syntax-check
  • Etiket (Tags) ve Öğeler (Elements)
  • Öznitelikler (Attributes)
  • Referanslar (References)
  • Metin (Text)
  • Yorumlar (Comments)
  • XML Ad Alanları (XML Namespaces)

XML Dosyası için Temel Kurallar

Bu kısımların neler olduğu ve bunlarla ilgili söz dizimi kurallarını ayrı başlıklarda göreceğiz. Öncesinde temel kuralları maddeler halinde görelim.

» XML belgelerinin kök öğesi olmalıdır ve sadece bir kök öğesi olmalıdır.

» XML öğelerinin bir kapanış öğesi (elemanı) olmalıdır.

» XML etiketleri büyük küçük harfe duyarlıdır. Aynı isme sahip olsalar da büyük küçük harf ayrımından dolayı farklı etiketler olduğu şeklinde yorumlanacaktır.

» XML etiket isimlerinde boşluk karakteri kullanılamaz.

» XML etiket isimlerinde alfanümerik karakterler kullanılabilir. Ayrıca izin verilen diğer karakterler de kısa çizgi (-), alt çizgi (_) ve nokta (.)’dır.

» XML öğeleri iç içe düzgün bir şekilde yerleştirilmiş olmalıdır [nasıl olduğu Etiket (Tags) ve Öğeler (Elements) başlığında anlatılmaktadır.]

» XML öznitelikleri (attributes) yani özellik değerleri tırnak içinde olmalıdır.

» XML öznitelikleri de büyük küçük harf duyarlıdır.

XML Bildirimi (XML Declaration)

Bir XML belgesinin ilk satırı bunun bir XML belgesi olduğunu ve hangi XML sürümünün kullanıldığın belirtilmesi olmalıdır. Dokümanın ilk satırında aşağıdaki söz dizimi ile XML bildirimi yapılır:

 <?xml

        version = "sürüm_numarası"

        encoding = "karakter_kodlama_bildirimi"

        standalone = "bağımsız_olma_durumu"

?>

Her parametre, bir parametre adı, bir eşittir işareti (=) ve tırnak içerisindeki parametre değerinden oluşur. Aşağıdaki tablo yukarıdaki söz dizimini ayrıntılı olarak göstermektedir:

Parametre

Parametre Değeri

Parametre Tanımı

Version

1.0

Kullanılan XML standardını gösterir.

Encoding

UTF-8, UTF-16, ISO-10646-UCS-2, ISO-10646-UCS-4, ISO-8859-1 – ISO-8859-9, ISO-2022-JP, Shift_JIS, EUC-JP

Belgede kullanılan karakter kodlamasını tanımlar. UTF-8 kullanılan varsayılan kodlamadır.

Standalone

yes / no

Belgenin içeriği için harici belge türü tanımı (DTD) gibi harici bir kaynaktan gelen bilgilere bağlı olup olmadığını bildirir. Varsayılan değer “no” olarak ayarlanmıştır. “yes” olarak ayarlandığında, işlemciye belgeyi ayrıştırmak için harici bir bildirim gerekmez.

Bu ilk satır “XML Prolog”un bir parçasıdır. XML prolog, dosyanın başlangıcından belge kök öğeye gelene kadar XML bildiriminin, işleme talimatlarının, yorumların veya belge türü tanımının içerdiği kısımdır.

XML belgesine XML bildirimi (declaration) eklendiği takdirde dokümanda her zaman ilk satır olarak yerleştirilmelidir ve sürüm numarası (version) özniteliğini içermelidir. Parametre isimleri ve değerleri büyük küçük harf duyarlıdır. Parametrelerin sıralaması önemlidir; doğru sıra version, encoding ve standalone şeklindedir. Parametre değerleri verilirken çift tırnak veya tek tırnak kullanılabilir. XML bildiriminin kapanış etiketi yani </?xml> yoktur. Bu bilgiler ışığında örnek olarak bazı XML bildirimlerini şu şekilde gösterebiliriz:

<?xml version = "1.0">

<?xml version='1.0' ?>

<?xml version='1.0' encoding='US-ASCII' ?>

<?xml version='1.0' encoding='US-ASCII' standalone='yes' ?>

<?xml version='1.0' encoding='UTF-8' ?>

<?xml version='1.0' encoding='UTF-16' ?>

<?xml version='1.0' encoding='ISO-10646-UCS-2' ?>

<?xml version='1.0' encoding='ISO-8859-1' ?>

<?xml version='1.0' encoding='Shift-JIS' ?>

<?xml version= "1.0" encoding = "UTF-8" standalone = "no" ?>

<?xml version = '1.0' encoding = 'iso-8859-1' standalone = 'no' ?>

Etiket (Tags) ve Öğeler (Elements)

XML’de etiket (tag), XML dosyasının temelini oluşturur. XML syntax yani XML söz diziminde etiketler üçgen parantez (<>) içinde belirtilir. Başlangıç etiketi, bitiş etiketi ve bunların arasında bulunan veri kümesine öğe (element) denir. Örneğin <sehir> bir başlangıç etiketi, </sehir> bitiş etiketi ve <sehir>İstanbul</sehir> bir öğedir. Başlangıç ve bitiş etiketi arasında veri olmadığı takdirde boş yapı iki farklı şekilde yani <sehir></sehir> ya da <sehir /> şeklinde gösterilebilir. Bir XML belgesinin bir kök öğesinin olduğunu ve buna bağlı alt öğelerden oluşan ağaç yapısında olduğunu belirtmiştik. Dolayısıyla XML belgesinde gövde şu şekildedir:

<kokoge>

  <oge>

    <altoge>.....</altoge>

  </oge>

</kokoge>

Yani aşağıdaki gibi iki kök öğenin bulunması yanlıştır:

<kokoge>...</kokoge>

<kokoge>...</kokoge>

Doğrusu şu şekilde olabilir:

<kokoge>

<a>...</a>

<b>...</b>

</kokoge>

Bir öğenin altında birden çok alt öğe olabilir ve her alt öğenin altında da onun alt öğesi olabilir. XML etiketleri tamamen büyük küçük harf duyarlıdır ve aynı şekilde olmalıdır. Örneğin <sehir>İstanbul</Sehir> doğru değildir. Bir diğer önemli nokta da XML etiketleri bulunduğu ağaç yapısına göre uygun sırada kapatılmalıdır. Etiket – öğe adları alfanümerik karakterleri içerebilir. Etiket ve öğe isimlendirmede izin verilen tek noktalama işareti kısa çizgi (-), alt çizgi (_) ve nokta (.)’dır. Yalnız etiket – öğe isimleri harf veya alt çizgi ile başlayabilir. Ayrıca öğe isimlerinde boşluk bulunmaz.

Öznitelikler (Attributes)

Öznitelikler (attributes) -bunu nitelik olarak da adlandırabiliriz- XML öğelerinin bir parçasıdır. XML söz dizimi (XML syntax) içerisinde öznitelikleri özellik değerleri olarak adlandırabiliriz. Bir öğenin birden fazla benzersiz özelliği olabilir. Yani aynı yerdeki özniteliklerin isimleri farklı olmalıdır. Öznitelik XML öğeleri hakkında ek bilgi verir daha doğrusu öğenin özelliğini belirtir. XML özniteliği her zaman bir isim-değer çiftidir. Öznitelikler, her durum için yeni bir öğe oluşturmak istemediğinizde aynı isimdeki öğeleri ayırt etmek için kullanılır. Her zaman tırnak içerisinde gösterilmelidir. Tek tırnak ve çift tırnak her ikisi de kullanılabilir. Örnek bir kullanım:

<ev>

<odalar oda="mutfak">...</odalar>

<odalar oda="salon">...</odalar>

</ev>

Bir öğe birden fazla özniteliğe sahip olabilir. Bir öznitelik aynı başlangıç etiketinde (boş öğe etiketinde de aynı şekilde) bir defadan fazla bulunmamalıdır. Öznitelik isimleri de aynı şekilde büyük küçük harf duyarlıdır. Öznitelikler, öznitelik listesi bildirimi kullanılarak XML Schema (XSD) veya belge türü tanımında (DTD) bildirilmelidir. Öznitelik sayısında bir sınırlama yoktur. Öğeler tanımlanırken bazı türlere sahip olabilir. Bu türler de şu şekildedir:

Öznitelik Türleri

Açıklama

CDATA

Character Data (işaretleme içermeyen metin verisi.)

ENTITY

Varlık ismi (DTD’de bildirimi yapılmalıdır.)

ENTITIES

Varlık listesi, boşluk karakteri ile ayrılırlar. (DTD’de bildirimi yapılmalıdır.)

Enumerated

Değerler listesi. Özniteliğin değeri bu listeden biri olmalıdır.

ID

Tekil ID değeri.

IDREF

Başka bir öğeye ait ID özniteliğinin değerini temsil eder.

IDREFS

Elementlerin ID’lerini gösterir. Boşluk karakteri ile ayrılır.

NMTOKEN

Geçerli bir XML adı.

NMTOKENS

Geçerli XML adları listesi. Boşluk karakteri ile ayrılır.

NOTATION

Notasyon ismi. DTD’de bildirimleri yapılmalıdır.

Referanslar (References)

Referanslar genellikle bir XML belgesine ek metin veya işaretleme eklememizi sağlar. XML’de bir karakter yerine yer tutucu olarak kullanılırlar. Bunlar belge prolog kısmında veya DTD’de bildirilebilir. XML’de de HTML’de olduğu gibi kendi kullanımı için ayrılmış ve XML kodunda içerik olarak kullanılamayan bazı sembollere sahiptir. Örneğin, XML etiketlerini açmak ve kapatmak için < ve > işaretleri kullanılır. Bu özel karakterleri görüntülemek için karakter varlıkları kullanılır. Bu varlıklar her zaman ayrılmış bir karakter olan “&” sembolü ile başlar ve “;” sembolü ile biter. XML’in iki tür referansı vardır:

  • Varlık Referansı (Entity Reference): Bir kısım karakterler için alternatif olarak başvurulabilecek bir referans türüdür. Bir varlık bildirimi yapıldıktan sonra bu varlığa referansta bulunulabilir.

Örneğin <!ENTITY sehir “İstanbul”> bildirimini yapalım. XML dokümanımızda <adres>Şehir: &sehir;</adres> olarak bir öğe belirttiğimiz takdirde buradaki &sehir; temsil ettiği içerik ile değiştirilir yani aslında bunun çıktısı <adres>Şehir: İstanbul</adres> şeklindedir.

  • Karakter referansı (Character Reference): Belirli referans karakter kümelerinin karşılığının özel bir karaktere karşılık geldiği durumdur. Örneğin “&#x20;” boşluk anlamına gelmektedir ya da “&#169;” referansının anlamı © karakteridir.

Metin (Text)

XML öğeleri ve XML öznitelikleri ile ilgili kendi başlıklarında belirttiğimiz kurallara ek olarak belirtilmesi gereken noktaları da belirtelim. Öğeler ve öznitelikler arasındaki boşluklar, sekmeler ve satır sonları gibi boşluk karakterleri göz ardı edilir. Bir öğe (element) içerisindeki metin içerisindeki boşluk karakteri değerlendirilir. Mesela <node>ilk metin</node> ve <node>ilkmetin</node> farklı öğelerdir.

Karakter kodlama sorunlarını önlemek için de tüm XML dosyaları Unicode UTF-8 veya UTF-16 dosyaları olarak kaydedilebilir.

XML’de bazı karakterler rezerve edilmiştir ve direkt olarak kullanılamazlar. Kullanıldığı takdirde bu karakterler kullanıldığı yere göre söz dizimi hatası verebilir. İyi biçimlendirilmiş bir doküman için bu karakterlerin direkt kullanımından kaçınılmalıdır. Bunları kullanabilmek için yerine getirilecek varlık karakter kümeleri aşağıdaki gibidir:

İzin Verilmeyen Karakterler

Yerine Kullanılacak Karakterler

Karakter Açıklaması

<

&lt;

Küçüktür

>

&gt;

Büyüktür

&

&amp;

Ampersand

&apos;

Tek tırnak

&quot;

Çift tırnak

Yorumlar (Comments)

XML dosyası içeriğine bilgi vermek amacıyla veya başka amaçlarla yorumlar eklenebilirler. Eklenen bu yorumlar XML belgesi içeriğinde görünmesine rağmen XML kodunda görülmezler. XML bildirimi bir XML dokümanının ilk satırı olacağı için XML bildirimi öncesi haricinde yorumlar XML’nin herhangi bir yerine eklenebilir. Bir yerin yorum olarak işaretlenmesi için <!-- ve --> karakterleri kullanılır, yorumlar bunların arasına girilir. Tek satır veya birden çok satır olabilir.

XML Ad Alanları (XML Namespaces)

XML Öğelerin ve özniteliklerin isimlerinin benzersiz olmasını sağlamak için (özellikle XML ve HTML gibi birden fazla işaretleme dili iç içe girmesi gerektiğinde) kullanılır. Bir belgenin tamamı veya bir kısmındaki öğeleri (elements) ve öznitelikleri (attributes) belirli bir şeme ile ilişkilendirmek için kullanılır. Alan adının verildiği öğenin ismi ile alan adının ismi benzersiz bir isim oluşturur, buna da “qualified name” yani nitelikli isim denir. Bu sayede isim çatışmalarının önlenmesine de yardımcı olur. Alan adları https://www.w3.org/TR/REC-xml-names/ W3C tarafından tanımlanmıştır.

XML namespace bildirimi xmlns özniteliği ile yapılır. Yani öğeye xmlns veya xmlns:önek verilerek yapılır.

Örneğin; <a:kok xmlns:a=”https://www.arakatman.com/a”>….</a:kok>

Bir öğede alan adı verilirse bu alan adı bu öğe ile birlikte öğenin altındaki alt öğeleri de kapsar.

XML söz dizimi ile ilgili detaylı bilgilere World Wide Web Konsorsiyumu’nun bu adresinden erişebilirsiniz. XML söz diziminden sonra DTD – Document Type Definition (Belge Türü Tanımı) ve XML Schema (XSD) yazıları ile XML’e devam edebilirsiniz.


Bu yazı size ne kadar faydalı oldu?

Değerlendirmek için bir yıldıza tıklayın!

Yazının sizin için faydalı olmadığını duymaktan dolayı müteessiriz...

Bu yazıyı geliştirmek isteriz!

Bu yazıyı nasıl geliştirebileceğimizi paylaşmak ister misiniz?