テンプレート指定:5 <xsl:apply-templates>について

・このサンプルは最初に<xsl:template match="/">があるので、全てのノードがテンプレート指定されている。なので<xsl:apply-templates>指定されたノードしか出力されない。
・(例1)の姉は、マッチする<xsl:template match="姉">があるのでその内容に従い”おい”だけが出力される。
・(例2)の私は、マッチする<xsl:template match="私">が無い。そこで”私”配下の全ノードを順次サーチしマッチする<xsl:template>があるかどうか調べる。あればその内容に従い出力し(”孫1”と"次男")、無い場合はデフォルトテンプレートが適用される。
・(例3)の弟もマッチする<xsl:template match="弟">が無い。配下の”めい”にもマッチする<xsl:template>が無いので全てデフォルトテンプレートが適用される。

[サンプルXML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="temp04.xsl"?>
<家系>
 <叔父>叔父さん
  <従姉妹>叔父さんの娘</従姉妹>
 </叔父>
 <親>お父さんお母さん
  <姉>お姉さん
   <おい>お姉さんの息子</おい>
  </姉>
  <私>おいら
   <長男>長男
    <孫1>長男の娘
     <曾孫>長男の娘の子</曾孫>
    </孫1>
   </長男>
   <長女>長女
    <孫2>長女の息子</孫2>
   </長女>
   <次男>次男</次男>
  </私>
  <弟>弟
   <めい>弟の娘</めい>
  </弟>
  <妹>妹</妹>
 </親>
 <叔母>叔母さん
<従兄弟>叔母さんの息子</従兄弟>
</叔母>
<end>以上です(2003/12/1)</end>
</家系>

XSLソース

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>

<xsl:template match="/">
 <xsl:apply-templates select="家系/親/姉"/> <!--例 1 -->
 <hr/>
 <xsl:apply-templates select="家系/親/私"/> <!--例 2 -->
 <hr/>
 <xsl:apply-templates select="家系/親/弟"/> <!--例 3 -->
</xsl:template>

<xsl:template match="姉">
<xsl:value-of select="おい"/>
</xsl:template>
<xsl:template match="孫1">
<span style="color:red"><xsl:value-of select="曾孫"/></span>
</xsl:template>
<xsl:template match="次男">
★★★
</xsl:template>
</xsl:stylesheet>

end(03/12/1)