XML/XPath/XPathの書き方

最終更新: 2016-11-22 (火) 10:30:47 (127d)

【注!】■■■■■■■■■■■■■■■■■■■
このページの内容は https://boo-yakinikunotare.ssl-lolipop.jp/orebase2/xml/xpath に移動しました

XMLでの要素の位置特定の記述XPathに関してです
ってか、これってXMLに対するSQLみたいなもんだね。

目次 Edit

全位置 Edit

根元に書くスラッシュ2個は全位置を意味する。全ノードの親ノード集合体と考えるとわかりやすいかな

//

全要素セレクト Edit

全部の位置に対しての全部の要素なので全要素

//*

ルートノードのセレクト Edit

いきなり要素を書くとルートノードからの検索になる

html

子要素の選択 Edit

スラッシュで区切って書きましょう
スラッシュは単なる区切りなんだけど、その後に何も書かないと子要素を選択したという省略形になるので子要素の選択になる

html/body

な感じ

どんどんもぐるなら

html/body/p/a

子孫要素の選択 Edit

スラッシュ2個

html//p

階層の下に複数要素あるんだけど・・・ Edit

複数要素にヒットしています。

同一種の複数要素から1つを特定したいんですけど Edit

xmlの場所で特定する Edit

2番目なら2ね

html/body/p/a[position()=2]

を使えます

XPathでの1番目は1。ゼロじゃない

省略で

html/body/p/a[2]

こうとも書ける。

この2は合致している範囲で2番目にあるやつ全部なので全体での2番目ではない

属性を参考にノードを取得したい Edit

特定の属性値を持つノードを取得する Edit

html/body/hoge[@zokuseiname='ぞくせいの値だよ']

これでJavascriptのgetElementByIdとかprototype.jsのgetElementByClassNameとかもいけますね

特定の属性(not属性値)を持つノードを取得したい Edit

html/body/hoge[@zokuseiname]

属性名だけ指定してやるとそうなる

特定の属性(not属性値)を持たないノードを取得したい Edit

html/body/hoge[not(@zokuseiname)]

これでヒット範囲を反転する。

複合条件でとりたい Edit

え、できるの?

and条件 Edit

これはヒットした中からもう一度ヒットさせるということだから普通に考えて

html/body[@class='hoge'][@type='button']

のような書き方になるね

or条件 Edit

和集合の演算子が

|

らしいのでおそらく

html/body[@class='hoge'][@type='button']|html/body[@class='hoge'][@type='checkbox']

このように記述できるのであろう・・・適当w

テキストノードをとりたい Edit

対応するJavascriptのプロパティならばinnerHTMLとかinnerTextだろうか

html/body/h1[position=1]text()

このように記述できるのだろうか

参考サイト Edit

タグ Edit

Tag: HTML XML XPath 移動済み

リロード   new Edit 凍結 差分 Upload 複製 名前変更   Home Page list Word Search Recent Update バックアップ Referer   Help   最終更新のRSS
Last-modified: 2016-11-22 (火) 10:30:47 (127d)