XMLをIEで表示(基礎編) CSVファイルへの変換

2004年04月11日(日)更新


CSVファイル

さらら: CSVファイルってなに?

たけち: CSV(しぃ・えす・ぶい)というのはComma Separated Valueの略で、データを","(カンマ)で区切って示すデータ形式なんだ。この形式は、ずっと前からアプリケーション間でのデータ交換用のデータ形式として使われてきたんだよね。

さらら: あっ、そうなの。でも、どんなのか見たこと無いわ。

たけち: あっ、そっか。じゃあ、例を次に見てみようね。

巻,歌番号,作者,読み
1,8,額田王,"熟田津に 船乗りせむと 月待てば 潮もかなひぬ 今は漕ぎ出でな"
1,20,額田王,"茜さす 紫野行き標野行き 野守は見ずや 君が袖振る"
1,28,持統天皇,"春過ぎて 夏来たるらし 白妙の 衣干したり 天の香具山"

さらら: これって、どうみればいいの?万葉歌のデータのようだけど。

たけち: そうだね。最初の行がタイトル行で、2行目以降がデータを示しているんだ。2行目、3行目そして4行目がそれぞれ歌のデータを示しているんだね。

さらら: そうなんだぁ。ひとつひとつの歌のデータ項目を","(カンマ)で区切っているのね。

たけち: そうなんだね。このCSVデータは、Microsoft社のExcelで読み書きができるんだよ。

さらら: あっ、そうなの?!

たけち: 上で示したCSVデータをpoem.csvというファイルにして、Excelで読み込んでみると次のように表示されるんだよ。

Excelで歌データのcsvを読み込み・表示

さらら: CSVってなんとなく分かった気がするわ。

たけち: よかった。じゃあ、もとの話に戻ろうね。

さらら: えっ?

たけち: XMLデータをCSVデータに変換してみようね。

さらら: あっ。(^ ^;


XMLデータと変換後のCSV例

たけち: 変換前のXMLデータには、いつものXMLデータ例を使ってみるね。

さらら: そうね。そのほうが分かりやすいわ。

XMLデータ例: 万葉集第1巻・第2巻抜粋

<?xml version="1.0" encoding="Shift_JIS" ?>

<manyosyu>
<poem pno="8">
  <poet>額田王(ぬかたのおおきみ)</poet>
  <yomi>熟田津(にきたつ)に船(ふな)乗りせむと月待てば潮もかなひぬ今は漕(こ)ぎ出(い)でな</yomi>
</poem>

<poem pno="20">
  <poet>額田王(ぬかたのおおきみ)</poet>
  <yomi>茜(あかね)さす 紫野行き標野(しめの)行き 野守(のもり)は見ずや 君が袖振る</yomi>
</poem>

<poem pno="28">
  <poet>持統天皇(じとうてんのう)</poet>
  <yomi>春過ぎて 夏来たるらし 白妙(しろたえ)の 衣干したり 天(あめ)の香具山(かぐやま)</yomi>
</poem>

<poem pno="37">
  <poet>柿本人麻呂(かきのもとのひとまろ)</poet>
  <yomi>見れど飽かぬ 吉野の川の 常滑(とこなめ)の 絶ゆることなく またかへり見む</yomi>
</poem>

<poem pno="113">
  <poet>額田王(ぬかたのおおきみ)</poet>
  <yomi>み吉野(よしの)の 玉(たま)松(まつ)が枝(え)は はしきかも 君が御言(みこと)を 持ちて通(かよ)はく</yomi>
</poem>

<poem pno="137">
  <poet>柿本人麻呂(かきのもとのひとまろ)</poet>
  <yomi>秋山に 落つる黄葉(もみちば) しましくは な散り乱ひそ 妹があたり見む</yomi>
</poem>

</manyosyu>

さらら: このXMLデータをCSVにするのね。

たけち: そうそう。次のようなCSVデータに変換してみよう。

歌番号,作者,読み
8,額田王(ぬかたのおおきみ),熟田津(にきたつ)に船(ふな)乗りせむと月待てば潮もかなひぬ今は漕(こ)ぎ出(い)でな
20,額田王(ぬかたのおおきみ),茜(あかね)さす 紫野行き標野(しめの)行き 野守(のもり)は見ずや 君が袖振る
28,持統天皇(じとうてんのう),春過ぎて 夏来たるらし 白妙(しろたえ)の 衣干したり 天(あめ)の香具山(かぐやま)
37,柿本人麻呂(かきのもとのひとまろ),見れど飽かぬ 吉野の川の 常滑(とこなめ)の 絶ゆることなく またかへり見む
113,額田王(ぬかたのおおきみ),み吉野(よしの)の 玉(たま)松(まつ)が枝(え)は はしきかも 君が御言(みこと)を 持ちて通(かよ)はく
137,柿本人麻呂(かきのもとのひとまろ),秋山に 落つる黄葉(もみちば) しましくは な散り乱ひそ 妹があたり見む


CSVへ変換するためのXSLT例

たけち: じゃあ、このようなCSVを生成するためのXSLTスタイルシートの例を見てみようね。

さらら: はい。

XSLTスタイルシート例: CSVに変換

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

<xsl:template match="/">歌番号,作者,読み <xsl:apply-templates select="manyosyu/poem" />
</xsl:template>

<xsl:template match="poem">
<xsl:value-of select="@pno" />,<xsl:value-of select="poet" />,<xsl:value-of select="yomi" /><xsl:text>
</xsl:text>

</xsl:template>

</xsl:stylesheet>

たけち: 特に見ておいて欲しいのは、
<xsl:output method="text" encoding="Shift_JIS" />
の個所だね。前回、xsl:outputについては説明したよね。

さらら: そうだったのね。xsl:outputで、xsl:outputを指定するとテキストファイルに変換できるのね。

たけち: で、そのテキストの形式をpoemに適用するテンプレートで、CSVにしているんだね。変換した結果のCSVファイルを、Excelで見てみると図のようになるよ。

Excelで歌データのcsvを読み込み・表示

さらら: なるほど。。。。でも、この変換って、何を使ってやるのかしら。

たけち: そうそう。変換する手順についてはまだ説明してなかったね。じゃあ、そのことは次回から説明するね。

さらら: あっ、はい! 

→次回からは、xalanのインストールです・・・ (^ ^;