5.7.4 使用するXSLファイル(SampleXSLT.xsl)

サンプルプログラムが読み込むXSLファイルを次に示します。

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

 <xsl:template match="/">
   <xsl:apply-templates />
 </xsl:template>

 <!-- STARTをルートとして変換を開始する -->
 <xsl:template match="START">
   <HTML>
     <HEAD>
       <TITLE>XMLをHTMLのテーブルで表示する</TITLE>
     </HEAD>
     <BODY BGCOLOR="#C0C0C0">
     <FONT SIZE="5">発注伝票</FONT>
     <TABLE BORDER="2">
     <TR><TH>商品名</TH><TH>単価</TH>
         <TH>数量</TH><TH>小計</TH></TR>
     <xsl:apply-templates />
     <TR><TH>合計</TH><TD>&#160;</TD><TD>&#160;</TD>
     <TD ALIGN="RIGHT"><xsl:value-of
         select="(//商品[1]/単価 * //商品[1]/数量 +
                  //商品[2]/単価 * //商品[2]/数量 +
                  //商品[3]/単価 * //商品[3]/数量)" /></TD></TR>
     </TABLE>
     </BODY>
   </HTML>
 </xsl:template>

 <xsl:template match="伝票">
   <xsl:apply-templates />
 </xsl:template>

 <!-- 1商品で1行を作成するし,最後に小計を出力する -->
 <xsl:template match="商品">
   <TR><xsl:apply-templates />
   <TD ALIGN="RIGHT">
       <xsl:value-of select="number(単価)*number(数量)" />
   </TD></TR>
 </xsl:template>

 <!-- 商品名を出力する -->
 <xsl:template match="商品名">
   <TD><xsl:value-of select="."/></TD>
 </xsl:template>

 <!-- 単価を出力する -->
 <xsl:template match="単価">
   <TD ALIGN="RIGHT"><xsl:value-of select="."/></TD>
 </xsl:template>

 <!-- 数量を出力する -->
 <xsl:template match="数量">
   <TD ALIGN="RIGHT"><xsl:value-of select="."/></TD>
 </xsl:template>
</xsl:stylesheet>