<xsl:sort>の概要
<xsl:sort>でソートができる。
- 属性
- select:ソートさせたい要素名
- lang:言語(jaなど)
- data-type:データの形式指定 {“text” | “number”}
- order:昇順・降順 {“ascending” | “descending”}
サンプルコード
xml
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="sample.xsl"?> <root> <product> <name>ペン</name> <price>100</price> </product> <product> <name>ホチキス</name> <price>400</price> </product> <product> <name>ケシゴム</name> <price>100</price> </product> </root>
XSLT
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="3.0"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <xsl:for-each select="root/product"> <xsl:sort select="price" lang="ja" data-type="number" order="ascending"/> <xsl:sort select="name" lang="ja" data-type="text" order="decending"/> <商品> <商品名><xsl:value-of select="name" /></商品名> <価格><xsl:value-of select="price" /></価格> </商品> </xsl:for-each> </xsl:template> </xsl:stylesheet>
変換結果
<?xml version="1.0" encoding="UTF-8"?> <商品> <商品名>ケシゴム</商品名> <価格>100</価格> </商品> <商品> <商品名>ペン</商品名> <価格>100</価格> </商品> <商品> <商品名>ホチキス</商品名> <価格>400</価格> </商品>
解説
最初にpriceでソートをして、
その状態を保ちつつ、そのなかでnameをソートしている。
このソートだが日本語に全て対応できるわけではないので、アルファベットや数値でソートすべき。