下記のようなXMLに
<?xml version="1.0" encoding="EUC-JP"?>
<parent xmlns:xhtml="http://parent">
<child id="A1">
<taroh xmlns="http://child">
<age>10</age>
</taroh>
</child>
</parant>
下記のようなXSLTを適用した場合、
<?xml version="1.0" encoding="EUC-JP"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="xml"/>
<xsl:template match="text()|@*">
</xsl:template>
<xsl:template match="node()[@id='A1']">
<xsl:copy-of select="./node()"/>
</xsl:template>
</xsl:stylesheet>
通常下記のような結果となりますが、
<?xml version="1.0" encoding="EUC-JP"?>
<taroh xmlns="http://parent">
<age>10</age>
</taroh>
namespaceを変更させずに、下記のような結果を
得るためにはどのようにすればよいでしょうか?
<?xml version="1.0" encoding="EUC-JP"?>
<taroh xmlns="http://child">
<age>10</age>
</taroh>
抽出には
javax.xml.transform.Transformerを用いています。
どうか、よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1で回答した者です。
こちらで試した限りでは、接頭辞のあるなしに関係なく、taroh要素は、元々属していたnamespaceに属している結果となりました。
<taroh xmlns="http://child">
<age>10</age>
</taroh>
XSLTの仕様からもこれが正しい動作だと思います。
XTやXalanの最新版を使うと結果はどうなりますか?
※ Javaのバージョンが1.4以上の場合、javaのオプションに以下のように指定しないと、標準で付属する方が使われてしまいます(参考URL)。
java -Djava.endorsed.dirs=d:\xml_tool\xalan-j_2_4_1\bin ...
参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/guide/st …
No.1
- 回答日時:
日数が経ってしまっているので解決済みかもしれませんが、誰も答えてないので、とりあえずアドバイスを。
コピーアンドペースト(</parant>は</parent>に修正)して試してみても、
<taroh xmlns="http://child" xmlns:html="http://parent">
<age>10</age>
</taroh>
のようになって、namespaceが置き換えられてしまうような結果は再現しません。
xmlns:html="http://parent"が余計に付いてますが、出力される要素が属するnamespaceはあくまで"http://child"の方です。それとも、この宣言を除きたいのでしょうか?
いずれにしても、補足していただく必要があると思います。
回答ありがとうございます。
ずいぶん遅くなりましたが、補足させていただきます。
例のXMLが間違っていました。
実際は下記のように親のネームスペースに接頭辞が付かな状況を想定していました。
<?xml version="1.0" encoding="EUC-JP"?>
<parent xmlns="http://parent">
<child id="A1">
<taroh xmlns="http://child">
<age>10</age>
</taroh>
</child>
</parent>
そして、あくまで抽出されたXMLのネームスペースは
xmlns="http://child"
であることを期待しています。
とりあえず、接頭辞を付ける事を義務付けるという
解決策で消極的ではありますが、回避策としています。
上記のような方法でなく、解決することもできるのでしょうか?
あるいは、接頭辞という概念が存在すること自体がこの問題の解決策であるような気もしています。
どんなことでも、ご教示いただければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ゲーミングPCに入っているAlris...
-
ワードで文字を入力する時の変...
-
MSFormsとは何ですか?
-
順不同・任意のタグ
-
XMLとは何ですか?
-
reaper音声ファイルについて
-
特殊文字の検索方法
-
公文書のxmlファイルの開き方が...
-
ray-mmdについて
-
XML文書の指定した属性値を持つ...
-
論文に載せるグラフを作成したい
-
Mac Excel VBAについて
-
VBA XML の置換方法
-
自分のHTMLサイトでRSSを読み込...
-
【BAT(バッチ)ファイル】Web...
-
フォルダー内検索
-
Webページに関するさまざまな情...
-
head要素
-
ヤフー知恵袋みたいなサイトを...
-
メールアドレスについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XML、XSLTの適応エラー(IEから...
-
xmlファイルが上手にHTMLに変換...
-
XMLを出力する時のエラー原因
-
不特定ノードに出現する同じタ...
-
xmlstarletで他ファイルからエ...
-
XSLTによるノードの抽出の際に...
-
xsltを利用して変換後改行が入る
-
ネスケで表示させたいんですが...
-
XMLの属性について。
-
XSLTの国際化のやり方
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
SNMP リンクダウンとノードダ...
-
ルート要素ノードが2個ある場合?
-
昔Winnyってありましたけど、あ...
-
バッチファイルでテキストファ...
-
C#でTreeViewのCheckBoxのサイ...
-
同じタグ名の項目取得
-
4バイトを10進数に変換する方法
おすすめ情報