Makale Özeti

Bu makalemizde ASP.NET web form kontrollerinden XML Sunucu Kontrolünü bir satış örnek uygulaması üzerinden inceliyor olacağız.

Makale

ASP.NETi güçlü kılan özelliklerden olan Sunucu Kontrolleri (Server Controls) içerisinde yer alan XML sunucu kontrolü bizim farklı XML yapısında olan verileri alıp XSL ile onlara görünüm kazandırıp ASP.NET web sayfaları içerisinde gösterebilmemizi sağlamaktadır. XML yani eXtensible Markup Language platformlar arası ortak bir veri standardı olduğu ve Web Servisleri gibi yeni kavramlarla uygulamalarımızda olmazsa olmazlardan birisi haline geldiği için bu makale sonucunda sizlerin de sıkça XML sunucu kontrolü kullacağınızı düşünüyorum.

Öncelikle XML Dosyası ile başlayalım. Satislar.xml diye bir dosya yaratalım ve içerisinde bölge bazında ciromuz, büyüme oranlarımız ve bonus bilgimiz yer alsın:

Satislar.xml

<?xml version="1.0" encoding="utf-8" ?>
<satislar>
<bolge id=Denizli>
<ciro>10</ciro>
<buyume>9</buyume>
<bonus>7</bonus>
</bolge>
<bolge id=Trabzon>
<ciro>4</ciro>
<buyume>3</buyume>
<bonus>4</bonus>
</bolge>
<bolge id=Ankara>
<ciro>6</ciro>
<buyume>-1.5</buyume>
<bonus>2</bonus>
</bolge>
</satislar>

XML Dosyaları sadece verinin kendisini değerleriyle tuttuğu için onu görsel bir şekile sokabilmek için XSL kullanmalıyız. XSL dosyamız hangi verinin nasıl bir tablo içerisinde ve hangi renklerde görüneceğine karar verdiğimiz dosyadır, yani verinin kendisiyle değil görünümüyle ilgilenir. Gelin şimdi de SatisTablosu.xsl dosyamızı yaratalım:

SatisTablosu.xsl

<xsl:stylesheet version=1.0 xmlns:xsl=http://www.w3.org/1999/XSL/Transform>
<xsl:template match="/">
<style>
.value { width:"25%";font-family:Lucida Sans; font-size:.8em; white-space=pre;}
</style>
<table border="1" cellspacing="0" cellpadding="3" bordercolor="black">
<tr>
<th>Bolge</th>
<th>Ciro</th>
<th>Buyume</th>
<th>Bonus</th>
</tr>
<xsl:for-each select=satislar/bolge>
<tr>
<td class="value">
<em>
<xsl:value-of select=@id />
</em>
</td>
<td class="value">
<xsl:value-of select=ciro />
</td>
<td class="value">
<xsl:if test=buyume &lt; 0>
<xsl:attribute name=style>
<xsl:text>color:red</xsl:text>
</xsl:attribute>
</xsl:if>
<xsl:value-of select=buyume />
</td>
<td class="value">
<xsl:value-of select=bonus />
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

Dikkat ettiyseniz SatisTablosu.xsl içerisinde <xsl:if> kısmı var, bu kısımda yaptığımız bir döngüye sokmak gelen büyüme değerini, eğer sıfırdan küçükse bu o bölgede pazar payımızın küçülmesi demektir ki, bu önemli bilgiyi ön plana çıkarmak için kırmızı olarak ekranda yer almasını sağlayabiliriz.

Geldik son olarak <asp:xml> sunucu kontrolümüzü kullanmaya. Bu sunucu kontrolüne iki şeyi söylemem gerekiyor; birincisi DocumentSource yani XML Dosyası nedir, ikincisi ise TransformSource yani bu XML dosyasını ekranda görsel olarak ifade edecek tablo için XSL dosyası nedir. XML_kontrolu.aspx dosyasının içeriğini görelim dilerseniz:

XML_kontrolu.aspx

<%@ Page Language="vb" %>
<HTML>
<head><title>XML Sunucu Kontrolü</title></head>
<body>
<asp:xml id="MyXml1" DocumentSource="Satislar.xml" TransformSource="SatisTablosu.xsl" runat="server" />
</body>
</HTML>

Şimdi de sonuç ekranını almak için localhost/XML_kontrolu.aspx diyerek sayfamızın görünümüne bakalım:

Şekil 1

Şekil 1de de görüldüğü gibi XML dosyamız okundu, XSL ile anlam verildi ve XML Sunucu kontrolümüz ekranda gerekli dönüşümleri uygulayarak bize XML dosyasını anlamlı bir şekilde gösterdi. Hatta Ankara bölgesinin büyüme oranı eksi değerde olduğu için xsl:if devreye girdi ve o döngü içerisinde değer kırmızı olarak ekrana yazıldı.

Sonuç olarak XML kullanımı birçok ASP.NET web uygulaması için oldukça kritik önem arzediyor çünkü farklı kaynaklardan aldığımız verileri XML ile ortak bir yapıda toplamış oluyoruz, içeriği veriden ayrıştırmamız görümünü kaybetmemize neden oluyorsa da XSL ile bu sorunu da çözmüş oluyoruz. <asp:xml> kontrolünü bu makalede yakından tanışmış olduk. Yeni makalelerimizde de bilgiyi paylaşmak üzere.

Mehmet Nuri ÇANKAYA

cankaya@aspnedir.com