XSLT KULLANIMI
Html için css ne ise xml için de xslt odur. Ancak xsltye ilaveten bildiğimiz css i de xml üzerinde kullanabiliriz. Peki o zaman neden cssdeğil de xslt’yi kullanırız. Demek ki xslt bize css’e göre bazı avantajlar sunmaktadır. XSLT kullanarak verilere style verirken belli başlı verileri filtreleme veya sıralama şansımız var.
<kitaplar>
<kitap>
<isbn>1111</isbn>
<ad>HTML ve XHTML</ad>
<yazar>yazar1</yazar>
<basim_tarihi>AAA</basim_tarihi>
<sayfa>340</sayfa>
<fiyat>24</fiyat>
</kitap>
<kitap>
<isbn>2222</isbn>
<ad>Javascript</ad>
<yazar>yazar2</yazar>
<basim_tarihi>2010</basim_tarihi>
<sayfa>450</sayfa>
<fiyat>30</fiyat>
</kitap>
<kitap>
<isbn>333</isbn>
<ad>c#</ad>
<yazar>yazar3</yazar>
<basim_tarihi>2012</basim_tarihi>
<sayfa>550</sayfa>
<fiyat>45</fiyat>
</kitap>
</kitaplar>
1. İlk olarak solutionumuza XSLT dosyası ekliyoruz. Aşağıdaki gibi bir dosya içeriğiyle karşılaşacağız.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
2. Aşağıdaki hareket ekleyeceğimiz xsltdeki root elementi seçer.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
</xsl:template>
</xsl:stylesheet>
3. Daha sonra bu aralıkların içerisine html kodu gömeriz html tagleri verilerin sergileneceği yapıyı oluşturmak için kullanlır.
<xsl:template match="/">
<html>
<body>
<h2>Kitaplar</h2>
<table border="1">
<tr>
<th>ISBN</th>
<th>AD</th>
<th>YAZAR</th>
</tr>
<xsl:for-each select="kitaplar/kitap"> //kitaplar taginin altındaki kitap taglerini çek
<tr>
<td><xsl:value-of select="isbn"/></td> //her kitap taginin altındaki isbnyi çek
<td><xsl:value-of select="ad"/></td> //her kitap taginin altındaki ad çek
<td><xsl:value-of select="yazar"/></td> //her kitap taginin altındaki yazar çek
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl : apply-templates select=”*”></xsl:apply-templates> //tüm xsl dosyasına style vermek istediğimizi söyler.
DEĞERE GÖRE VERİ ÇEKİP SERGİLEMEK
verilerin hepsini çekmek yerine içerisindeki text verisine göre de secim yapmak isteyebiliriz. Bunun için
1. Katı koşul kullanmak
<xsl:for-each select=”kitaplar/kitap”> genel dış taginin yerine
<xsl:for-each select=”kitaplar/kitap[yazar=’yazar2′]”> yerleştirmemiz yeterlidir. Bu durumda yukarıdaki tablonun sadece 2. satırını bize verecektir.
<xsl:for-each select=”kitaplar/kitap[ sayfa>350 ]”> kitaplar taginin altındaki kitap taginin sayfa taginin değeri 350den büyük olan verileri göster.
2. İf-else kullanmak
<xsl : if test="sayfa < 380">
<td><xsl:value-of select="isbn"/></td> //her kitap taginin altındaki isbnyi çek
<td><xsl:value-of select="ad"/></td> //her kitap taginin altındaki ad çek
<td><xsl:value-of select="yazar"/></td> //her kitap taginin altındaki yazar çek
<td>UCUZ</td>
</xsl:for-each>
VERİLERİ SIRALAMA
<xsl:for-each select="kitaplar/kitap"> //kitaplar taginin altındaki kitap taglerini çek
<xsl:sort select="ad" /> //ad verisine göre alfabetik olarak sırala.
<tr>
<td><xsl:value-of select="isbn"/></td> //her kitap taginin altındaki isbnyi çek
<td><xsl:value-of select="ad"/></td> //her kitap taginin altındaki ad çek
<td><xsl:value-of select="yazar"/></td> //her kitap taginin altındaki yazar çek
</tr>
</xsl:for-each>