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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:tatsukiki No.1

回答回数56ベストアンサー獲得回数0

ポイント10pt

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

banned interdit verboden prohibido vietato proibido

いろいろあり

id:kn1967 No.2

回答回数2915ベストアンサー獲得回数301

ポイント40pt

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

id:akunaki

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

2005/03/01 17:13:39
id:sohei No.3

回答回数471ベストアンサー獲得回数6

ポイント40pt

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プログラミング

id:onohiroki No.4

回答回数11ベストアンサー獲得回数0

ポイント40pt

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

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

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

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

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

id:akunaki

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

2005/03/02 12:22:38
id:ohmix1 No.5

回答回数235ベストアンサー獲得回数14

ポイント40pt

上記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=”

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

xmlns:user=”

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>

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

id:akunaki

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

2005/03/02 14:55:02

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

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

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

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

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