XMLをCSVへ変換でほしい情報を取得したい
XMLからcsvへの変換
下記のXMLのフィールドの項目をxslを使い、msxsl.exe経由で、csvへ変換をしたいのです。
ユーザーデータ部分は抽出可能ですが、aidを抽出する方法がわかりません。
どなたかご教示のほど、お願いいたします。
■XML
<?xml version="1.0" encoding="shift_jis"?>
<状況 aid="555">
<ユーザデータ uid="0001">
<氏名>吉野家 太郎</氏名>
<ID>123456</ID>
<種別>一般</種別>
<率>100</率>
<最終更新>2012/02/16 15:20:58</最終更新>
</ユーザデータ>
<ユーザデータ uid="0002">
<氏名>吉野家 次郎</氏名>
<ID>123457</ID>
<種別>一般</種別>
<率>10</率>
<最終更新>2012/03/16 15:20:58</最終更新>
</ユーザデータ>
</状況>
■xsl ユーザーデータ取得用
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="text" encoding="Shift_JIS" />
<xsl:template match="/">uid,氏名,ID,種別,率,最終更新
<xsl:apply-templates select="/状況/ユーザデータ"/>
</xsl:template>
<xsl:template match="ユーザデータ">
<xsl:value-of select="@uid" /><xsl:text>,</xsl:text>
<xsl:value-of select="氏名" /><xsl:text>,</xsl:text>
<xsl:value-of select="ID" /><xsl:text>,</xsl:text>
<xsl:value-of select="種別" /><xsl:text>,</xsl:text>
<xsl:value-of select="率" /><xsl:text>,</xsl:text>
<xsl:value-of select="最終更新" /><xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
aidを取得するにはどのようなXSLを書けばよいのでしょうか?
抽出時のレイアウト
aid,uid,氏名,ID,種別,率,最終更新
よろしくお願いいたします。
補足
わざわざ私ごときのために考えてくださりホント~に感謝申し上げます。 >clnNod.lengthが件数だから、これを表示するだけですね。 具体的にどの箇所にどう書き込めば表示されるのでしょうか? 試行錯誤しながら以下の2行をそれぞれ思う箇所にいろいろ貼り込んでもどうしても表示されませんでした。 writeln(<div id="countArea"></div>"); document.getElementById("countArea").innerHTML= clnNod.length + "件ヒット" >大量データのXMLのJavascript DOM処理は、資源を使いすぎて遅いです。 試しに実際のデータ量で検索比較してみたところ、xmlデータの検索は、これまで使っているhtmlデータの検索よりも、3-5倍近く時間がかかりました。 >結果の書き出しについてですが、フレームで分ける必要は無いと思います。 実際の使用では、検索結果が1ページでは収まらないため、スクロールすると検索ボックスが見えなくなるので、フレームを使っている次第です。 >Msxml2は使いたくないですね。IEしか使えなく、IEのシェアは年々減少しているからです。 Msxml以外に何があるのですか?私はIEの愛用者ですが、どのbrowserが人気傾向にあるのですか?それはなぜですか? >この手の処理はDBを使ってサーバ側でPHPでも使って、ちゃちゃっとやった方がずっと簡単だと思います。 自前のサーバ理想的ですね。でもお金かかりそうだし、かなり勉強しなきゃいけない感じがして気が引けます。 5年ほど前から http://www2s.biglobe.ne.jp/~iryo/java/java1/engform.htmlさん の検索プログラムを以下のようにアレンジして(とは言っても、ボタン類を画像にしたり、データ部分をhtmlタグで飾り立てているだけですが)使っていますが、「プルダウンメニュを追加する」ことで、ジャンルを絞り込んで、テキストボックスで文字検索できればなぁと考えているのですが、ヒントでもいただけると嬉しいです。 なぜ、xmlに惹かれたかというと、xmlデータがツリー構造を保持してさえいれば、表示方法を簡単に変えられることと、頻繁に使う同じ長ったらしい文字列を実体参照(ENTITY)で短い文字列に置き換えることができるという点です。 htmlをフレームを使って上下に、検索ボタン用ページ(name=up)と結果表示用ページ(name=down)に2分割 ★検索ボックス部分 <IMG SRC="clearbutton.png" onclick="parent.down.document.location.href='down.htm'; parent.up.document.location.href='up.htm'" title="クリア・ボタン"> <IMG SRC="searchbutton.png" onClick="return check()" title="検索ボタン"> <FORM name=gto onSubmit="return check()" ><INPUT name=box type="text" title="検索ボックス"></FORM> ★検索エンジン部分(js) c = 0; dta ='a,b,c,d,e,f,g,h,i,j,k,l,m,n,'; dta +='o,p,q,r,s,t,u,v,w,x,y,z,'; dtc='a,b,c,d,e,f,g,h,i,j,k,l,m,n,'; dtc +='o,p,q,r,s,t,u,v,w,x,y,z,'; mae1=dta.split(','); ato1=dtc.split(','); function check(){ cstr1 = document.gto.box.value; n1=0;cstr=''; cstr1 = cstr1.toLowerCase() for (i=0; i<cstr1.length; i++) { moz = cstr1.charAt(i); n1 = dta.indexOf(moz,0); if (n1 >= 0){ for(j=0;j<mae1.length;j++){ na = mae1[j].indexOf(moz,0); if (na >= 0){ moz = ato1[j]; break; } } } cstr += moz; } parent.down.document.write('<HTML>'); parent.down.document.write('<META http-equiv=Content-Type content="text/html; charset=shift_jis">'); parent.down.document.write('<HEAD><LINK href="js/stock.css" type=text/css rel=stylesheet></HEAD>'); parent.down.document.write('<BODY>'); for(i=1; i<999; i++){ n = dt[i].indexOf(cstr,0); if (n > 0) {c=c+1;parent.down.document.write(dt[i]+'');} } if(c==0) parent.down.document.write('「',cstr,'」 を含む索引名はありません。'); else parent.down.document.write('「',cstr,'」 を含む索引名を 「',c,'」 個検出しました。'); c=0; } ★データ部分(js) dt=new Array(); dt[1]='<table><tr><td>data1</td><td>data2</td></tr></table>' dt[2]='<table><tr><td>data3</td><td>data4</td></tr></table>' 以下省略