27 Şubat 2014 Perşembe

XSL Kullanımı

Merhaba Webkolog takipçileri!

Bugün, XML verilerini sadece depolamakla kalmayıp, onları farklı formatlara dönüştürme ve görsel olarak şekillendirme yeteneği sunan çok güçlü bir teknoloji olan XSL (Extensible Stylesheet Language) üzerine konuşacağız. XSL, XML'in ham halini alıp, onu web sayfaları için HTML'e, raporlar için PDF'e veya başka bir XML yapısına dönüştürmemizi sağlayan bir araç setidir. Gelin, bu dönüşümün sihrini birlikte keşfedelim!

---

XSL Nedir ve Bölümleri Nelerdir?

XSL, XML dokümanlarını biçimlendirmek ve dönüştürmek için tasarlanmış bir dil ailesidir. Adında "Stil Sayfası" geçse de, CSS'ten çok daha fazlasıdır. XSL aslında üç ana bölümden oluşur:

  1. XSLT (XSL Transformations): Bu, XML dokümanlarını başka XML dokümanlarına veya HTML, metin gibi farklı formatlara dönüştürmek için kullanılır. XSL'in en çok kullanılan ve en güçlü kısmıdır.
  2. XPath (XML Path Language): XSLT'nin olmazsa olmaz bir parçasıdır. XML dokümanı içindeki belirli elementleri veya nitelikleri seçmek (veri çekmek) için kullanılan bir dildir. Tıpkı dosya sistemindeki yollar gibi, XML ağacı içinde gezintiyi sağlar.
  3. XSL-FO (XSL Formatting Objects): XML verilerini biçimlendirme nesnelerine dönüştürerek, genellikle basılı çıktı (PDF gibi) için kullanılacak formatları tanımlar. Bu bölüm, web dünyasında XSLT kadar yaygın değildir.

Bugünkü odak noktamız daha çok XSLT ve XPath üzerinde olacak, çünkü bunlar web tabanlı dönüşümlerde en sık karşılaştığımız bileşenlerdir.

---

XML Dosyasını XSL ile Entegre Etme

Bir XML dosyasının XSL stil sayfasıyla nasıl dönüştürüleceğini belirtmek için, XML dosyasının en başına <?xml-stylesheet?> işleme talimatını ekleriz. Bu, tarayıcıya XML'i doğrudan görüntülemek yerine, belirli bir XSL dosyası kullanarak dönüştürmesi gerektiğini söyler:


<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="dosya.xsl"?> <!-- XSL dosyasını burada bağlıyoruz -->
<insanlar>
	<insan tc="12345678901">
		<ad>Ali</ad>
		<soyad>Mantar</soyad>
		<yas>30</yas>
	</insan>
</insanlar>
---

XSL Dosyasının Temel Yapısı (XSLT)

Bir XSL (XSLT) dosyası, <xsl:stylesheet> veya <xsl:transform> kök elementi ile başlar. İçinde, XML'deki hangi elementlerin nasıl dönüştürüleceğini belirten şablonlar (templates) bulunur.


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <!-- "/" yolu, XML dokümanının kökünü (tamamını) eşleştirir -->
    <xsl:template match="/">
        <html>
            <head>
                <title>İnsan Bilgileri</title>
            </head>
            <body>
                <h4>Webkolog'dan İnsan Listesi</h4>
                <!-- XML'den veri çekme ve HTML'e dönüştürme burada yapılır -->
                <xsl:for-each select="insanlar/insan">
                    <div style="border: 1px solid #ccc; margin-bottom: 10px; padding: 10px; background-color: #f9f9f9;">
                        <h5><xsl:value-of select="ad"/> <xsl:value-of select="soyad"/></h5>
                        <p><b>Yaş:</b> <xsl:value-of select="yas"/></p>
                        <p><b>TC Kimlik:</b> <xsl:value-of select="@tc"/></p>
                    </div>
                </xsl:for-each>
            </body>
        </html>
    </xsl:template>

</xsl:stylesheet>

Yukarıdaki örnekte:

  • <xsl:template match="/">: Bu şablon, XML dokümanının tamamını hedefler. İçindeki HTML yapısı, dönüşüm sonucunda oluşacak HTML sayfasının iskeletidir.
  • xmlns:xsl="http://www.w3.org/1999/XSL/Transform": Bu nitelik, XSLT komutlarının xsl: ön eki ile kullanılacağını belirtir.
---

XPath Kodları: XML İçinde Gezinme ve Veri Çekme

XPath, XSLT'nin en önemli yardımcı dilidir. XML ağacında belirli elementleri veya nitelikleri seçmek için kullanılır. Tıpkı bir dosya yolunda olduğu gibi, XML elementlerinin hiyerarşisini takip ederek istediğimiz veriye ulaşmamızı sağlar.

