XSLT Nedir, Nasıl Kullanılır?

XSLT Nedir, Nasıl Kullanılır?

Son zamanlarda e-fatura işlemleriyle ilgili birçok aşamada karşımıza çıkan UBL ve XSLT işlemleride ki fonksiyonlardan bahsetmek istiyorum.
XSLT bilindiği gibi XML için sadece bir biçimlendirme (görsel dizayn) dilidir. Yalnız XSLT’yi diğerlerinden ayıran birçok fonksiyonu mevcuttur. Başlıca bu fonksiyonlardan bahsedecek olursak sırayla:

1- XSLT’de matematiksel işlemler yapabiliriz.
2- Döngüler kurabiliriz (for-each gibi).
3- if-else denetimleri yapabiliriz.
4- Resimleri byte ile gönderebiliriz.
5- CSS, HTML veya JavaScript kullanabiliriz.
6- String formatlama.

Buradan bakıldığında neredeyse bir yazılım dilinde yapabildiğimiz birçok işlemi XSLT ile yapabildiğimizi görebilmişsinizdir.

Şimdi bu konular hakkında örnekler vermek istiyorum.

Örnek XML’imizin yapısı aşağıdaki gibi olsun.
<RootTag>
<AltTag>
<Sayi1>5</Sayi1>
<Sayi2>10</Sayi2>
<Sayi3>15</Sayi3>
<YaziAlani>Burasi not alani.</YaziAlani>
</AltTag>
<AltTag>
<Sayi1>10</Sayi1>
<Sayi2>20</Sayi2>
<Sayi3>30</Sayi3>
<YaziAlani>Burasi not alani.</YaziAlani>
</AltTag>
</RootTag>

1- Matematiksel işlemler

