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 |