| XSL Dönüşümleri (XSLT) Sürüm 1.0 | ||
|---|---|---|
| Önceki | Yukarı | Sonraki |
9.1 xsl:if ile Koşullu İşlem
9.2 xsl:choose ile Koşullu İşlem
XSLT'de bir örneklenim içinde koşullu işlemi destekleyen iki yönerge vardır: xsl:if ve xsl:choose. xsl:if yönergesi basit if-then koşullu işlemi içindir; xsl:choose yönergesi ise çeşitli olasılıklardan birinin seçilebilmesini sağlar.
<!-- Grubu: yönerge --> <xsl:if test = mantıksal-ifade > <!-- İçeriği: örneklenim --> </xsl:if> | eleman |
xsl:if elemanı ifade belirtmekte kullanılan bir test özniteliğine sahiptir. İfade değerlendirildikten sonra elde edilen sonuç boolean işlevinin yaptığı gibi bir mantıksal değere dönüştürülür. Eğer sonuç doğruysa, elemanının içeriğindeki örneklenim nesnelleştirilir; aksi takdirde, hiçbir şey yapılmaz. Aşağıdaki örnekte, bir isim grubundaki isimler bir virgül ayraçlı liste haline getirilmektedir:
<xsl:template match="isimlistesi/isim"> <xsl:apply-templates/> <xsl:if test="not(position()=last())">, </xsl:if> </xsl:template>
Bu örnekte bir tablonun satırları birer atlayarak sarıya boyanmaktadır:
<xsl:template match="item">
<tr>
<xsl:if test="position() mod 2 = 0">
<xsl:attribute name="bgcolor">yellow</xsl:attribute>
</xsl:if>
<xsl:apply-templates/>
</tr>
</xsl:template><!-- Grubu: yönerge --> <xsl:choose> <!-- İçeriği: (<xsl:when>+ | <xsl:otherwise>?) --> </xsl:choose> | eleman |
<xsl:when test = mantıksal-ifade > <!-- İçeriği: örneklenim --> </xsl:when> | eleman |
<xsl:otherwise> <!-- İçeriği: örneklenim --> </xsl:otherwise> | eleman |
xsl:choose elemanı bir miktar olasılık arasından uygun olanını seçer. Bir veya daha fazla sayıda xsl:when elemanı ile varlığı isteği bağlı olan xsl:otherwise elemanını içerebilir. Her xsl:when elemanının bir ifade belirtmekte kullanılan tek bir test özniteliği vardır. xsl:when ve xsl:otherwise elemanlarının içerikleri birer örneklenimdir. Bir xsl:choose elemanı işleme sokulduğunda, xsl:when elemanlarının içerdiği ifadeler sırayla değerlendirilip elde edilen sonuçlar boolean işlevinin yaptığı gibi birer mantıksal değere dönüştürülerek denenir. xsl:when elemanlarından doğru sonucu veren ilkinin içeriği nesnelleştirilir, diğerlerine bakılmaz. Eğer hiçbir xsl:when elemanı doğru sonuç vermemişse, xsl:otherwise elemanının içeriği nesnelleştirilir. Eğer hiçbir xsl:when elemanı doğru sonuç vermemişse ve xsl:otherwise elemanı da yoksa hiçbir nesnelleştirme yapılmaz.
Aşağıdaki örnekte, alt listeleri de olan sıralı bir listenin üyeleri, alt liste derinliğine bağlı olarak arap rakamları, harfler ve yunan rakamları kullanılarak numaralanmaktadır:
<xsl:template match="orderedlist/listitem">
<fo:list-item indent-start='2pi'>
<fo:list-item-label>
<xsl:variable name="level"
select="count(ancestor::orderedlist) mod 3"/>
<xsl:choose>
<xsl:when test='$level=1'>
<xsl:number format="i"/>
</xsl:when>
<xsl:when test='$level=2'>
<xsl:number format="a"/>
</xsl:when>
<xsl:otherwise>
<xsl:number format="1"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>. </xsl:text>
</fo:list-item-label>
<fo:list-item-body>
<xsl:apply-templates/>
</fo:list-item-body>
</fo:list-item>
</xsl:template>| Önceki | Yukarı | Sonraki |
| Yineleme | Bir Linux Kitaplığı Sayfası | Sıralama |