XMLってなぁに? 初級編 第7回
2005/08/14
この文書は執筆時点(2004/後半)での知識を基にしており、現状とあっていない可能性があります。
第7回
まず1行目にXML宣言がついている。
これは変換後のドキュメントをXMLと誤解している証拠だ。
XSL変換にはモードとして3つあると思ってもらったら簡単でXML, HTML, TXTの3モードが存在する。
3つのモードともそれぞれ特徴があるが、XMLモードと誤認識しているからXML宣言が入っている。
では強制的にTXTモードに切り替えよう。
<xsl:output method="text" />
の行を
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
の直下に入れてみて再度変換してみよう。
結果.txt
"CDRメディア",
"2000"
"DVDメディア",
"5000"
"FDメディア",
"1000"
このようにXML宣言は無事に消えた。
ただしなぜか改行が入ってしまっている。
思い返してみてほしい。
<xsl:template match="品名">
"<xsl:apply-templates />",
</xsl:template>
品名のテンプレートはこのような形式になっていた、タグは<TAG>から</TAG>までがタグとしての値である。
この場合
<xsl:template match="品名">!!改行!!
"<xsl:apply-templates />",!!改行!!
</xsl:template>
と2箇所に改行が入ってしまっている。
HTMLの場合にはスペースも改行も読み飛ばすが、TXTの場合には改行を読み飛ばされると改行する手段がなくなってしまう。
ということで、改行を消すにはXSLに含まれる改行を消せばいいとわかる。
それでは改行を消してみて変換してみてほしい。
答え合わせは次回