

Jaxpのxmlパーサを使い、xmlからxmlに変換するプログラムを作っています。分からないことがあるのでぜひ教えてください。
例えば、
<book bookid="001">
<hon name="abc" />
<hon name="def" />
</book>
<book bookid="002">
<hon name="ghi" />
</book>
などというxmlからhonのnameがabcというものを探し、
あれば、"abc"とそのbookidの"001"を取り出す方法はどうすればいいでしょうか?
abcは取り出せたのですが、それに対応するbookidが取り出せなくて困っています。
わかりづらくてすみません・・・。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
<result>
<book>
<name>abc</name>
<id>001</id>
</book>
<book>
<name>def</name>
<id>001</id>
</book>
<book>
<name>ghi</name>
<id>002</id>
</book>
</result>
上記のような結果を得るためのXSLTは、次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<result>
<xsl:for-each select="root/book/hon/@name">
<book>
<id><xsl:value-of select="../../@bookid" /></id>
<name><xsl:value-of select="." /></name>
</book>
</xsl:for-each>
</result>
</xsl:template>
</xsl:stylesheet>
このXSLTを実行するにはJavaのTransformerを使用する必要があります。
詳しくは、下の参考ページをご覧下さい。
XSLTを使用しないで、Javaだけでやる方法もありますが、要素を生成したりする処理がめんどくさいので、XSLT変換が一番スッキリいく方法です。
参考URL:http://www.hellohiro.com/xslt.htm
No.2
- 回答日時:
ご質問の趣旨に合っていないかもしれませんが、xsltでhtml出力してみたので参考になればうれしいです。
入力XML
<?xml version="1.0" encoding="Shift_JIS"?>
<books>
<book bookid="001">
<hon name="abc" />
<hon name="def" />
</book>
<book bookid="002">
<hon name="ghi" />
</book>
</books>
変換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="html" encoding="Shift_JIS"/>
<xsl:template match="/">
<html><body><table>
<xsl:apply-templates/>
</table></body></html>
</xsl:template>
<xsl:template match="book">
<xsl:for-each select="hon">
<xsl:if test="@name='abc'">
<tr><td>
<xsl:value-of select="@name"/>
</td><td>
<xsl:value-of select="../@bookid"/>
</td></tr>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
No.1
- 回答日時:
質問の意図が分りづらいので、補足してください。
入力のXMLは分りましたが、変換後に出力したいXMLを示してください。
質問の内容から推測すると、変換後の出力XMLは、以下のような感じでしょうか。
<result>
<book>
<name>abc</name>
<id>001</id>
</book>
<book>
<name>def</name>
<id>001</id>
</book>
<book>
<name>ghi</name>
<id>002</id>
</book>
</result>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XMLを作成してもタグしか表示さ...
-
XMLデータを変換し印刷する方法
-
論文に載せるグラフを作成したい
-
ChatGPT excel
-
公文書のxmlファイルの開き方が...
-
XMLサイトマップの登録方法がわ...
-
タモリさんを信じられますか?
-
自分のHTMLサイトでRSSを読み込...
-
ゲーミングPCに入っているAlris...
-
【BAT(バッチ)ファイル】Web...
-
XMLとは何ですか?
-
特殊文字の検索方法
-
フォルダー内検索
-
Webページに関するさまざまな情...
-
head要素
-
ヤフー知恵袋みたいなサイトを...
-
メールアドレスについて
-
マスターノード
-
エクセルのマクロについて教え...
-
クラウドサービスのlaaS paaS s...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XMLを作成してもタグしか表示さ...
-
ChatGPT excel
-
公文書のxmlファイルの開き方が...
-
ExcelのVBAが特定のPC上でのみ...
-
MSFormsとは何ですか?
-
XML、XSLTの適応エラー(IEから...
-
xmlファイルが上手にHTMLに変換...
-
マイナポータルの住宅借入金当...
-
reaper音声ファイルについて
-
ヤフー知恵袋みたいなサイトを...
-
XMLデータを変換し印刷する方法
-
ファイル名の一部削除について
-
論文に載せるグラフを作成したい
-
Excel関数で、セル内の文字列の...
-
XPathで途中に名前空間が設定さ...
-
自分のHTMLサイトでRSSを読み込...
-
スマホのスプレッドシートでセ...
-
ゲーミングPCに入っているAlris...
-
dataファイルをxtxファイルにす...
-
wmaファイルをmidiファイルに変...
おすすめ情報