<xsl:apply-templates>のソート処理

・ソート処理は繰り返し処理、即ち<xsl:for-each>と<xsl:apply-templates>にだけ指定できる。
・このサンプルでは、order-by="-ken/@gp;-ken;number(ken/@nu)"
地方名で降順ソートし、同じ場合さらに県名で降順ソートする。県名も同じ場合はさらに数値で昇順ソートする。

[サンプルXML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="sort03.xsl"?>
<start>
  <top>ソート処理_no3</top>
  <contents>
    <city><name>倉吉市</name><ken gp="中国" nu="001">鳥取県</ken></city>
    <city><name>高槻市</name><ken gp="近畿" nu="259">大阪府</ken></city>
    <city><name>姫路市</name><ken gp="近畿" nu="983">兵庫県</ken></city>
    <city><name>倉敷市</name><ken gp="中国" nu="333">岡山県</ken></city>
    <city><name>鳥取市</name><ken gp="中国" nu="390">鳥取県</ken></city>
    <city><name>神戸市</name><ken gp="近畿" nu="174">兵庫県</ken></city>
    <city><name>宗像市</name><ken gp="九州" nu="990">福岡県</ken></city>
    <city><name>摂津市</name><ken gp="近畿" nu="846">大阪府</ken></city>
    <city><name>下関市</name><ken gp="中国" nu="001">山口県</ken></city>
    <city><name>宝塚市</name><ken gp="近畿" nu="105">兵庫県</ken></city>
    <city><name>堺  市</name><ken gp="近畿" nu="548">大阪府</ken></city>
    <city><name>熊本市</name><ken gp="九州" nu="361">熊本県</ken></city>
    <city><name>津山市</name><ken gp="中国" nu="772">岡山県</ken></city>
    <city><name>米子市</name><ken gp="中国" nu="285">鳥取県</ken></city>
    <city><name>松原市</name><ken gp="近畿" nu="283">大阪府</ken></city>
    <city><name>福岡市</name><ken gp="九州" nu="652">福岡県</ken></city>
    <city><name>長門市</name><ken gp="中国" nu="662">山口県</ken></city>
    <city><name>西宮市</name><ken gp="近畿" nu="190">兵庫県</ken></city>
    <city><name>境港市</name><ken gp="中国" nu="669">鳥取県</ken></city>
    <city><name>小倉市</name><ken gp="九州" nu="147">福岡県</ken></city>
  </contents>
  <end>以上です(01/4/10)</end>
</start>

XSLソース

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <center><H3><xsl:value-of select="start/top"/></H3></center>
    <xsl:apply-templates select="start/contents/city" 
		order-by="-ken/@gp;-ken;number(ken/@nu)" />
  </xsl:template>
  
  <xsl:template match="city">
	<span style="color:navy"><xsl:value-of select="name" /></span>
    <span style="color:red"><xsl:value-of select="ken" /></span>
    <span style="color:blue"><xsl:value-of select="ken/@nu" /></span><BR />
  </xsl:template>
</xsl:stylesheet>

end(01/4/10)