Veri Çekmek için <xsl:for-each> ve <xsl:value-of>

XML içindeki birden fazla benzer elementi döngüye almak ve değerlerini çekmek için bu yapıyı kullanırız:


<xsl:for-each select="root_adi/element_adi"> <!-- "root_adi/element_adi" XPath ifadesi -->
	<xsl:value-of select="alt_element_adi"/> <!-- Seçilen elementin altındaki değeri çeker -->
</xsl:for-each>

Örnekteki <xsl:for-each select="insanlar/insan">, <insanlar> elementi altındaki her bir <insan> elementi için döngü başlatır. <xsl:value-of select="ad"/> ise o anki <insan> elementinin altındaki <ad> elementinin değerini alır. Niteliği çekmek için @ sembolü kullanılır: <xsl:value-of select="@tc"/>.

Filtreleme

Belirli koşullara uyan elementleri seçmek için filtreleme yapabiliriz. Koşullar, köşeli parantez [] içine yazılır:


<xsl:for-each select="urunler/urun[renk='mavi']"> <!-- Rengi 'mavi' olan ürünleri seç -->
	<xsl:value-of select="urunAdi"/>
</xsl:for-each>
Sıralama (<xsl:sort>)

<xsl:for-each> elementi içinde, verileri belirli bir kritere göre sıralayabiliriz. <xsl:sort> etiketi, <xsl:for-each> etiketinden hemen sonra kullanılmalıdır:


<xsl:for-each select="insanlar/insan">
	<xsl:sort select="yas" data-type="number" order="descending"/> <!-- Yaşa göre azalan sıralama -->
	<xsl:value-of select="ad"/>
</xsl:for-each>
Koşullu İfadeler: <xsl:if> ve <xsl:choose>

Verilere göre farklı çıktılar üretmek için koşullu ifadeler kullanabiliriz:

  • <xsl:if>: Tek bir koşul için:
    
    <xsl:if test="fiyat < 30"> <!-- Fiyat 30'dan küçükse -->
    	<p>Bu ürün indirimde!</p>
    </xsl:if>
            
    XPath operatörleri (=, !=, < (&lt;), > (&gt;), <=, >=) koşullarda kullanılabilir.
  • <xsl:choose>, <xsl:when>, <xsl:otherwise>: Birden fazla koşul için:
    
    <xsl:choose>
    	<xsl:when test="sayfa < 300"> <!-- Sayfa sayısı 300'den küçükse -->
    		<p>Kısa Kitap</p>
    	</xsl:when>
    	<xsl:when test="sayfa < 600"> <!-- Sayfa sayısı 600'den küçükse -->
    		<p>Orta Boy Kitap</p>
    	</xsl:when>
    	<xsl:otherwise> <!-- Diğer tüm durumlar -->
    		<p>Kalın Kitap</p>
    	</xsl:otherwise>
    </xsl:choose>
            
---

XSL'in Tarayıcı Desteği ve Günümüzdeki Yeri

XSLT'nin tarayıcı desteği oldukça iyidir. Firefox 3, Internet Explorer 6, Chrome 1, Opera 9 ve Safari 3 gibi eski sürümlerden itibaren çoğu modern tarayıcı XSLT dönüşümlerini destekler. Bu, sunucu tarafında ek bir işlem yapmadan XML'i doğrudan tarayıcıda dönüştürüp görüntüleyebileceğiniz anlamına gelir.

Günümüzde web geliştirmede XML'in veri taşıma formatı olarak JSON'a yerini bırakmasıyla birlikte, XSLT'nin doğrudan tarayıcıda kullanım sıklığı azalmış olabilir. Ancak, XSLT hala:

  • Kurumsal Sistem Entegrasyonlarında: Farklı veri formatları arasında dönüşüm yapılması gereken karmaşık sistemlerde.
  • Veri Dönüşüm İşlemlerinde: Bir XML yapısından başka bir XML yapısına veya farklı metin tabanlı formatlara geçişlerde.
  • Eski Sistemlerle Çalışırken: Hala XML tabanlı servisler kullanan sistemlerde.

gibi alanlarda hayati bir rol oynamaktadır. XSLT, veriyi biçimlendirme ve dönüştürme konusunda eşsiz bir esneklik ve güç sunar.

Umarım bu makale, XSL'in ne olduğu, XSLT ve XPath'in nasıl kullanıldığı ve XML verilerinizi nasıl farklı formatlara dönüştürebileceğiniz hakkında size kapsamlı bir bakış açısı sunmuştur. Veri dönüşüm yeteneği, her geliştiricinin araç setinde bulunması gereken güçlü bir beceridir!

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder