ASP.NET – XML Dosyadan XSLT ile HTML Oluşturma


Daha önceden yazmayı düşündüğüm ama unuttuğum bir konuydu. Bu konuyla ilgili bir yazı yada görsel bir ders de yayınlamayı düşünüyorum. Ama öncesinde biraz heyecanlandıracak bir şekilde olayı anlatmak istiyorum.

Bazen elimizdeki bir XML içeriğin web ortamında ekrana istediğimiz bir HTML şablon içinde listelenmesini isteyebiliriz. Bunu yapmanın birçok yolu var. Ama benim anlatmaya çalıştığım bunu XSLT dosya yardımı ile, C# kodu yazmadan gerçekleştirmek.

Fazla uzatmadan hemen başlıyoruz..

Bir ASP.NET projesi açıyoruz.

TestXmlFile.xml isimli bir XML dosya ekliyoruz.

Örneğin elimizde aşağıdaki gibi bir XML dosya olsun;

 

kmb-udemy-reklam

<?xml version=1.0encoding=utf-8 ?>

<?xml-stylesheet type=”text/xsl” href=”TestXsltFile.xslt”?>

<siniflar>

    <sinif sinifadi=s1>

        <ders derskodu=d1>

            <dersadi>Matematik</dersadi>

            <konular>

                <konu konukodu=k1>

                    <konuadi>Sayılar</konuadi>

                </konu>

                <konu konukodu=k2>

                    <konuadi>Trigonometri</konuadi>

                </konu>

                <konu konukodu=k3>

                    <konuadi>Logaritma</konuadi>

                </konu>

            </konular>

        </ders>

        <ders derskodu=d2>

            <dersadi>Kimya</dersadi>

            <konular>

                <konu konukodu=k4>

                    <konuadi>Asal Gazlar</konuadi>

                </konu>

                <konu konukodu=k5>

                    <konuadi>Fazlar</konuadi>

                </konu>

                <konu konukodu=k6>

                    <konuadi>Titrasyon</konuadi>

                </konu>

            </konular>

        </ders>

    </sinif>

</siniflar>

 

Burada XSLT dosyamıza bir bağlantı dikkatinizi çekmiştir. Sarı ile çizili satırda belirtildiği dosya isminde bir XSLT dosyası oluşturalım.
TestXsltFile.xslt isimli XSLT dosyası ekliyoruz.
İçerisinde de şu kodu yazalım;

<?xml version=1.0encoding=utf-8?>

<xsl:stylesheet version=1.0xmlns:xsl=http://www.w3.org/1999/XSL/Transform

    xmlns:msxsl=urn:schemas-microsoft-com:xsltexclude-result-prefixes=msxsl>

    <xsl:output method=htmlindent=yes/>

    <xsl:template match=/>

        <html>

            <head>

                <title>Sample -1- Xml And Xslt</title>

            </head>

            <body>

                <table border=1>

                    <xsl:for-each select=siniflar/sinif>

                        <tr>

                            <td>

                                <xsl:value-of select=@sinifadi/>

                            </td>

                            <td></td>

                            <td></td>

                            <td></td>

                            <td></td>

                        </tr>

                        <xsl:for-each select=ders>

                            <tr>

                                <td></td>

                                <td>

                                    <xsl:value-of select=@derskodu/>

                                </td>

                                <td>

                                    <xsl:value-of select=dersadi/>

                                </td>

                                <td></td>

                                <td></td>

                            </tr>

                            <xsl:for-each select=konular/konu>

                                <tr>

                                    <td></td>

                                    <td></td>

                                    <td></td>

                                    <td>

                                        <xsl:value-of select=@konukodu/>

                                    </td>

                                    <td>

                                        <xsl:value-of select=konuadi/>

                                    </td>

                                </tr>

                            </xsl:for-each>

                        </xsl:for-each>

                    </xsl:for-each>

                </table>

            </body>

        </html>

    </xsl:template>

</xsl:stylesheet>

 

 

XSLT kodlarına dikkat edilirse;
İlk olarak bir HTML sayfa template ‘i oluşturuluyor. “match” özelliğine “/” veriliyor. Böylece arasındaki kod “siniflar” elementi için çalışıyor. (Yani Root Tag için) Sonrasında XML dosyamızın hiyerarşik yapısına göre “xsl:for-each” ifadesi ile elementlerin hepsi için dönülerek HTML tablomuz oluşturuluyor.
ASP.NET projemizin “Default.aspx” sayfasında, XML dosyamıza yönlendirme yapacağız ve böylece XML dosyamız, kendisine bağladığımız XSLT’yi kullanarak HTML tabloyu oluşturacaktır. “Default.aspx” sayfamızın “Page_Load” olayına şu satırı yazmamız gerekiyor.
Response.Redirect(@”TestXmlFile.xml”);
Ekranımıza şöyle bir HTML tablo gelecektir.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

w

Connecting to %s