XPath テスター

XPath 式を XML でテストし、一致したノードをパスと行で確認できます。処理はすべてお使いのブラウザの中で行うため、XML がアップロードされることはありません(プライバシーポリシー(英語))。

XPath テスターはブラウザの中だけで動作するため、JavaScript が必要です。このページのほかの部分は JavaScript なしでも表示できます。代わりに、コマンドラインの xmllint --xpath や、Python の lxml ライブラリを使う方法もあります。

試す:

XML を貼り付けるか、ファイルをドロップするか、サンプルを読み込んでください。ファイルはブラウザの中で読み込まれ、アップロードされることはありません。

結果

XPath 1.0 で、お使いのブラウザが評価します。「入力欄で表示」で、一致した箇所を XML の中で選択できます。

式が選択したノードや値がここに表示されます。

このツールは役に立ちましたか? XMLNest を応援する

評価 5.0/5(3 件)

サンプルの式でフランス語の書籍のタイトルを選び、「Show in input」で XML の中の 1 つを強調表示します。次の //book は何も見つけません。XML にデフォルト名前空間があるためです。提案された //d:book に直すと、4 冊すべてに一致します。 (24 秒、音声なし、英語の画面)

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 は消えます。