XML PCDATA - CDATA
PCDATA ve CDATA'yı inceleyip arasında ne gibi farklar var onlara bakalım.
PCDATA - Parsed Character Data
Çözümlenmiş karakter verisi anlamına geliyor. Örnek olarak;
<kitap>Yunus Emre Divanı</kitap>
Kitap elemanın içinde & < > yerine & < > şeklinde yazmanız gerekmekte aksi halde tekrar bir eleman açıyormuş gibi işlem yapar ve hata ile karşılaşırsınız.
Hata ile karşılaşmamak için CDATA kullanmamız gerekir.
CDATA - Character Data
Karakter verisi anlamına geliyor. PCDATA'nın yetersiz kaldığı yerlerde CDATA kullanıyoruz. CDATA için;
<kitap>
<![CDATA[
Yunus <emre> Divanı
]]>
</kitap>
ile biter. CDATA nerede kullanırız ? Senaryo : Haber sitesi var; haber sitesinin manşet, son dakika, döviz kurları, spor sonuçları gibi anlık güncellenmesi gerekiyor. XML kullanarak nasıl güncelleyebiliriz?
Öncelikle sitede güncellenmesi gereken yerleri listeleyelim;
- Site Başlığı
- Son Dakika
- Manşet
- Döviz Kurları
- Spor Sonuçları
Bu yapıya uygun bir XML oluşturalım.
<?xml version="1.0" encoding="UTF-8"?>
<site guncelleme="01.01.2015 12:15">
<kafa>
<baslik></baslik>
</kafa>
<govde>
<manset></manset>
<sondakika></sondakika>
<doviz></doviz>
<spor></spor>
</govde>
</site>
Yukarıdaki ağaç yapısını oluşturduktan sonra gerekli verileri doldururken manşet kısmında HTML kodları ile birlikte eklersek hata alırız.
CDATA ile bunu çözebiliriz.
<?xml version="1.0" encoding="UTF-8"?>
<site guncelleme="01.01.2015 12:15">
<kafa>
<title>Son Dakika - Haber</title>
</kafa>
<govde>
<manset>
<![CDATA[
<li><img src="ilkaraba.jpg"></li>
<li><img src="ilkucak.jpg"></li>
<li><img src="ilkuydu.jpg"></li>
]]>
</manset>
<sondakika>
<![CDATA[
<li>Bor ile çalışan ilk milli araç üretildi.</li>
<li>İlk milli uçak başbakan tarafından test edildi.</li>
<li>TUBİTAK tarafından ilk milli uydu Kırşehir den fırlatıldı.</li>
]]>
</sondakika>
<doviz>
<![CDATA[
<div class="dolar">
x.xxxx
</div>
<div class="euro">
x.xxxx
</div>
<div class="bist/imkb">
x.xxxx
</div>
]]>
</doviz>
<spor>
<![CDATA[
<li>İnanılmaz yetenekli çocuk.</li>
<li>Galatasaraya yönetimde çalkalanma.</li>
<li>Fenere şok transfer.</li>
<li>Beşiktaş'dan sponsor anlaşması.</li>
]]>
</spor>
</govde>
</site>
Güncelleme işlemlerinde, XML veriyi parçalayarak hızlı bir şekilde güncelleme işlemini tamamlayabilirsiniz.