人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

XML⇒CSVに変換するようなXSLTについて教えてください。
・どんな風に何を作ればそれができるのか?
・XSLTを動かすためには、何が必要か?ローカルでも動く?

具体的なサンプルコードも教えてください。


●質問者: dingding
●カテゴリ:インターネット ウェブ制作
✍キーワード:CSV XML XSLT コード ローカル
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● mj99
●60ポイント

xsltをローカルで簡単に動かすには、msxsl.exeがいいでしょう。

Download details: Command Line Transformation Utility (msxsl.exe) で入手できます(ページ中ほどdownloadボタンがあります)

(すいません、windows前提です)

コマンドラインで、

msxsl xmlファイル名 xslファイル名 -o 出力ファイル名

と、いった感じで使います。

----

で、xml=>csv変換ですが、基本的にはxml=>htmlとそんなに変わりません。

サンプルで覚えるXSLTプログラミングを参考に、

まずはxml=>htmlを試します。

下記を『test.xml』として保存します。

<?xml version="1.0" encoding="Shift_JIS" ?> 
<PAGE>
 <EMPLOYEES>
 <EMPLOYEE>
 <EMPNO>1</EMPNO> 
 <ENAME>佐野力</ENAME> 
 <JOB>President</JOB> 
 <HIREDATE>1990-04-01</HIREDATE> 
 <SAL>10000</SAL> 
 <DEPTNO>10</DEPTNO> 
 </EMPLOYEE>
 <EMPLOYEE>
 <EMPNO>50</EMPNO> 
 <ENAME>高橋敦子</ENAME> 
 <JOB>Director</JOB> 
 <MGR>1</MGR> 
 <HIREDATE>1991-04-01</HIREDATE> 
 <SAL>6000</SAL> 
 <DEPTNO>30</DEPTNO> 
 </EMPLOYEE>
 <EMPLOYEE>
 <EMPNO>1401</EMPNO> 
 <ENAME>小山尚彦</ENAME> 
 <JOB>Analyst</JOB> 
 <MGR>50</MGR> 
 <HIREDATE>1999-09-01</HIREDATE> 
 <SAL>3000</SAL> 
 <DEPTNO>30</DEPTNO> 
 </EMPLOYEE>
 </EMPLOYEES>
</PAGE>

下記を『test1.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" encoding="Shift_JIS"/> 

 <xsl:template match="/">
 <HTML>
 <BODY>
 <xsl:apply-templates select="//EMPLOYEE"/>
 </BODY>
 </HTML>
 </xsl:template> 

 <xsl:template match="EMPLOYEE">
 <xsl:value-of select="ENAME"/><BR/>
 </xsl:template> 

</xsl:stylesheet>

コマンドラインで下記のように実行します。

msxsl test.xml test1.xsl -o test.html

『test.html』が作られたと思います

----

次にcsv用のスタイルシートを作ります。

下記を『test2.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="text" encoding="Shift_JIS"/>

 <xsl:template match="/">社員番号,氏名,役職,入社日,売上
<xsl:apply-templates select="//EMPLOYEE"/>
 </xsl:template> 

 <xsl:template match="EMPLOYEE">
<xsl:value-of select="EMPNO"/>,<xsl:value-of select="ENAME"/>,<xsl:value-of select="JOB"/>,<xsl:value-of select="HIREDATE"/>,<xsl:value-of select="SAL"/><xsl:text>
</xsl:text>
 </xsl:template> 

</xsl:stylesheet>

で、コマンドライン

msxsl test.xml test2.xsl -o test.csv

コツは空白と改行を如何に操るか、ですね。

◎質問者からの返答

とても詳しい解説ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