15 Ekim 2015 Perşembe

XSLT

Giriş
XSLT'yi şimdiye kadar sadece XML dosyasını HTML'e dönüştürmek için kullandım. Dönüşme işlemini sadece Internet Explorer tarayıcısı gösteriyor. XSLT çok fazla kullanılmadığı için ölü bir teknoloji olarak niteleniyor.

XML Dosyasına
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="my.xsl"?>

satırını ekleyin

XSLT İle HTML Tablo Yaratma İskeleti
Tablo yapmak için yazılan XSLT kabaca şöyledir. Mantık olarak match=/ ile XML'deki kök düğümden başlarız. "for-each select" veya "value-of select" ile ismini bildiğimiz diğer düğümlere erişir ve tablonun satırlarını oluştururuz.

<xsl:template match="/">
   ....Tabloyu yarat
  <xsl:for-each select="Messages/Message">
    ....Tablonun satırlarını oluştur
  </xsl:for-each>
</xsl:template>

Tam çalışan bir başka örnek burada. Örneğin tablo oluşturmaya başlama kısmı yine aynı
<xsl:template match="/">
  <html>
    <head>
      <meta lang="en" />
      <meta name="description" content="Personal Resume and Portfolio" />
      <title><xsl:value-of select="r:name/@shortForm"/> Website</title>
    </head>
    <body>
      <xsl:apply-templates select="r:resume"/>
    </body>
  </html>
</xsl:template>


Tablo Çeşitleri
İki çeşit tablo oluşturulabilir. İlkinde XML kayıdının alt tag'lerinin değerleri tablonun sütunlarını doldurur. Diğerinde ise XML kaydının attribute'ları tablonun satırlarını oluşturur.


Örnek XSLT Dosyası
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>

    <xsl:template match="/">
      <html>
      <head>

           <style type="text/css">
               td:nth-child(odd){
                    background-color:#d9edf;
               }
           </style>

      <head>
      <body>
            <table border="1">
                <xsl:for-each select="/DetayCollection">
                    <tr>
                    <td><xsl:value-of select="AboneDetay/AboneId" /></td>
                    <td><xsl:value-of select="AboneDetay/HizmetNo" /></td>
                   </tr>
               </xsl:for-each>
            </table>
      </body>
      </html>
    </xsl:template>

</xsl:stylesheet>

satırlarını ekleyin.

<xsl:template>
İsmi verilen XML tag'ine rastlayınca çalıştırılması istenen işi tanımlar. Örnek:
<xsl:template name="power">
</xsl:template>

<xsl-for-each>
Tag'in tüm attribute'larını almak için

<xsl-for-each select="@*">
  <xsl:value-of select="name()"/> <xsl:value-of select="."/>
</xsl-for-each>

Belli bir tag'in değerini almak için
<xsl:value-of select="AboneDetay/AboneId"/>

Hiç yorum yok:

Yorum Gönder