İnternet Teknoloji Tasarım icinde Asp.Net 2.0 Üzerinde Xslt Kullanımı konusu , Xml (eXtensible Markup Language - genişletilebilir işaretleme dili), farklı platformlar arasında kolayca bilgi taşınmasına izin veren, veri kümelerini kendi kurallarımızla oluşturmamızı sağlayan önemli standartlardan birisidir. Lakin zaman zaman Xml dökümanlarını ...
![]() |
|
#1
| ||||
| ||||
| Asp.Net 2.0 Üzerinde Xslt Kullanımı Xml (eXtensible Markup Language - genişletilebilir işaretleme dili), farklı platformlar arasında kolayca bilgi taşınmasına izin veren, veri kümelerini kendi kurallarımızla oluşturmamızı sağlayan önemli standartlardan birisidir. Lakin zaman zaman Xml dökümanlarını okumak çok kolay olmamaktadır. En azından oluşturulan Xml dökümanlarında tutulan içeriği, son kullanıcıya farklı şekillerde göstermek ihtiyacını duyabiliriz. İşte bu noktada, var olan Xml verisinin farklı bir formata dönüştürülebiliyor olması gerekmektedir. XSLT (eXtensible Stylesheet Language Transformation) standardı tam bu noktada devreye girmektedir. Xslt herhangibir Xml içeriğini farklı bir Xml, Html, Csv (Comma Seperated Values) veya Text formatına dönüştürme işlemi ile ilgili materyalleri sağlayan bir işaretleme dilidir. ![]() Bu sayede verileri sakladığımız bir Xml içeriğini son kullanıcıya daha uygun formatlarda sunabilme imkanını kazanmış oluruz. Bu özellikle web tabanlı sistemlerde son derece önemlidir. Dönüştürme işlemi sırasında sıradan bir tarayıcı kullanılabileceği gibi, .Net Framework içerisinde yer alan tiplerdende (types) faydalanılabilir. Yani Xslt ile çarpıştırılmış bir Xml içeriğine basit bir tarayıcı ile bakabilir yada bu çarpıştırma işlemini yönetimli kod (managed code) üzerinden .Net Framework tiplerini kullanarak gerçekleştirebiliriz. Xslt kendi içerisinde XPath dilini kullanmaktadır. Bu sayede kaynak Xml dökümanı içerisinde eşleştirme yaparak, dönüştürme işlemini uygulayacağı parçaları kolayca bulabilir. Xslt sadece Xml içeriğini farklı formatta göstermekle kalmaz dönüşüm işlemi sırasında aşağıdaki tabloda belirtilen işlemlerinde yapılabilmesini sağlar. Xslt Dönüştürme Operasyonunda Yapılabilecek Bazı İşlemlerSıralama işlemleri uygulatabilmek (Sorting).Filtreleme işlemleri.Koşullu ayrıştırmalar (if ve choose kullanımı).Parametre kullanımı sayesinde farklı dönüştürme işlemlerinin sağlanabilmesi.Xslt dökümanı içerisinde harici kullanıcı tanımlı fonksiyonları çağırabilmek.Xslt dökümanı içerisinde script çalıştırabilmek.Xslt’ nin yukarıda sayılanlar haricinde de sahip olduğu pek çok yetenek vardır elbette. Ancak bunlar makalemizin konusunu şu an için aşmaktadır. Biz bu makalemizde temel olarak Xslt’ yi tanıyacak ve .Net Framework 2.0 içinde etkin bir şekilde nasıl kullanabileceğimizi görmeye çalışacağız. İlk olarak aşağıdaki örnek xml dökümanını ele alalım. Kod: <?xml version="1.0" encoding="utf-8" ?>
<Muzikler>
<Muzik ID="1">
<Soyleyen>Coldplay</Soyleyen>
<AlbumAdi>X and Y</AlbumAdi>
<CikisTarihi>2005</CikisTarihi>
<Fiyat>28</Fiyat>
<Tip>CD</Tip>
</Muzik>
<Muzik ID="2">
<Soyleyen>Depeche Mode</Soyleyen>
<AlbumAdi>Playing The Angel</AlbumAdi>
<CikisTarihi>2005</CikisTarihi>
<Fiyat>25</Fiyat>
<Tip>CD</Tip>
</Muzik>
.
.
.
<Muzikler>
![]() Gördüğünüz gibi bu Xml içeriği her ne kadar bir geliştirici (developer) için anlamlıda olsa, son kullanıcı için aynı şeyi söylemek pek doğru olmayacaktır. Bu içeriği örneğin bir Html çıktısı haline getirebiliriz. Böylece son kullanıcı için daha okunabilir bir yapı sağlamış oluruz. Xslt kendi içerisinde Html takılarına izin verdiği için üretilecek çıktının görsel formatını istediğimiz gibi ayarlayabiliriz. Aşağıdaki örnek Xslt içeriği bu amaçla yazılmıştır. XstlForHtml.xsl dökümanı içeriği; Kod: <?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>Müzik Dükkanım</h1>
<table border="1" borderColor="Black" cellpadding="0" cellspacing="0">
<tr bgcolor="#FFCC66">
<th>ID</th>
<th>Söyleyen</th>
<th>Albüm Adı</th>
<th>Çıkış Tarihi</th>
<th>Satış Fiyatı</th>
<th>Cd/Dvd/Kaset</th>
</tr>
<xsl:for-each select="Muzikler/Muzik">
<tr>
<td>
<xsl:value-of select="@ID"/>
</td>
<td>
<font size="2" color="Blue">
<xsl:value-of select="Soyleyen"/>
</font>
</td>
<td>
<b>
<xsl:value-of select="AlbumAdi"/>
</b>
</td>
<td align="right">
<xsl:value-of select="CikisTarihi"/>
</td>
<td>
<b>
<xsl:value-of select="Fiyat * 1.5"/> Ytl
</b>
</td>
<td>
<xsl:value-of select="Tip"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Xslt dökümanımızda yer alan bir diğer önemli eleman (element) <xsl:for-each select="Muzikler/Muzik"> boğumunda geçen for-each ’ tir. for-each elemanı sayesinde select niteliğinde (attribute) belirtilen küme üzerinde ileri yönlü hareket edebiliriz. Dikkat ederseniz select niteliğinin değeri Muzikler/Muzik olarak belirlenmiştir. Bu da tipik bir XPath ifadesidir. for-each elemanı programlamada kullandığımız foreach döngüsünden farksızdır. Bu eleman sayesinde Muzikler isimli ana boğum (root node) içerisindeki tüm Muzik alt boğumlarını (child nodes) dolaşacak bir ifade elde etmiş oluruz. Dikkat ederseniz Xslt dökümanı içerisinde yer yer Html takıları geçmektedir. Eğer Html’ e aşina iseniz, burada bir tablo oluşturulduğunu, başlıklarının, arka plan renginin vb. belirlendiğini görebilirsiniz. Peki ilgili Html tablosunun satırlarında (TR) yer alan sütunlar (TD) içerisine gelecek olan değerleri bir Xml dökümanı içerisinden nasıl almaktayız? Yani Xml içeriğindeki hangi alanların nereye geleceğini nasıl belirtebiliriz? Bunun için Xslt’ nin value-of elemanından yararlanmaktayız. Örneğin, <xsl:value-of select="Tip"/> boğumu, Xslt dökümanının uygulandığı Xml içeriğinde yer alan Muzikler/Muzik boğumu(node) altındaki Tip isimli alt boğumun (child nodes) içeriğini bulunduğu yere yazdıracak işlevselliği sağlamaktadır. Gelelim yazmış olduğumuz bu Xslt dökümanının ilgili Xml içeriğine nasıl uygulanacağına. Bunun için xml dökümanımızın başına xsl-stylesheet işlemci direktifini (processing directive) uygulamamız gerekmektedir |