XML ve XSLT Kullanarak Dinamik ASP.NET Sayfaları Oluşturmak
Kısaca XML(Extensible Markup Language)
XML veri alışverişinde kullanılacak standart bir format olarak kullanılan bir dildir. Uygulamalarımızı farklı platformalara taşımak istediğimizde en iyi çözümdür. XML belgelerine kendi etiketlerinizi ekleyebilir aynı veritabanlarındaki gibi istediğim fieldları gösterebiliriz. Application, dil, işletim sistemi vb. gibi kısıtlamalara bağlı değildir. Uygulamalar kendi veri yapılarını tanımlayabilir. Son derece güvenliği olduğu için veri paylaşımında yada dağıtımında sürekli kullanılır. Örnek olarak Haberler.XML’i oluşturalım;
<?xml version="1.0" encoding="utf-8" ?>
<Haberler>
<Haber ID="1">
<Baslik>Sem Göksu MVP Oldu</Baslik>
<Tarih>bugünün tarihi işte…</Tarih>
<Icerik>Bi tebriği hakettim J</Icerik>
</Haber>
<Haber ID="2">
<Baslik>Sem Göksu AJAX Semineri</Baslik>
<Tarih>Gelecekte…</Tarih>
<Icerik>Bilmemki…</Icerik>
</Haber>
<Haber ID="3">
<Baslik>Ajax güzel şey</Baslik>
<Tarih>Gelecekte…</Tarih>
<Icerik>güzel………..</Icerik>
</Haber>
<Haber ID="4">
<Baslik>Ajax güzel şey 2</Baslik>
<Tarih>Gelecekte…</Tarih>
<Icerik>güzel………..</Icerik>
</Haber>
<Haber ID="5">
<Baslik>Ajax güzel şey 3</Baslik>
<Tarih>Gelecekte…</Tarih>
<Icerik>güzel………..</Icerik>
</Haber>
</Haberler>
Şimdi bu XML’i açtığımız da neler olacak bi bakalım :)
Ben bir şey anlamadım ziyaretçi nasıl anlasın. Bunu biraz biçimlendirelim. Ama nasıl?
Kısaca XSLT(Extensible Stylesheet Language Transformation)
Sitemizde haberleri farklı sitelerin de kullanması için XML’e döktük. Ama siteler Xml verisinin farklı bir formata dönüştürülmesini istiyor. XSLT standardı tam bu noktada karşımıza çıkıyor. XSLT, XML içeriğine sitiller uygulayarak sayfalarımızın HTML formatına dönüştürülmesini sağlar. Ayrıca xml üzerinde sıralama, filtreleme ve gruplama gibi işlemler yapabiliriz. Örnek olarak HaberlerSitili.xsl’i oluşturalım;
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h1>Haberlerim...</h1>
<table border="0" borderColor="gray" cellpadding="0" cellspacing="0" width="700">
<tr bgcolor="Yellow" height="20">
<td>ID</td>
<td>Tarih </td>
<td>Başlık </td>
<td>Icerik </td>
</tr>
<xsl:for-each select="Haberler/Haber">
<tr>
<td>
<xsl:value-of select="@ID"/>
</td>
<td>
<font size="2" color="Blue">
<xsl:value-of select="Baslik"/>
</font>
</td>
<td>
<b>
<xsl:value-of select="Tarih"/>
</b>
</td>
<td align="right">
<xsl:value-of select="Icerik"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Evet Şimdi bu oluşturduğumuz XML ve XSLT dökümanlarını birleştirerek HTML gibi bir çıktı alalım. Projemize bir sayfa ekleyelim;
İlk olarak sayfamızın namespacelerine System.XML ve System.XML.XSL’i ekleyelim.
Sonra Forlm’un loadıında;
VB.NET
Dim xdoc As New XmlDocument()
xdoc.Load(Server.MapPath("haberler.xml"))
Dim xsltran As New XslCompiledTransform()
xsltran.Load(Server.MapPath("HaberlerSitili.xsl"))
xsltran.Transform(xdoc, Nothing, Response.Output)
C#NET
XmlDocument xdoc = new XmlDocument();
xdoc.Load(Server.MapPath("haberler.xml"));
XslCompiledTransform xsltran = new XslCompiledTransform();
xsltran.Load(Server.MapPath("HaberlerSitili.xsl"));
xsltran.Transform(xdoc , null, Response.Output);
Şimdi sayfaımızı çalıştıralım;
Az önceki çirkin XML şimdi ne güzel oldu : )
Bu makalemizinde de sonuna geldik. Teşekkür eder iyi çalışmalar dilerim.
Sem GÖKSU
MCP | MCAD.NET | MCTS | ASP.NET MVP
Örnek Kodlar için mail adresimi kullanabilirsiniz
semgoksu@semgoksu.com
Kaynaklar
www.codeproject.com