XML RSS XSL


XSL'e Kısa Bir Giriş

Etiketler :
xml, xsl, xslt

Okunma Sayısı : 118  Yayınlanma Tarihi : 31.03.2008  Yayınlayan : Akın Bostancı

Puanla
Bu Makaleye 0 kişi puan vermiştir. Ortalama Puan: 0

Özet :
XSL (Extensible Style Language) bir XML document'in başka biçimlere dönüştürmeye yarayan dildir.

XSL Nedir?
XSL (Extensible Style Language) bir XML document'in başka biçimlere dönüştürmeye yarayan dildir. XML document'i başka bir XML'e, Text'e veya HTML dönüştürülebilir. XSL'in kendisi XML'de yazılmıştır. Başka bir deyişle XSL, XML formatında yazılmış element ve attribute'lerden oluşur.

XLS 'declarative' bir dildir, 'imperative' değildir. Imperative diller (örneğin Java) yazarın neler yapılacağını emir kipinde söylediği dillerdir. "Bunu yap, sonra şunu yap sonra da şunu yap" şeklinde bir yapsı vardır. Oysa declarative dillerde sadece durumu 'deklare' edilir. Sonra bu deklarasyonları değerlendirip işleyecek bir program çalıştırılır. Yani yazar sadece 'durmu budur, şudur ve odur' şeklinde durumu arzeder. İşi yapmak o deklarasyonları değerlendirecek programa kalır. XSL declarative'dir. Bunun anlamı geliştirici ne yapılacağını söyleyemez. Sadece hangi durumda ne gibi şeyler yapılacağını belirler. Aktif değil pasiftir. Örneğin sınav belirten bir XML document'ini XSL'le HTML'e çevirmeye çalışalım. XSL yazarı 'şuraya soruları koy demez. 'Soru' element'iyle karşılaşınca şunu koy, şu şablona (template'e) uygun olarak çıktı üret diyebilir. XML transformer, tek tek XMLelementleriyle karşılaştıkla XSL'de ki şablonları 'uygular' (apply eder).

XSL Template'leri
Exam document'inde 'question' adlı elementin nasıl biçimlendirileceğini belirtmek için

<xsl:template match="question">
        <h4> Soru </h4>
</xsl:template>

şeklinde bir ifade yazılır. Burada söylenen "'question'a rastlayınca şunları(h4 vs.) koy"dur. XML transformer ne zamana soruyla karşılarsa bu belirttiğimiz şablona göre çıktı üretir.

Bir XMLdocument'i elementlerden oluştuğuna göre template'ler, bütün document'i biçimlemek için yeterlidir. Template'lerde match attributesine elementin konumunu belirten XPath ifadesi yazılır. Burada '/exam' exam elementini belitren bir XPath ifadesidir. Eğer bir template'in match attribute'si '/' ile başlıyorsa mutlak adreslenmiş olur. 'question/text' de bir XPath ifadesidir anca mutlak değil görelidir. Yani belgenin en tepesine göre değil içinde bulunduğu elemennt'e göredtanımlanmıştır. Blegenin kendisi de element olarak düşünülebilir ve kök anlamında '/' işaretiyle belirtilir. 
 

<xsl:template match="/exam">
       <h3>Sınav</h3>
<xsl:apply-templates select="question"/>
       </xsl:template>
<xsl:template match="question">
       <h4> Soru </h4>
</xsl:template>

 Bütün belge ve sorular iki template'le belirtilmiş olur. Elbette 'exam' için yazılan template 'apply-templates' ile 'question' için yazılan template'i çağırmış olur.

XSL Node Değerleri
Sonuç olarak üretilen belgede XML içerisinden herhangi bir veriyi göstermek için xsl:value-of kullanılır. Bu etiket bir XML düğümünün (element, text veya attribute) içeriğini belli bir konuma yerleştirir. Örneğin

<xsl:value-of select="@number"/>

ifadesi bir attibutenin değierini koyarken

<xsl:value-of select="text"/>

ifadesi bir element'in içerisindeki metni koyar. XSL'de value-of element'ine select ifadesiyle belli bir elementin XPath ifadesi verilir. XPath relative veya mutlak olabilir. XPath'te '.' ifadesi içerisinde bulunulan element demektir.

Akış Kontrolü
XSL'de programlama dillerindekine benzer akış kontolü etiketleri vardır: for döngüsü if-else benzeri yapılar bulunur. Örnek olarak 
 

<xsl:for-each select="option">
        <br/><b> <xsl:value-of select="@id"/> </b> 
        <xsl:value-of select="."/>
</xsl:for-each>

 gibi bir parça verilebilir.Bu ifade "her 'option' elementi için döngünün içindekileri koy" demektir.

XML RSS XSL Kategorisinden Son Makaleler

Makale ile ilgili Yorumlar

Bu makale hakkında henüz yorum yapılmamıştır...


Güvenlik Kodunuz

Yorum ekleyebilmeniz için üye olmanız gerekmektedir.
Üye iseniz üye girişi yapınız.. Üye değilseniz, üye olmak için tıklayınız