ELEMENTLER


XML dokümanları daha fazla bilgiyi taşıyabilmek için genişletilebilirler. Aşağıdaki kod satırını inceleyelim:

 

<not>

   <kime>esra</kime>

   <kimden>demir</kimden>

   <body>sınav tarihi!</body>

</not>

 

Şimdi yazmış olduğumuz bu kod satırının nasıl bir çıktı vereceğini inceleyelim:

 

Mesaj

kime:esra        

kimden:demir

sınav tarihi!

 

Şimdi dokümanımız içerisinde daha fazla bilgiyi sunmak istediğimizi varsayalım:

<not>

<tarih>199-03-01</tarih>

<kime>esra</kime>

<kimden>demir</kimden>

<heading>uyarı</heading>

<body>sınav tarihi!</body>

</not>

 

 

Görüleceği gibi XML dokümanının yapısında herhangi bir değişiklik yapmaksızın daha fazla bilgiyi görüntüleme olanağını bulduk. Bu da bize XML dokümanlarının esnek yapısı hakkında bazı fikirler vermektedir.

XML elementleri birbirleriyle ilişki içindedir. Bu ilişki biçimi elementlerin parent ya da child oluşlarıyla belirlenmektedir.

XML elementlerinin parent/child ilişkilerini bir örnek üzerinde açıklayalım:

 

Kitap Başlığı:Software AG ve XML

Bölüm 1: XML'e giriş

   HTML ve XML'in karşılaştırılması

   XML ve E-Ekonomi

Bölüm 2: XML Syntax

   Elementler

 

ATTRIBUTE’LAR


 

Çıktı düzeni verilmiş olan bu kitabı tanımlayacak XML dokümanını tasarlayalım:

<kitap>

<baslik>Software AG ve XML</baslik>

<urun id="12-112" media="paper"></urun>

<bolum>XML'e giris

<para> HTML ve XML'in karşılaştırılması</para>

<para> XML ve E-Ekonomi</para>

</bolum>

<bolum>XML'e giris

<para> Elementler</para>

<para>Attribute'lar</para>

</bolum>

</kitap>

 

Dokümanımızın root elementi "kitap" tır."kitap" elementi "baslik" ve "bolum" elementlerinin parent'i durumundadır."baslik" ve "bolum" elementleri ise aynı seviyede bulunan elementlerdir ve bunlar arasındaki ilişkiye sibling denir. Elementler farklı içerik tiplerine sahip olabilirler. Bir element diğer bir elementi içerebileceği gibi basit,sabit ya da boş(empty) içerikte de olabilir. Yukarıdaki örneği incelediğimizde "para" elementinin sadece metin(text) içeriğinde olduğunu,"bolum" elementinin diğer elementleri içerebildiğini ve "urun" elementinin ise boş bir içerikte(empty) olduğunu görmekteyiz.

 

Elementlerin İsimlendirilmesi

Elementlerin isimlendirilmelerinde bazı kurallar geçerlidir:

İsimler harf,sayı ya da diğer karakterleri içerebilir.

İsimler bir sayı veya _ (underscore) karakteri ile başlamamalıdır.

İsimler "xml"(ya da XML veya Xml) şeklinde başlamamalıdır

İsimler boşluk içermemelidir.

Elementler attribute değerlerine sahip olabilirler. Attribute'lar elementler için ek bilgilerin tanımlanmasına olanak veren yapı birimleridir:

Bir HTML sayfasında tanımlanmış olan

<IMG SRC="edi1.gif">

kod parçasında SRC attribute değeri IMG elementi için ek bilgiler tanımlamamıza olanak sağlamaktadır. XML dokümanları için de durum aynıdır.

Veri bir XML dokümanında element veya attribute'lar içerisinde saklanır. Aşağıdaki örnekleri inceleyelim:

<kisi cinsiyet="bayan">

<ad>esra</ad>

<soyad>demir</soyad>

</kisi>

 

<kisi>

<cinsiyet>bayan</cinsiyet>

<ad>esra</ad>

<soyad>demir</soyad>

</kisi>

 

İki örneği karşılaştıracak olduğumuzda "cinsiyet" değerinin birinci örnekte bir attribute ikinci örnekte ise bir element halinde olduğu anlaşılacaktır. Ancak her iki örnekte de ortak olan özellik hem element hem de attribute şeklinde de "cinsiyet" değerinin bilgi depolaması olduğudur. Hangi durumlarda attribute'ların hangi durumlarda elementlerin kullanılacağına ilişkin kesin bir tanımlama yoktur. Aşağıdaki üç örneği incelediğimizde tümünün aynı bilgiyi içerdiği açıkça görülecektir:

 

 

XML DÖKÜMANLARININ GEÇERLİLİĞİ

 

Well-Formed XML Dokümanları Bir well-formed XML dokümanı doğru XML syntax'ında olan doküman demektir.

 

Valid XML Dokümanları

Valid bir XML dokümanı doğru XML syntax'ında olan(yani aynı zamanda well-formed yapıda olan) ve yapı bilgilerini aldığı DTD'ye uyumluluk gösteren doküman demektir.

Aşağıdaki örnekleri inceleyelim:

DTD Nedir?

DTD'leri, XML dokümanlarının yapı bilgilerini tutan modüller olarak tanımlamak mümkündür. Doküman içinde kullanılacak olan tüm varlıklar daha önceden DTD içerisinde tanımlanmalıdır.

 

XML Schema XML Schema'lar da DTD'ler gibi XML dokümanlarının yapı bilgilerini tutarlar. Ancak DTD'lere göre daha kullanışlıdır ve en önemli özelliği XML syntax'ında olmalarıdır.

 

Hata(Error) ve Hata Kontrolü XML dokümanları içerisinde yapacağımız bir syntax error veya geçerlilik kontrolü hatası(validation error) durumunda program XML dokümanını işleme işine devam etmez ve durur. HTML'de ise yapılabilecek bir hata da(örneğin bitiş tag'i yazmayı unuttuğumuzda) program çalışmaya devam eder.

 

XML Dokümanlarının Görüntülenmesi Stylesheet Kavramı

Bir XML dokümanının sunumu sırasında izlenen yollar yukarıdaki şekilde belirtildiği şekilde gerçekleşir. XML dökümanları,yapı bilgilerinin geçerlilik kontrolleri (DTD'ye bakılarak) yapıldıktan sonra XML Parser adı verilen yazılıma giderler. XML parser bu yapı bilgilerinden yararlanarak dokümanın parçalanma ağaç yapısını yani Parse Tree'sini oluşturur. Parse Tree'si oluşturulmuş olan doküman "Stylesheet" adı verilen işlem kullanılarak sunuma hazır hale getirilir. Daha sonra stylesheet işleminin uygulandığı sunum kısmından(rendering agent) alınan XML dokümanı görüntüleme cihazına aktarılır. Temel olarak kullanılan iki stylesheet tekniği bulunmaktadır:CSS ve XSL

CSS(Cascaded StyleSheets) ve XSL(Extensible StyleSheets) tekniklerinin her ikisi de XML dokümanlarının şekillendirilmesi amacıyla kullanılır. Amacı aynı olmasına rağmen XSL'in CSS'e göre daha esnek ve daha avantajlı olduğunu görmekteyiz.

Aşağıdaki XSL örneğini inceleyelim:

 

<?xml version="1.0"?>

<?xml:stylesheet type="text/xsl" href="ornek.xsl"?>

<kahvalti-menu>

   <yemek>

      <ad>Tulum Peynir</ad>

      <fiyat>125</fiyat>

      <tarif>Taze Tulum Peyniri</tarif>

      <kalori>1200</kalori>

   <yemek>

</kahvalti-menu>

 

Dikkat edilecek olursa XML dokümanının şekil bilgisi "ornek.xsl" adı verilen ayrı bir yapı biriminde tutulmaktadır."ornek.xsl" yapı birimi xsl uzantısından anlaşılacağı gibi XML dokümanımız üzerinde xsl tekniğini kullanarak stylesheet işlemini uygulamıştır.