<xsl:value-of select=”format-number(//n1:RootTag/AltTag/Sayi1 + //n1:RootTag/AltTag/Sayi2, ‘###.##0,00’, ‘european’)”/>
gibi bir işlem ilk AltTag’in Sayi1 ve Sayi2’yi toplayarak bize 5+10 = 15 sonucunu verecektir ve sonucu 15,00 olarak gösterecektir.

<xsl:value-of select=”format-number(//n1:RootTag/AltTag/Sayi3 div //n1:RootTag/AltTag/Sayi1, ‘###.##0,00’, ‘european’)”/>
gibi bir işlem ilk AltTag’in içindeki Sayi3’ü Sayi1’e bölerek bize 15/5 = 3 sonucunu verecektir ve sonucu 3,00 olarak gösterecektir.
İşlemler arasinda ki ‘div’ yazısı bölme işlemlerinde kullanılmaktadır. Slash (/) XSLT için joker bir karakter olduğundan çalışmamaktadır.

2- Döngüler (for-each)

<xsl:for-each select=”n1:RootTag/AltTag”>
<xsl:value-of select=”format-number(Sayi1, ‘###.##0,00’, ‘european’)”/><br/>
</xsl:for-each>
gibi bir işlem bize alt alta
5,00
10,00
yazacaktır. Aynı döngü içerisinde matematiksel işlem yaptırarakta işlem yapabilirsiniz.

3- If-Else Denetimleri

<xsl:if test=”//n1:RootTag/AltTag/Sayi1 = ’10′”>
Buraya <xsl:value-of select=”Sayi1″/> geldi.
</xsl:if>
gibi bir işlem bize ‘Buraya 10 geldi’ yazacaktır. Aynı işlemi döngüler içerisinde kullanabilirsiniz. Value-of bize tagın değerini verecektir.

4- Resimleri byte ile Gönderme

<img src=”data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/4SBgRXhpZgAATU0AKgAAAAgADgEAAAMAAAABCcAAAAEBAAMAAAABCWUAAAECAAMAAAAEAAAAtgEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAESAAMAAAABAAEAAA” />
gibi bir tag ile jpeg nesnelerimizin byte hali ile gönderebilir veya gösterebilirsiniz. XSLT standart bir browser üzerinde görüntülendiğinden dolayı browser bunu yorumlayacaktır.

5- CSS, HTML ve JavaScript Kullanımı

CSS taglarımızı XSLT dosyamızın içerisinde yapılandırılan HTML bloklarının yine HEAD tagına yazılmaktadır. Aşağıda ki blok örnek olarak gösterilebilir.

<html>
<head>
<style type=”text/css”>
*{margin:0; padding:0;}
.content {font-family:Arial, Helvetica, sans-serif;}
</style>
</head>
<body>
<div>
<xsl:if test=”//n1:RootTag/AltTag/Sayi1 = ’10′”>
Buraya <xsl:value-of select=”Sayi1″/> geldi.
</xsl:if>
</div>
</body>
</html>

6- String Formatlama

<xsl:value-of select=”format-number(//n1:RootTag/AltTag/Sayi1, ‘###.000,00000’, ‘european’)”/><br/>
gibi bir işlem bize 005,00000 gibi bir rakam gösterecektir.

Eksik veya yanlış bilgi vermemeye dikkat ettim, umarım açıklayıcı olmuştur.
İyi çalışmalar dilerim.

8,921 total views, 4 views today

10 Comments

KdrGny

about 4 sene ago

Merhabalar, Bende bir geliştiriciyim ve şirketimiz için bir e-fatura modülü yapmak istiyorum. elimizdeki mevcut modül bir işimize yaramıyor. nasıl yapacağım konusunda hiçbir fikrim yok c# ile yazmak istiyorum ama yapamadım. bu konuda yol gösterirmisiniz. birde gelen faturalarımı özel entegratörden kendi programımda görüntülemek istiyorum. yardım ederseniz sevinirim.

Cevapla

Gani

about 4 sene ago

Merhabalar, gec cevap verdigim icin kusura bakmayin. Entegratorunuzden entegrasyon ile ilgili dokumanlarinizi aldiniz mi? Entegrator servisinin kullanimi hakkinda bilginiz var mi?

Cevapla

Cihat K

about 3 sene ago

Bunun için database ' de saklı olan E-fatura'nın Xml dökümünü UTF-8 formatınında okuyup XSLT şablonuyla birleştirmeniz gerekiyor , Bu şekilde yapıp ister Html ister Pdf formaında çıktı alabilir siniz

Cevapla

yücel akyıldız

about 2 sene ago

MERHABA, KONU ANLATIMI GÜZEL BENİM ÖGRENMEK İSTEDİĞİM BARKOD KODU SAYI OLARAK DEĞİL BARKOD SİMGELERİ OLARAK EFAURAYA NASIL YAZDIRIRIM.

Cevapla

Gani

about 2 sene ago

Merhabalar, Bunun 2 yontemi olabilir. Fatura dizayninin icine kendiniz resimi base64 ile yine koyabilir veya barkod fontlarini ilgili bilgisayara bir sekilde (css'teki link kullanimi gibi include edilebilir) yukletebilirsen de olabilir. Ama sanirim en saglikli yontemi faturanizin icine barkodlu halinin resminin attach edilmesi olur.

Cevapla

yucel

about 2 sene ago

teşekkür ederim

Cevapla

özgür

about 2 sene ago

Merhaba, for-each döngüsünden toplama nasıl yapılır. Ufak bir örnekle gösterebilir misiniz.

Cevapla

Yıldırım

about 5 ay ago

Merhaba, barkod 'u resim olarak değil de UBL den 13 karakterli ean kodu gelirse bunu XSLT de nasıl Barkoda çevirebiliriz?

Cevapla

Gani

about 5 ay ago

Merhabalar, barkod olaylari tamamen fontla ilgili bir mevzudur. Html'de kullanildigi gibi XSLT icinde bir barkod fontunu referans alip bicimlendirmeyi deneyebilirsiniz. Sanirim ic gorur diye dusunuyorum ama emin degilim.

Cevapla

Yıldırım

about 5 ay ago

Öğrenmek istediğim kodu xslt de nasıl barkoda çevrilebilir. Bir örnek verebilir misiniz.

Cevapla

Leave a Comment

Ulaşım için: Facebook: /ganigani Twitter: @abdulgani_demir


*

%d blogcu bunu beğendi: