XPath 式をテストするには
左側に XML を貼り付けるか、ファイルをドロップします。XPath の欄に式を入力し、Enter か「評価」を押してください。一致したノードごとに、種類、/catalog/book[2]/title のような短いパス、行、内容が表示されます。「入力欄で表示」を押すと、XML の中のそのノードが選択されます。count() などの関数なら、結果は数値として表示されます。「コピー」と「ダウンロード」では結果をテキストで取得できます。「サンプルを読み込む」で書籍カタログを開くと、すぐに試せます。
式が何も返さないのはなぜですか
ほとんどの場合、原因は名前空間です。ルート要素に xmlns="…" があると、接頭辞のない要素はすべてそのデフォルト名前空間に属し、単純な //book は一致しなくなります。このテスターはデフォルト名前空間に接頭辞を付けます。「名前空間」で別の接頭辞を選ばない限り d です。問題を見つけると、直した式も提案します。ほかによくある原因は、名前のつづり間違い(XML は大文字と小文字を区別します)と、属性名の前に付ける @ の書き忘れです。まずはこの 2 点も確認してください。
試せる XPath 式の例
//book/title はすべてのタイトルを返します。//book[@lang='en'] は lang 属性が en の書籍だけを残します。count(//book) は書籍の数を、sum(//price) は価格の合計を返します。//title[contains(., 'Dark')] はある語を含むタイトルを、//book[last()] は最後の書籍を選びます。属性そのものを選ぶには //book/@id と書きます。text() はテキストノードを返し、string() は要素のテキスト全体を返します。
どの XPath のバージョンに対応していますか
すべてのブラウザに組み込まれている XPath 1.0 と、その 27 個の関数です。XPath 2.0 と 3.1 には対応していないため、lower-case()、matches()、if … then … else を使うと、わかりやすいメッセージが表示されます。多くの場合、1.0 での書き方も示します。同じ式は XSLT 1.0 のスタイルシートでも使えるので、XSLT テスターでも試せます。XML に構文エラーがあれば、XML 構文チェッカーと同じように、先にその行を示します。
XML はアップロードされますか
いいえ。式の評価はこのタブの中で行い、このページのセキュリティ設定が通信を止めます。何も保存されず、タブを閉じれば XML は消えます。1 行に詰まった長いファイルを先に読みやすくするなら、XML 整形ツールを使ってください。
よくある質問
XML に book 要素があるのに、//book で何も見つからないのはなぜですか。
XML のルートに xmlns="…" と書かれた、デフォルト名前空間があるためでしょう。XPath 1.0 では、接頭辞のない名前は名前空間のない要素にしか一致しません。このテスターはデフォルト名前空間に接頭辞(初期値は d)を付けるので、//d:book と書いてください。
XPath 2.0 や 3.1 の関数は使えますか。
いいえ。ブラウザに入っているのは XPath 1.0 で、このテスターはブラウザのエンジンを使います。lower-case() や matches() などはわかりやすいメッセージを返し、多くの場合、XPath 1.0 で同じ結果を得る方法も示します。
text() と string() はどう違いますか。
text() は要素の直下にあるテキストノードを選ぶので、結果はノードです。string() は子要素も含めた要素全体のテキストを、1 つの値として返します。
ノードを数えたり、絞り込んだりするには。
count(//item) は数値を返します。//item[contains(@name, 'pro')] は name に pro を含む item を残します。//item[position() <= 3] は最初の 3 つ、//item[last()] は最後の 1 つを選びます。
XML はどのくらいの大きさまで扱えますか。
10 MB までです。一覧には一致した最初の 500 件を表示し、「コピー」や「ダウンロード」ではすべてをテキストで取得できます。
XML はどこかに送信されますか。
いいえ。式はこのタブの中で実行され、このページには通信が許されていません。タブを閉じれば XML は消えます。