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

CSVファイルをXMLに変換する方法を教えてください。専用のプログラムを組むのではなくXSLT(*.xslファイル)で完結させたいというのが条件です。(XSLTの中に記述されるJavaScriptを最大限活用することはOKです。) CSVのフィールドとXMLタグの対応付けはハードコーディングでかまいません。宜しくお願いします。

●質問者: akunaki
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:CSV JavaScript XML XSL XSLT
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● tatsukiki
●10ポイント

http://petat.com/users/tatsuki/index.html

banned interdit verboden prohibido vietato proibido

いろいろあり


2 ● kn1967
●40ポイント

http://www.vector.co.jp/soft/win95/util/se137947.html

フリーの変換ソフトを使ってみてはいかがかしら。

◎質問者からの返答

上位からソフトをキックする必要があると思うのですが、XSLT変換を実行するプロセスが既に決まっておりプログラムを呼び出せません。逆にこのフリーソフトはXSLTの中から呼び出せるのでしょうか?


3 ● sohei
●40ポイント

http://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt15.html

サンプルで覚えるXSLTプログラミング

URLにあるような方法が考えられます。

ただ、XSLTプロセッサの標準の機能ではないため、すべてのXSLTプロセッサでは使用できません。

ただ、そもそもXSLTはXMLのスタイルシートなので、csv形式のファイルを扱うことはできないような気がします。

#XMLからcsvへの変換ならできますけどね。

http://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt00.html

サンプルで覚えるXSLTプログラミング


4 ● おのひろき
●40ポイント

http://onohiroki.cycling.jp/archives/xslt4csv.xsl

値がカンマで区切られて,複数行あるデータをXMLに変換する XSLT の例

XSLT でやるなら CSV のデータが XML の中に埋め込まれているっていう前提でしょうか?

そういう場合の簡単な例.「”」や「,」が値に含まれている場合には対処していないけど.

http://www.s34.co.jp/cpptechdoc/article/xml/csv2xml/index.html

CSVからXMLへ

そうぢゃなければ,XSLT を使う前に CSV を XML に他の外部のプログラムなどで変換しておくことになるでしょう.

◎質問者からの返答

有り難う御座います。1つめの情報が非常に参考になります。


5 ● ohmix1
●40ポイント

http://www18.tok2.com/home/koumori27/xml/xsl/xsl9.html

上記URLはMSXSLでスクリプト処理を行う例です。

実行環境や変換プロセス起動方法が具体的に記述されていないので、以下は推測です。

実行環境:Windows+MSXML

変換プロセス起動方法:MSXMLのtransform

そもそも、transformにCSVは渡せないので、ダミーのXMLファイルを指定してXSLT処理を行う。

XSLTのスクリプト内でCSVファイルを読み込み、パースしてXML文字列を作成する。

XML文字列をそのまま出力する。

----------------------------------------

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

<xsl:stylesheet

xmlns:xsl=”

http://www.w3.org/1999/XSL/Transform

XSLT Namespace

xmlns:msxsl=”urn:schemas-microsoft-com:xslt”

xmlns:user=”

http://mycompany.co.jp/mynamespace

version=”1.0”>

<xsl:output method=”xml” encoding=”Shift_JIS” />

<xsl:template match=”/”>

<csvdata>

<xsl:value-of select=”user:func(.)” disable-output-escaping=”yes”/>

</csvdata>

</xsl:template>

<msxsl:script language=”JScript” implements-prefix=”user”>

<![CDATA[

function func(dom){

var fso = new ActiveXObject(”Scripting.FileSystemObject”);

var ForReading = 1;

var f = fso.OpenTextFile(”s01.csv”, ForReading, false);

var data=””;

while (!f.AtEndOfStream) {

data += ”<row>”;

var line = f.ReadLine();

var csv = line.split(/,/);

for (var col=0; col<csv.length; col++) {

data += ”<col>” + csv[col] +”</col>”;

}

data += ”</row>¥n”;

}

f.Close();

return data;

}

]]>

</msxsl:script>

</xsl:stylesheet>

----------------------------------------

◎質問者からの返答

今まさにどうやってCSVを読み込むか?で困っていたところです。大変参考になりました。有り難う御座います。

関連質問


●質問をもっと探す●



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