
XML勉強中です。実は、XML文書に決められたタグがあって、その中身を探してXSL変換、というのは覚えたのですが、ふと迷ってしまいました。
たとえば、トップレベルにあるタグの名前が不明な場合、エレメントの一覧を取得するにはどうしたら良いのでしょうか?
自分でXMLを記述しておいてそれはないだろと言われそうなのですが、HTMLのための資源としてではなく、データとしての利用を考えたときにふと悩んでしまいました。
<person>
<name> <ID> etc...
</person>
<company>
<name> <adress> <tel>etc...
</company>
このとき、personとcompanyを取得したいのですが・・・。
template match="/" にて value-of select="name(.)" とか一通り試したのですが、出てくれませんでした。
まだはっきりとXSLTの書き方を習得していないので、とてつもなくアホな質問かもしれませんが、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
正しいやり方かどうかわかりませんが、参考まで...
<xsl:template match="/">
<!-- root -->
<xsl:for-each select="./*">
<xsl:value-of select="name()"/><br/>
</xsl:for-each>
<!-- top -->
<xsl:for-each select="./*/*">
<xsl:text> </xsl:text><xsl:value-of select="name()"/><br/>
</xsl:for-each>
<!-- second -->
<xsl:for-each select="./*/*/*">
<xsl:text> </xsl:text><xsl:value-of select="name()"/><br/>
</xsl:for-each>
</xsl:template>
No.2
- 回答日時:
おそらく理由もちゃんと知った方が良いと思うので、他の方の回答の補足のような形になってしまいますが。
/は、あなたが言う所の「トップレベルのエレメント」にではなく、その上に仮想的に存在する「ルートノード」にマッチします。
したがって、取得したい要素は、このルートノードの子ノードということになります。
この理屈を理解いただければ、FlossenEngelさんの回答にあるように一度ルートノードにマッチしたxsl:templateの中でその子ノードを取得しても良いですし、以下のようにxsl:templateのmatchを変更してもOKです。
<xsl:template match="/*">
<xsl:value-of select="name()"/>
</xsl:template>
ちなみに、XSLTでぶつかる問題はXPathを理解しておけば解決することが多いと思いますので、今後ぶつかる問題に対処できるように、XPathについて勉強しておくことをお奨めします。
参考URL:http://www.w3.org/TR/1999/REC-xpath-19991116
あっ、なるほど!一番上にあるもの、ではなくてこれ自体が子ノードなのですね。
どうもノードの指定の方法でつまづいてしまったので、XPathの記法から勉強してみたいと思います。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- 営業・販売・サービス 仕入れの方法 1 2023/05/21 18:55
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript gasについて 1 2022/05/31 21:51
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タグの有無の判定
-
XSLTにてタグ名を取得する方法
-
スタイルシートを使用したXM...
-
XSLTで固定長データファイルを...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
ルート要素ノードが2個ある場合?
-
同じタグ名の項目取得
-
TreeView の初期表示について
-
TreeVIewのノード名を編集する...
-
文字コードの変換について
-
XMLデータを整形して、ブラウザ...
-
SNMP リンクダウンとノードダ...
-
.xml の .html での表示について
-
MSXMLを使ってノードを削除した...
-
昔Winnyってありましたけど、あ...
-
ツリービューのノードをダブル...
-
VBでXMLファイルを作ると xmlns...
-
XMLで要素が記述された順番に意...
-
METAタグのNAME、CONTENT属性の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
xmlのテキストにリンクを張りた...
-
XSLで、XMLの空タグを制御したい。
-
文字列の取得
-
XSLでXMLデータをタブ区切りデ...
-
スタイルシートを使用したXM...
-
htmlに変換されない
-
xml→htmlへの変換&ページ分割...
-
XML → table (XSLで)
-
XMLをXSLを使いHTMLに変換した...
-
XSLTで固定長データファイルを...
-
XSLT変換について
-
XSLスタイルシートを2つ当てる...
-
XSLT
-
XSLTで直下のテキストのみ取得...
-
XSL中の改行、タブを無効にした...
-
XSLTにてタグ名を取得する方法
-
ノードの並び替え
-
javascriptでのxsltの利用に関...
-
xml による表示のしかたについて
おすすめ情報