アットウィキロゴ

XSLT

更新日:2010-10-25

XSLTの制御命令


  • 条件付きの処理xsl:if命令
test属性に記述したXPath式によって、結果が真であればそのxsl:if命令内に書かれた
テンプレートを実行します。真でなければ何も実行しません。
if~else~というような、真でない場合に対応するテンプレートの記述はありません。
そのような場合は、xsl:choose命令を使用します。
<xsl:if tst="商品/@新製品='true'"></xls:if>
 
  • 条件分岐の処理xsl:choose命令
xsl:choose命令の子要素としてxsl:when命令を記述します。
xsl:when命令に指定されたtest属性が真となる場合、その
xsl:when命令内のテンプレートを実行します。
複数のxsl:when命令を記述することもでき、その場合には
最初に真となるxsl:when命令内のテンプレートだけが実行
されます。
<xsl:choose>
<xsl:when test="商品/在庫数<10">
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
 
  • 繰り返し処理するxsl:for-each命令
xsl:for-each命令のselect属性にノードセットとなるようなXPathを
指定し、選択されたノードごとにxsl:for-each内のテンプレートを
繰り返し実行します。
<xsl:for-each select="カタログ/商品"></xsl:for-each>
 
  • xsl:apply-templatesとxsl:for-eachの使い分け
xsl:apply-templates命令では、選択されたノードセットに対し
個々にxsl:template要素が適用されるため、xsl:for-each命令
と同じように反復処理を表現することもできます。
<xsl:template match="商品">
<xsl:apply-templates select="商品リスト/商品"/>
</xsl:template>
 
<xsl:template match="商品">
</xsl:template>
 
<xsl:templaate match="商品[単価>500]">
</xsl:template>
 
ノードのコピー


XML文書から別のXML文書へ変換する場合、元のXML文書の一部をそのまま使える
場合があります。このとき、[xsl:copy-of命令]や[xsl:copy命令]を使って
元のXML文書から要素や属性をコピーして出力できます。

  • xsl:copy-of命令

xsl:copy-of命令のselect属性に指定sれたノードとその子孫ノードを一括して
コピーできます。

  • xsl:copy命令

xsl:copy-of命令のように、一括してコピーするのではなく、部分的にコピーしたり、
別の要素を追加したり、細かい単位でコピーする場合にはxsl:copy命令をしようする
ことでカレントノードだけをコピーできます。
最終更新:2010年10月25日 00:17