中の技術日誌
 ホーム / 上へ

XMLってなぁに? 初級編 第4回

2005/08/14

この文書は執筆時点(2004/後半)での知識を基にしており、現状とあっていない可能性があります。

第4回

<html>
  <head>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>TITLE</title>
  </head>
  <body>
   ヘッダ
   <table border="1"><tbody><tr><td>CDRメディア</td><td>2000</td></tr><tr><td>DVDメディア</td><td>5000</td></tr><tr><td>FDメディア</td><td>1000</td></tr></tbody></table>
   フッタ
  </body>
</html>

これがさっきのXML+XSLファイルをIEで表示したときのHTMLだ。
このHTMLファイルは別途ツールで結果をファイル保存したものなので、IE上では保存することが出来ない。

また、簡易に説明するためだけにHTMLの文法もまるで無視していることは突っ込み却下でお願いしたい。

では具体的にどのような処理でこのHTMLファイルが出来ているのだろう。

<xsl:template match="/">
 <html>
  <head>
   <title>TITLE</title>
  </head>
  <body>
   ヘッダ
   <xsl:apply-templates />
   フッタ
  </body>
 </html>
</xsl:template>

まず最初にあるこれができあがるHTML文書のベースになるものだ。

<xsl:template match="/">

この"/"はルート要素と言って実際に1回だけ動くことが保障されている。

重要なのは

<xsl:apply-templates />

の行で、この行があるとXMLの中をさらにチェックすると言う意味になる。
ここでは

<xsl:apply-templates />

の上下をヘッダとフッタと理解してもらいたいために、そのように記述してある。
それら以外はすべて通常のHTMLタグである。

ただし注意してもらいたいのはXSLファイルも整形XMLである(ウェルフォームドなXML)HTMLの世界では適当に閉じタグを省略しても動作してくれたりするが、XMLでは閉じタグ1個無いだけで読み取りエラーになるそういう世界だ。

<xsl:template match="商品一覧">
 <table border="1">
 <tbody>
  <xsl:apply-templates />
 </tbody>
 </table>
</xsl:template>

次に出てくるのが商品一覧タグであるので、商品一覧テンプレートが適用される。
ここでは商品一覧はテーブルにすることにしているので、テーブルのヘッダとフッタを記述している。

<商品一覧>
</商品一覧>

ここまでのXMLが解釈された、さらに先ほどのテンプレートに

  <xsl:apply-templates />

があるので、さらに下位のツリーを解釈する

<商品一覧>
 <商品>
 </商品>
 <商品>
 </商品>
 <商品>
 </商品>
</商品一覧>

ここで商品と言うタグが出現するので、商品テンプレートの出番だ

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

ここでは<tr></tr>でくくられている。商品タグがテーブルの1行に値すると言うことだ。

あとは

<xsl:template match="品名">
 <td><xsl:apply-templates /></td>
</xsl:template>
<xsl:template match="値段">
 <td><xsl:apply-templates /></td>
</xsl:template>

テンプレートでセル単位の設定を行う。
ここで、apply-templatesを行っているのは、残っている文字列を単純に表示させる為である。

次は属性版を作ってみよう。

[戻る] [進む]


勉強会: 05/18 大阪 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告