XSL Dönüşümleri (XSLT) Sürüm 1.0
ÖncekiYukarıSonraki

9 Koşullu İşlem

İçindekiler

    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.

9.1 xsl:if ile Koşullu İşlem

<!-- 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>

9.2 xsl:choose ile Koşullu İşlem

<!-- 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>

ÖncekiYukarıSonraki
YinelemeBir Linux Kitaplığı SayfasıSıralama