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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タグの有無の判定
-
スタイルシートを使用したXM...
-
xslでの最小値、最大値の取得
-
xsl:param要素をxsl:templateの...
-
XMLでの表示について
-
CPUの考え方を教えてください ...
-
ルート要素ノードが2個ある場合?
-
VBSでxmlの値を書き換えたい
-
複数のマックPCによる数値計算...
-
Excel-VBAでXMLの複数ノードの...
-
動的な構造体配列の初期化
-
VBSでXMLを読込、検索結果をテ...
-
特殊記号が勝手にエスケープさ...
-
XMLで要素が記述された順番に意...
-
XMLファイルの作り方がわかりま...
-
SNMP リンクダウンとノードダ...
-
同じタグ名の項目取得
-
XML同じ名前の要素を自動で集約...
-
XML、XSLTの適応エラー(IEから...
-
excelにてweb関数を使い、webデ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
うまく表示されない
-
XSLTにてタグ名を取得する方法
-
XSLで、XMLの空タグを制御したい。
-
xslでの最小値、最大値の取得
-
htmlに変換されない
-
ノードの並び替え
-
スタイルシートを使用したXM...
-
xmlのテキストにリンクを張りた...
-
XSLTで固定長データファイルを...
-
XMLのHTMLへの変換 (初心者)
-
XMLをXSLを使いHTMLに変換した...
-
XSL内でJavaScriptを記述し、Ja...
-
XMLとXSLTでリンクを張る方法
-
xsl:variableでの抽出条件の変更
-
XMLからHTMLへの変換方法について
-
javaのTransformerでエラー
-
yahoo API ASP.NETで表示させる...
-
XSL(異なるノードからエレメン...
-
XML,XSL,JavaScriptの連携
おすすめ情報