・ソート処理は繰り返し処理、即ち<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)