XPath テスター
XML または HTML ドキュメント
最大100万文字の XML または HTML を貼り付けてください。評価はこのブラウザ内で XPath 1.0 により行われます。
絶対または相対の XPath 1.0 式。ドキュメントで宣言されたプレフィックスは自動的に登録されます。デフォルト名前空間はプレフィックス d で参照できます。
スクレイピングや XSLT 向けの XPath は、その場で試せるサンドボックスがないと当て推量と確認の繰り返しになりがちです。このテスターは、一方のペインに XML または HTML を、もう一方に式を受け取り、ブラウザ自身のエンジンで XPath 1.0 を評価して、一致したすべてのノードを種類、属性、テキスト内容、シリアライズされたマークアップとともに一覧表示します。count(//book) のようなスカラー式は値を直接返し、ドキュメントで宣言された名前空間プレフィックスは自動的に登録されます。すべてブラウザ内で実行され、ドキュメントがアップロードされることはありません。
XPath 式のテスト方法
-
1
XML または HTML を貼り付ける
自動検出は、HTML の doctype やルート要素を見つけると寛容な HTML 解析に切り替わります。XML モードまたは HTML モードを強制することもできます。
-
2
XPath を入力する
`/library/book` のような絶対形式でも `//div[@class='card']` のような相対形式でも、XPath 1.0 の式なら何でも使えます。
-
3
評価する
ブラウザ自身の XPath エンジンがクエリをローカルで実行します。サーバーには何も送信されません。
-
4
結果を確認する
一致ごとにノードの種類、属性、前後の空白を除いたテキスト、シリアライズされたマークアップが表示されます。一覧表示は最大200件までです。
XPath 1.0 の基本
| 式 | 一致する対象 |
|---|---|
/books/book |
ルート <books> の子である <book> |
//book |
ドキュメント内のあらゆる場所の <book> |
//book[@id='42'] |
id 属性が 42 の <book> |
//book[1] |
各親の中で最初の <book>(ドキュメント全体ではない) |
(//book)[1] |
ドキュメント全体で最初の <book> |
//book[title='1984'] |
<title> のテキストが「1984」の <book> |
//book/@id |
すべての <book> 要素の id 属性 |
//book[position() > 1] |
最初のものを除くすべての <book> |
//book[last()] |
親ごとに最後の <book> |
スカラー式も使えます。count(//book) は数値を、string(//title) は文字列を、boolean(//book[@id]) は true または false を返します。テスターはこれらの値を、ノード一覧の代わりにそのまま表示します。
child 以外の主な軸
ancestor::、すべての祖先following-sibling::、現在のノードより後の兄弟preceding-sibling::、現在のノードより前の兄弟descendant::、すべての子孫attribute::(短縮形@)、現在のノードの属性parent::(短縮形..)、親要素
HTML の癖
HTML は厳密な XML ではないため、このテスターは厳密な XML パーサーではなく、ブラウザの HTML パーサーで寛容に解析します。HTML モードは <!DOCTYPE html> または <html> ルートから自動検出され、セレクターでどちらかのモードを強制することもできます。HTML モードではタグ名と属性名が小文字化されるので、XPath は小文字で書いてください。//DIV[@CLASS] ではなく //div[@class] です。
名前空間
名前空間を含む XML には、プレフィックスの登録が必要です:
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/">
<item>
<content:encoded>...</content:encoded>
</item>
</rss>
このテスターはドキュメント内の xmlns 宣言をスキャンしてすべてのプレフィックスを自動登録するため、//content:encoded はそのまま動きます。デフォルト名前空間(プレフィックスなしの xmlns="...")はドキュメント内にプレフィックスを持たないため、テスターはこれをプレフィックス d に割り当てます。デフォルト名前空間のフィードにある <item> は //d:item で選択できます。登録済みのバインディングは結果の横に一覧表示されます。
このテスターが評価しないもの
ブラウザが評価するのは XPath 1.0 で、ほとんどのスクレイピングスタックが使うのと同じ方言です。matches(string, regex)、tokenize(string, delimiter)、for ... return 式、シーケンス演算子といった XPath 2.0 以降の機能は含まれません。これらは XSLT 2.0/3.0 のツールチェーンで利用できます。Web スクレイピングでは、XPath 1.0 が今も最もポータブルな選択肢です。
テストのコツ
- 広く始めて絞り込む。 まず
//div、次に//div[@class]、最後に具体的なクラス値を指定します。 - 名前空間の宣言を確認する。 「XPath が何も返さないのはなぜ?」というバグの多くは名前空間が原因です。登録済みプレフィックスの一覧を確認してください。
- 大文字と小文字に注意する。 XML は大文字と小文字を区別します。HTML モードでは名前が小文字化されます。
- テキスト抽出では string() を試す。
//p/text()とstring(//p)は、入れ子のマークアップがあると結果が異なります。
よくある質問
いいえ、XPath のみです。ほとんどのブラウザは document.querySelectorAll(CSS)と document.evaluate(XPath)の両方をサポートしています。タスクにとって分かりやすい方を使ってください。
HTML の解析ではタグ名と属性名が小文字化されます。XPath が小文字になっているか確認してください。//DIV[@CLASS] ではなく //div[@class] です。モードも確認してください。崩れた HTML に XML モードを強制すると解析エラーで失敗しますが、HTML モードなら寛容に解析できます。
ドキュメントで宣言されたプレフィックスは、式で使えるように自動的に登録されます。デフォルト名前空間はプレフィックス d に割り当てられるため、デフォルト名前空間のドキュメントでは //d:item で <item> 要素を選択できます。有効なバインディングは結果と併せて一覧表示されます。
いいえ。ドキュメントと式はブラウザ自身の XPath エンジンで評価され、当社のサーバーに送信されず、保存されず、ページのアドレスに追加されることもありません。複数ステップの画面で結果を表示するために、このブラウザのセッション内にだけ保持されます。
関連ツール
BinaryからHexへのコンバーター
バイナリ入力を大文字の16進数値に変換します。0と1以外は無視され、先頭の0は保持されません。
バイナリからASCIIへの変換ツール
バイナリ(スペース区切りのバイト、または長いビット列)を貼り付けると、それが表すASCIIテキストを8ビットずつ復号して取得できます。
FPS カウンター
requestAnimationFrame でブラウザーの FPS を測定。平滑化、最小・最大フレームレート、警告しきい値、任意のグラフに対応。ローカルで動作し、アップロードも API も不要です。
カラーパレットジェネレーター
基準のHEXカラーから、モノクロマティック、類似色、補色、トライアド、テトラードのパレットを生成し、コピーしやすいCSS変数として書き出します。
ランダムカラーパレットジェネレーター
2〜15色のランダムなカラーパレットを生成し、ビビッド、パステル、ミュート、ダークからスタイルを選んで、HEXコードやCSS変数をコピーできます。
2進数から10進数へ変換
2進数を10進数に、または10進数を2進数に、瞬時に変換します。数字を1つ貼り付けて結果を読み取るだけです。