XML⇒CSVに変換するようなXSLTについて教えてください。

・どんな風に何を作ればそれができるのか?
・XSLTを動かすためには、何が必要か?ローカルでも動く?

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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/05/02 20:55:21
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:mj99 No.1

回答回数138ベストアンサー獲得回数38

ポイント60pt

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

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

id:dingding

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

2007/04/28 07:56:22

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • Google mapをローカルでPOI-CSV変換する方法 webサービスでGoogleマップ POI・CSVコンバーターというのがあるので、それを使うと便利ですよ。 ですが、 なぜか文字がエスケープ化してしまい、困
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません