XPath式をテストする方法
- XMLを貼り付けるか、ファイルを開くか、商品カタログのサンプルを使います。
- XPath式を入力するか、例のいずれかをクリックします。結果は入力に合わせて更新され、Enterキーを押すとすぐに評価されます。
- 結果を確認します。一致したノードの数とその種類・内容、または式が返す数値・文字列・真偽値が表示されます。
XPathの書き方早見表(チートシート)
| 式 | 選択されるもの |
|---|---|
/catalog | ルート要素catalog |
//product | 任意の階層にあるすべてのproduct要素 |
/catalog/product/name | ルートから順にたどった各商品のname |
//product/@id | すべての商品のid属性 |
//product[@category='books'] | category属性がbooksの商品 |
//product[price > 20] | 価格が20を超える商品(数値として比較) |
//product[contains(name, 'USB')] | 名前に「USB」を含む商品(大文字・小文字を区別) |
//product[not(tags)] | 子要素tagsを持たない商品 |
(//product)[1] | 文書内の最初の商品 |
//product[1] | 各親要素内の最初の商品 |
//product[last()] | 各親要素内の最後の商品 |
//name/text() | name内のテキストノード |
//price/.. | 各priceの親要素 |
//*[local-name()='product'] | 名前空間を問わないすべてのproduct要素 |
count(//product) | 商品の数 |
sum(//price) | すべての価格の合計 |
string(//product[1]/name) | 最初の商品名(文字列として) |
XPathでの名前空間の扱い
XPath 1.0にはデフォルト名前空間がありません。サイトマップやNF-eの請求書のようにxmlns="…"を持つ文書では、要素がその名前空間に属しているため、//urlでは何も見つかりません。そこでこのツールでは、デフォルト名前空間をプレフィックスx:(xがすでに使われている場合はd:)に割り当てているため、//x:url/x:locのように書けます。CFDIの請求書のcfdi:のように文書内で宣言されたプレフィックスは、そのまま使用できます。名前空間を設定できないツールでは、//*[local-name()='url']と書けばどこでも動作します。
よくある質問
どのバージョンのXPathに対応していますか?
すべてのブラウザとほとんどのXMLライブラリに組み込まれているXPath 1.0に対応しています。matches()、lower-case()、string-join()など、XPath 2.0以降の関数は使用できません。
XPathで何も返ってこないのはなぜですか?
よくある原因は、デフォルト名前空間(例の下に表示されるx:プレフィックスを使ってください)、大文字・小文字の違い(XPathは大文字と小文字を区別します)、そして位置の指定(0ではなく1から始まります)です。
結果は何件まで表示されますか?
一致したものはすべてカウントされ、最初の500件がノードの種類と内容とともに一覧表示されます。
XMLはアップロードされますか?
いいえ。XMLの解析とクエリの実行はブラウザ内で行われます。当サイトのサーバーを経由するのは、URLから読み込む場合のみです。