- - PR -
XMLのタグごと文字列で取得
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-10-18 14:39
初めて投稿します。
かなり前から 考えて違う方法などを取ってきたのですが、 そうはいかなくなったので質問します。 XMLのタグごとを文字列で取得したいのですが、 例えば 〔XML〕 <MajTag> <a>aaa</a> <b>bbb</b> <c> <d>ddd</d> </c> </MajTag> というXMLがあるとすると MajTag以下のタグの内容をタグごと取得したいのです。 「 <a>aaa</a><b>bbb</b><c><d>ddd</d></c> 」 という感じで。 でも、普通に取得すると 「aaabbbddd」となってしまいます。 不可能なんでしょうか? わかる方いらっしゃったら教えてください。 |
|
投稿日時: 2005-10-18 15:28
<xsl:copy-of
で検索。 ひとつの方法としては |
|
投稿日時: 2005-10-18 17:03
copy-ofというのがあるのは知りませんでした。
大変勉強になります。ありがとうございます。 copy-ofを試してみましたが、 「文字列として取得」することができませんでした。 <xsl:copy-of select="MajTag"/>はできましたが、 <xsl:element name="input"> <xsl:attribute name="name">objMajTag</xsl:attribute> <xsl:attribute name="type">text</xsl:attribute> <xsl:attribute name="value"><xsl:copy-of select="MajTag"/></xsl:attribute> </xsl:element> とするとテキストは空になります。 さらに詳しく書くと、私がしたいのは <xsl:element name="input"> <xsl:attriubte name="type">button</xsl:attribute> <xsl:attribute name="click"> alert(document.all.objMajTag.value); </xsl:attribute> </xsl:element> として、 「 <a>aaa</a><b>bbb</b><c><d>ddd</d></c> 」 と出れば成功なのですが、 やはり文字列でとるのは無理なのでしょうか?? |
|
投稿日時: 2005-10-19 10:32
XSLTの変換の時点と HTML表示後の時点が違うから
<xsl:attribute name="click"> alert(document.all.objMajTag.value); </xsl:attribute> はちょっと変。 XSLTの変換で文字列化して埋め込むのはOK 要素タグの部分は xsl:text 、&lt; 、name() を使って手書きになるでしょう DOMでフラグメントをシリアライズするメソッドがあるといいのですが ==================================== XML対応のDBを使うと Query一発で 断片(フラグメント)を取れます =========================== テキストコマンドでは # sed -ne "/^<M/,/^<\/M/ p" <<EOF > <ajTag> > <a>aaa</a> > <b>bbb</b> > <c> > <d>ddd</d> > </c> > </ajTag> > > <MajTag> > <a>aaa</a> > <b>bbb</b> > <c> > <d>ddd</d> > </c> > </MajTag> > <ajTag> > <a>aaa</a> > <b>bbb</b> > <c> > <d>ddd</d> > </c> > </ajTag> > EOF # <MajTag> <a>aaa</a> <b>bbb</b> <c> <d>ddd</d> </c> </MajTag> でした [ メッセージ編集済み 編集者: MMX 編集日時 2005-10-19 10:58 ] |
|
投稿日時: 2005-10-19 15:18
>要素タグの部分は
>xsl:text 、&lt; 、name() を使って手書きになるでしょう やはりそうですか…。 とれたらベストだったのですが、 回り道して別の方法をとることにします。 できないということを知れてかなりスッキリしました! 大変勉強になりました。 ありがとうございました。 |
|
投稿日時: 2005-10-20 23:56
xmlデータを埋め込みたいのなら
xmlデータアイランド とか microformats の XOXO とか、が考えられます。 属性値ではなく |
|
投稿日時: 2005-10-24 11:44
XSLTにこだわらず、XMLパーサでDOM使うのはダメですか?
MSXMLなら、子要素全てを順番にGetxml()してやるだけです。 |
|
投稿日時: 2005-10-27 11:58
MMXさん、Qleonさん、アドバイス本当に有難うございます。
大変勉強になりました。 結局今回は、XMLを取得する際サーブレットで、 タグの<>を<>に変更し、文字列を取得した後戻す という暫定処置をとりました。 今後多発すると思うので、 教えていただいたことを生かそうとおもいます。 ありがとうございました。 |