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

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

2005/08/14

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

第5回

a.xmlファイル
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="a.xsl"?>
<商品一覧>
 <商品 品名="CDRメディア" 値段="2000" />
 <商品 品名="DVDメディア" 値段="5000" />
 <商品 品名="FDメディア" 値段="1000" />
</商品一覧>
a.xsltファイル
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">                  

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

<xsl:template match="商品一覧">
 <table border="1">
 <tbody>
  <xsl:apply-templates />
 </tbody>
 </table>
</xsl:template>
<xsl:template match="商品">
 <tr><td><xsl:value-of select="@品名" /></td><td><xsl:value-of select="@値段" /></td></tr>
</xsl:template>
</xsl:stylesheet>                  

これが最終的な出来上がりのファイルである。
XMLの方は前回までに説明しているので割愛するとして、XSLの方を見てみよう。

XSLで何が変わっているかと言うと、商品用のテンプレートが変更になっていて、品名、値段のテンプレートがなくなっている。

品名と値段は要素ではなく、商品の属性になったためテンプレートを適用する対象としてはふさわしくなくなったと思ってもらいたい。

そうすると、商品の中で表示をさせてやら無いといけないわけだが、それが

<tr><td><xsl:value-of select="@品名" /></td><td><xsl:value-of select="@値段" /></td></tr>

の1行だ。

<xsl:value-of select="@品名" />

を見るとわかるように、value-ofと言う命令でそこに値を表示することが出来る。
@が前についている場合それは属性を意味していることになるので、@品名とは商品要素の品名属性と言うことがわかると思う。

また商品より下位の要素を持ち合わせていないのでapply-templatesも行っていない。

このようにXMLとXSLを組み合わせることでデータと表示形式を分離することが可能だ。
さらにCSS(Cascading Style Sheets)を組み合わせて、データ、表示形式、レイアウトを3分割するとなんだかスタイリッシュな感じがする。

ただこの方法も奥が深く実は泥沼が待っているとかいないとか。

次回はXML->Text変換をやってみよう。

[戻る] [進む]


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

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

ブログ本家
広告