XML:XSLTのsort:XSLTでHTML出力する際、データをソート(並び替え)する方法
XML (18 items)
2004年09月17日
XSLTでXMLデータをソートする際には、sort要素「xsl:sort」タグを使用する。
<記述例>
<xsl:sort select="." data-type="text" order="ascending" />
※"ascending"・・・昇順、"descending"・・・降順、order属性を省略すると昇順
※data-type="text"・・・文字でソート、data-type="number"・・・数値でソート
「xsl:sort」要素は、
「xsl:for-each」要素、または「xsl:apply-templates」の子要素として使用する。
(「xsl:for-each」、「xsl:apply-templates」タグの間、その直後で使用できる)
また、並べて複数使用ができるので、ソートの重み付け順の指定が可能である。
・XMLデータ(data3.xml)
<?xml version="1.0" encoding="EUC-JP" ?>
<?xml-stylesheet type="text/xsl" href="data3.xsl"?>
<test>
<count>3</count>
<count>5</count>
<count>1</count>
<count>4</count>
<count>2</count>
</test>
・XMLデータを編集するXSLT(data3.xsl)
<?xml version="1.0" encoding="Shift_JIS" ?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml" version="1.0">
<xsl:output
method="html"
version="1.0"
encoding="Shift_JIS"
omit-xml-declaration="yes"
standalone="yes"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
indent="yes"
media-type="text/html"/>
<xsl:template match="/">
<!-- HTML出力部 -->
<html>
<head>
<title>Result</title>
</head>
<body>
<xsl:apply-templates />
<!-- HTML出力部 -->
</body>
</html>
</xsl:template>
<xsl:template match="test">
<xsl:apply-templates select="count">
<!-- データのソート -->
<xsl:sort select="." data-type="number" order="descending" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="count">
RESULT=<xsl:value-of select="." /><br />
</xsl:template>
</xsl:stylesheet>
・生成したHTML
<html>
<head>
<title>Result</title>
</head>
<body>
RESULT=5<br />
RESULT=4<br />
RESULT=3<br />
RESULT=2<br />
RESULT=1<br />
</body>
</html>
■使用例のダウンロード
ダウンロードし、data3.xmlをブラウザで見る事で確認できます。
>>ダウンロード
※XSLTの動くブラウザでお試し下さい。IEであればIE6以上です。