
下記のXMLのフィールドの項目を
xslを使い、msxsl.exe経由で、csvへ変換をしたいのですが、
各field nameを抽出するのがうまくいきません。
copy condition=の箇所は必要ありません。
どなたかご教示のほど、お願いいたします。
■XML
<?xml version="1.0" encoding="UTF-8"?>
<exportData>
<Book id="id">
<field name="keywords"></field>
<field name="listName"></field>
<field name="publisher"></field>
<field name="publishDate"></field>
<field name="illustrators"></field>
<field name="isbn"></field>
<field name="length"></field>
<field name="id"></field>
<field name="series"></field>
<field name="authors"></field>
<field name="title"></field>
<field name="summary"></field>
<field name="format"></field>
<field name="genre"></field>
<field name="coverImage"></field>
<field name="List Price"></field>
<field name="URL"></field>
<field name="Current Value"></field>
<field name="isbn13"></field>
<copy condition="" dateAcquired="" location="Bookshelf" owner="" presentValue="" source="">
</copy>
</Book>
■xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">keywords,listName,publisher,publishDate,illustrators,isbn,length,id,series,authors,title,summary,format,genre,coverImage,URL,CurrentValue,isbn13
<xsl:apply-templates select="//Book"/>
</xsl:template>
<xsl:template match="Book">
<xsl:call-template name="keywords"/>,<xsl:call-template name="listName"/>,<xsl:call-template name="publisher"/>,<xsl:call-template name="publishDate"/>,<xsl:call-template name="illustrators"/>,<xsl:call-template name="isbn"/>,<xsl:call-template name="length"/>,<xsl:call-template name="id"/>,<xsl:call-template name="series"/>,<xsl:call-template name="authors"/>,<xsl:call-template name="title"/>,<xsl:call-template name="summary"/>,<xsl:call-template name="format"/>,<xsl:call-template name="genre"/>,<xsl:call-template name="coverImage"/>,<xsl:call-template name="URL"/>,<xsl:call-template name="CurrentValue"/>,<xsl:call-template name="isbn13"/><xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
わかってしまえば、なんてことないんだけど、
ポイントは、値が必要な field 要素の一つ上の要素(Book)から、相対パスで field 要素を指定するところで、このとき select の条件に name 属性の条件も含めればいいだけ。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="/">
<!-- 省略 -->
<xsl:apply-templates select="//Book" />
</xsl:template>
<!-- csv のレコードを出力する処理 -->
<xsl:template match="Book">
<xsl:value-of select="field[@name='keywords']"/>,<xsl:value-of select="field[@name='listName']"/>,<xsl:value-of select="field[@name='publisher']"/>,...(省略)..,<xsl:value-of select="field[@name='isbn13']"/><xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
dscripty様
お礼が遅くなりすみませんでした。
filedの要素の指定でselect条件に
name属性の条件を含めるのが鍵ですね。
ご教示いただいた方法で、変換がうまくいきました。
ありがとうございました。
No.1
- 回答日時:
> 各field nameを抽出するのがうまくいきません。
↓
『各field name に対応する値を抽出する方法がわかりません』 という質問?
それとも、
単に 『要素の属性を XPATH で指定する方法』 がわからないだけ?
この回答への補足
dscripty様
『各field name に対応する値を抽出する方法がわかりません』 という質問になります。
分かりにくくてすみません。
記載したxmlの中には実際の値が入りますが、質問のxmlの中では削除しております。
このxml内の各field nameの値を取り出して、csvに変換できればと思います。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タグの有無の判定
-
空かスペースを認識させること...
-
XSL内でJavaScriptを記述し、Ja...
-
XSLT変換について
-
XSLTにてタグ名を取得する方法
-
ルート要素ノードが2個ある場合?
-
XMLで要素が記述された順番に意...
-
VBSでxmlの値を書き換えたい
-
XSLT
-
CPUの考え方を教えてください ...
-
C# TreeView 効率良いノード追...
-
C言語:文字列の並び替え
-
XMLファイル内のデータ(値)を変...
-
eclipseへのxmlファイル追加
-
HTTPステータス 404 - There is...
-
VBでXMLファイルを作ると xmlns...
-
DOSコマンドラインからxmlファ...
-
TreeViewに重複する値をセット
-
順不同・任意のタグ
-
2分探索木の高さを求めるプロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
xmlのテキストにリンクを張りた...
-
XSL中の改行、タブを無効にした...
-
XSLでXMLデータをタブ区切りデ...
-
XSL内でJavaScriptを記述し、Ja...
-
XMLとXSLTでリンクを張る方法
-
空かスペースを認識させること...
-
XSLで、XMLの空タグを制御したい。
-
xmlから吐き出したhtmlデータの...
-
xsl:sortを子要素で
-
自動的にリンクを貼る・・・
-
xmlからの表示
-
2stepをくりかえす方法を教えて...
-
XMLからcsvへの変換
-
タグを置き換える
-
XMLのHTMLへの変換 (初心者)
-
スマートなxsltの記述方法
-
XSLスタイルシートについて
-
XSLTで固定長データファイルを...
-
htmlに変換されない
おすすめ情報