Arkasokak Logo






Forum Arkasokak > HAYATIN İÇİNDEN > İnternet Teknoloji Tasarım » Asp.Net 2.0 Üzerinde Xslt Kullanımı

Asp.Net 2.0 Üzerinde Xslt Kullanımı

İ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ı ...


Cevap
  #1  
Eski 28-07-2006, 11:34 AM
PaRaDoKs kullanıcısının avatarı
Arkasokaklı
 
Giriş: Oct 2005
Konum: aNkArA
Mesaj: 631
PaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond reputePaRaDoKs has a reputation beyond repute
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>
MuzikDukkanim.xml isimli fiziki dosyada tutulan bu içerikte Muzikler isimli root node (ana boğum) altında Muzik isimli child node’ lar (alt boğumlar) yer almaktadır. Muzik boğumu içerisinde ID isimli bir attribute (nitelik) ve Soyleyen, AlbumAdi, CikisTarihi, Fiyat, Tip isimli alt boğumlar yer almaktadır. Bu dökümanı herhangibir tarayıcı üzerinde açarsak aşağıdakine benzer bir ekran görüntüsü elde ederiz.

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>
Bir Xslt içeriği ilk zamanlarda geliştiricilere korkutucu gelebilir. Ancak adım adım incelendiğinde son derece kolay ve anlaşılırdır. Xslt dökümanları mutlaka stylesheet elemanı ile başlar ve biterler. Bu elemanda Xslt dökümanının standardlarında yer alan isim alanı (namespace) ve versiyon numarası (version number) gibi bilgiler yer alır. Dökümanımızın içeriğinde yer alan en önemli kısımlardan birisi <xsl:template match="/"> boğumudur. Xslt dökümanlarının, kaynak olarak gösterildiği xml dökümanı üzerinde dönüştürme işlemi yapabilmesi için burada bir şablon (template) eşleştirilmesinde bulunması gerekir. Bu eşleştirme işleminde ilgili kümeyi seçebilmek için XPath ifadeleri kullanılır. Dikkat ederseniz template elemanında (element) match değeri / olarak belirlenmiştir. Bu, Xslt’ yi uygulanan Xml dökümanındaki tüm boğumların (nodes) dönüştürme işleminde ele alınacağını belirtir. Dönüştürme işleminin hangi üyelere, nasıl uygulanacağı ve / şablonuna uyan parçaların çıktıda nasıl gözükeceğine dair gerekli format ayarları ise template elemanına ait boğum içerisinde yapılmaktadır.
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
PaRaDoKs kullanıcısına MSN aracılığı ile mesaj yolla
Alıntı Yaparak Cevapla
Cevap

Konu Araçları
Görünüm Modları



Saat 07:26 PM.


Copyright ©2005 - 2008 Arkasokak.Net
Tasarım: NoDRaC
Bize Ulaşın - Gizlilik İlkesi - En Üst
Powered by vBulletin
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0