既定の名前空間に別名を付ける
xmlns="urn:books"がある文書には{"b":"urn:books"}を設定し、//b:bookを使います。//bookは名前空間のない要素だけを選びます。
XMLツール
ボタンまたはCtrl/Cmd+Enterで評価します。入力、対応表、表示方法を変えたら再実行してください。
XMLと式はこのブラウザーで処理し、文書をサーバーへ送信しません。
ASCII接頭辞を使います。例:{"b":"urn:books"}。原文と同じ接頭辞でなくても構いません。
XPath 1.0。Ctrl/Cmd+Enterで手動実行します。JSONのスカラー値は文字列にしてNaNとInfinityを保持します。
結果が古くなりました。書き出すには再評価してください。
XPathテスターは、サンプルで動いた式が実際のXMLで一致しなくなったときに役立ちます。既定の名前空間、属性条件、子孫の位置を分けて調べると原因を絞れます。
XML名前空間を含むXPath式を原文のまま評価します。XPathでノードを取得した結果と文字列値を比較でき、整形で空白が消えた文書を誤って検証することもありません。
XPathテスターでは同じ二つのtitle要素を、ノード断片、テキスト値、絶対パスで比較できます。表示方法を変更しても入力文書は書き換えません。
bをurn:booksに割り当てれば、原文が別の接頭辞を使っていても//b:bookで選べます。ローカル名が同じでも、異なる名前空間の要素は別物です。
xmlns="urn:books"がある文書には{"b":"urn:books"}を設定し、//b:bookを使います。//bookは名前空間のない要素だけを選びます。
テキスト表示は選択した要素の子孫も含めた文字列値です。//title/text()は直接のテキストノードを選ぶため、混在内容では結果が異なります。
XML、式、対応表、表示方法を変えると書き出しを無効化します。再評価の成功後に保存してください。表示は50件ずつ増え、コピーと保存には成功結果の全件が入ります。
ノード集合のほか、string(//title)、count(//book)、boolean(//missing)も評価できます。JSONには型を記録し、値は文字列として保存するため、NaNやInfinityがnullに変わりません。
//book[@id="b1"]で要素を絞り、//@idで属性を取得し、//book[price>15]/titleで数値条件を試せます。一致が0件でも正常終了し、valuesは空配列になります。
同名の兄弟には位置番号を付けます。名前空間付き要素ではlocal-name()とnamespace-uri()を使うため、接頭辞の対応表に依存しません。文書構造を変えると位置も変わる場合があります。
ブラウザー標準のXPath 1.0エンジンです。XPath 2.0以降のmatches()などは使えません。高いバージョンの式が失敗しても、XMLの誤りとは限りません。
はい。string(//title)、count(//book)、boolean(//book)を試せます。型と文字列値をJSONに記録し、false、空文字列、NaNも正常な結果として扱います。
//book[@id="b1"]は属性で要素を絞ります。//book/@idは属性値を取り出します。属性名は大文字小文字を区別し、無接頭辞の属性は既定の名前空間を継承しません。
/は直接の次のステップ、//はその場所から子孫を検索します。/library/bookはルートからたどり、//bookは文書内の深い位置にも一致します。
XMLの既定の名前空間は無接頭辞要素に適用されますが、XPath 1.0の無接頭辞名には適用されません。URIに別名を割り当て、式でその別名を使ってください。
予期しない結果が出ましたか?