| XSL Dönüşümleri (XSLT) Sürüm 1.0 | ||
|---|---|---|
| Önceki | Yukarı | Sonraki |
<xsl:sort | eleman |
Sıralama, bir xsl:apply-templates veya xsl:for-each elemanının çocukları olarak xsl:sort elemanları kullanılarak belirtilir. İlk xsl:sort birincil sıralama anahtarını, ikincisi ikincil olanını belirtir ve bu böyle çoğaltılabilir. Bir xsl:apply-templates veya xsl:for-each elemanının çocukları olarak bir veya daha fazla sayıda xsl:sort elemanı olduğu takdirde, seçilen düğümler belgedeki sıralarına göre değil, sıralama anahtarları ile belirtilen sıraya göre işlenirler. xsl:sort elemanları xsl:for-each elemanında kullanıldıklarında, ilk çocuklar olmalıdırlar. Bir örneklenimin xsl:apply-templates veya xsl:for-each elemanı tarafından nesnelleştirilmesi halinde, geçerli düğüm listesinin düğümleri xsl:sort elemanları tarafından belirtilen sıraya göre sıralanırlar.
xsl:sort elemanının bir ifade belirtmekte kullanılan bir select özniteliği vardır. İşlenen her düğüm için, düğüm geçerli düğüm kabul edilerek ve işlenen bütün düğümler için, belgedeki sırasıyla bu düğümlerin tamamı geçerli düğüm listesi kabul edilerek ifade değerlendirilir. Elde edilen nesne string işlevinin yaptığı gibi bir dizgeye dönüştürülür; bu dizge düğüm için sıralama anahtarı olarak kullanılır. select özniteliğini öntanımlı değeri . olup, sıralama anahtarı olarak geçerli düğümün dizgesel değerinin kullanılmasına sebep olur.
Bu dizge düğüm için bir sıralama anahtarı işlevini görür. Aşağıdaki isteğe bağlı öznitelikler xsl:sort üzerinde sıralama anahtarları listesinin nasıl sıralanacağını denetlerler; bu özniteliklerin değerleri birer öznitelik değeri örneklenimi olarak yorumlanır.
order özniteliği dizgelerin artan sırada mı yaksa azalan sırada mı sıralanacaklarını belirtir; ascending değeri sıralamanın artan sırada olacağını belirtirken, descending azalan sıralamada olacağını belirtir. ascending değeri öntanımlı değerdir.
lang özniteliği sıralama anahtarları için dil belirtir; değeri [XML] xml:lang değerlerinden biri olmalıdır; lang özniteliği kullanılmamışsa, geçerli dil sistem ortamından elde edilmelidir.
data-type özniteliği dizgelerin veri türünü belirtir; şu değerlere izin verilir:
text değeri, sıralama anahtarlarının lang tarafından belirtilen dil için kültürel olarak doğru sözlük sırasında olacağını belirtir.
number değeri, sıralama anahtarları sayıya dönüştürüldükten sonra sıralamanın sayısal değerlerine göre olacağını belirtir; her sıralama anahtarı number işlevinin yaptığı gibi birer sayıya dönüştürülür; lang özniteliği yoksayılır; bir NaN değeri artan sırada sayılardan önceye, azalan sırada sayılardan sonraya yerleştirilir.
Bir önekle birlikte bir NitelAd, Nitelikli Adlar bölümünde açıklandığı gibi bir genişletilmiş isme genişletilir; genişletilmiş isim veri türünü belirtir; bu durumda davranışın ne olacağı bu belgede belirtilmemiştir.
Öntanımlı değer text'tir.
case-order özniteliği upper-first veya lower-first değerine sahip olabilir; data-type="text" ve artan sıra belirtildiğinde, büyük harflerin mi yoksa küçük harflerin mi önce geleceğini belirtirler. Örneğin, lang="en" için case-order="upper-first" olduğunda sıralama A a B b, case-order="lower-first" olduğunda ise a A b B şeklinde olur. Azalan sıra için herşey tersine olur. Örneğin, lang="en" için case-order="upper-first" olduğunda sıralama b B a A, case-order="lower-first" olduğunda ise B b A a şeklinde olur. Öntanımlı değer dile bağlıdır.
Sıralama kararlı olmalıdır: sıralı düğüm listesinde sıralama anahtarı belirtilmiş her alt listenin üyelerinin belgedeki sıraya göre eş sırada ele alınmaları gerekir.
Örneğin, şu biçimde düzenlenmiş bir çalışanlar veritabanımız olsun:
<çalışanlar>
<çalışan>
<isim>
<önadı>James</önadı>
<soyadı>Clark</soyadı>
</isim>
...
</çalışan>
</çalışanlar>
İsme göre sıralı çalışanlar listesini üretecek kod şöyle olurdu:
<xsl:template match="çalışanlar">
<ul>
<xsl:apply-templates select="çalışan">
<xsl:sort select="isim/soyadı"/>
<xsl:sort select="isim/önadı"/>
</xsl:apply-templates>
</ul>
</xsl:template>
<xsl:template match="çalışan">
<li>
<xsl:value-of select="isim/önadı"/>
<xsl:text> </xsl:text>
<xsl:value-of select="isim/soyadı"/>
</li>
</xsl:template>| Önceki | Yukarı | Sonraki |
| Koşullu İşlem | Bir Linux Kitaplığı Sayfası | Değişkenler ve Değergeçler |