スタイルシート変換言語 XSLT

<xsl:for-each>の解説です。  スタイルシート変換言語 XSLTリファレンス 

<xsl:for-each>

<xsl:for-each
select="node-set-expression">
・・・
</xsl:for-each>
xsl:for-eachは、select属性に指定した複数のノードに対し、 処理を繰り返します。xsl:sortを使用して処理を行う順番を変更したり、 再起処理という方法を用いて決まった回数だけ繰り返すように 指定する事も可能です。
しかし、以下のサンプルにあるような繰り返し処理ならば、xsl:for-each要素を使用せず、 xsl:apply-templatesを使用する事で、xsl:for-eachで行った処理と同じように 要素の出現順に処理を適用させる事ができます。
zipファイル 以下のサンプルをダウンロード(ZIP圧縮)
■ aaa.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="bbb.xsl"?>

<data>
<site>
<name>XSL Transformations (XSLT)</name>
<uri>http://www.w3.org/TR/1999/REC-xslt-19991116</uri>
<des>W3CのXSLT仕様書の原文です。W3CはWWW技術の標準化の推進のために、この技術
に関連の深い企業や個人・大学・研究所等により1994年の10月に発足した団体です。</des>
</site>

<site>
<name>伸び縮みマークアップ言語 XML</name>
<uri>http://ykr414.com/xml/</uri>
<des>文書中の文字列に意味付けができる柔軟性のある言語構造を持っており、プ
ログラムで自在にXMLデータを情報処理できるというメリットもあるXMLの基礎を
、文書を作成しながら解説しています。</des>
</site>

<site>
<name>スタイルシート変換言語 XSLT</name>
<uri>http://denkaseihin.com/</uri>
<des>XML文書を別の形式に変換する為の、ルールを記述する簡易言語「XSLT」の要素別リファ
レンスです。XSLTを使用することで、XML文書のデータを様々なデータ形式に
変換する事が可能です。</des>
</site>
</data>
■ bbb.xsl
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="data">
 <html>
 <head>
 <link rel="stylesheet" href="ccc.css" type="text/css" />
 </head>
 <body>
  <table border="0">
  <tr>
  <th width="180">サイト名</th>
  <th>解説</th>
  </tr>
  <xsl:for-each select="site">
   <tr>
   <td>
    <xsl:element name="a">
    <xsl:attribute name="href">
    <xsl:value-of select="uri" />
    </xsl:attribute>
    <xsl:value-of select="name" />
    </xsl:element>
   </td>
   <td><xsl:value-of select="des" /></td>
   </tr>
  </xsl:for-each>
  </table>
 </body>
 </html>
</xsl:template>

</xsl:stylesheet>
■ ccc.css
table {width:500px}
th {background-color:#9999ff;padding:3px}
td {padding:5px;line-height:150%;border-width:0px 0px 1px 0px;border-style:dashed}
サンプル
XSLT要素一覧
+ <xsl:apply-imports>
+ <xsl:apply-templates>
+ <xsl:attribute>
+ <xsl:attribute-set>
+ <xsl:call-template>
+ <xsl:comment>
+ <xsl:copy>
+ <xsl:copy-of>
+ <xsl:decimal-format>
+ <xsl:element>
+ <xsl:fallback>
+ <xsl:for-each>
+ <xsl:if>
+ <xsl:import>
+ <xsl:include>
+ <xsl:key>
+ <xsl:message>
+ <xsl:namespace-alias>
+ <xsl:number>
+ <xsl:otherwise>
+ <xsl:output>
+ <xsl:param>
+ <xsl:preserve-space>
+ <xsl:processing-instruction>
+ <xsl:sort>
+ <xsl:strip-space>
+ <xsl:stylesheet>
+ <xsl:template>
+ <xsl:text>
+ <xsl:value-of>
+ <xsl:variable>
+ <xsl:when>
+ <xsl:with-param>