整形式XML
整形、検証、スカラーXPathの確認に使えるシンプルな請求書XMLです。
XPath 2.0+ Planning
XMLとXPath式、名前空間マッピングを分けて扱う専用ページです。XPath 2.0+ の実行基盤は比較を完了し、現在は公開UIとサンプルケースを先に固めています。
XPath入力
ノード列とスカラー値の両方を見やすく出す前提で設計します。
名前空間対応
prefix 行を明示して default namespace や複数prefix XML を扱います。
実装状況
今回は UI と比較結果までを公開し、実行エンジンは次段階で載せます。
XPath実行は次段階です
今回のパッチでは、xml-formatter を先に実装し、xpath-tester は UI、固定サンプル、評価方式の比較結果までを公開します。実際の XPath 2.0+ 実行は次の導入ステップで有効化します。
先にXMLを整えたい場合
整形や構文確認が先なら、 XMLフォーマッター / バリデーター
XPath 2.0+ 実行はまだ有効化していません
このページでは、入力フォーム、サンプルケース、名前空間の指定方法、結果表示の設計を先に公開しています。エンジン導入が終わり次第、ここに実行結果を表示します。
採用候補
SaxonJS を第一候補として比較を完了しました。
v1で出す範囲
属性抽出、複数一致、文字列・数値・真偽値、名前空間付き問い合わせを固定ケースとして使います。
比較と受け入れ確認で使うXMLはこの4種類に固定します。
整形式XML
整形、検証、スカラーXPathの確認に使えるシンプルな請求書XMLです。
壊れたXML
閉じタグを崩してあり、構文エラーと位置表示の確認に使えます。
デフォルト名前空間
XPathで要素を取る前に prefix の割り当てが必要なXMLです。
複数prefix
SOAP風の複数名前空間XMLで、prefix指定のXPath確認に使えます。
SaxonJS と Saxon/C を同じ評価軸で比較した結果です。
採用候補の結論
XPath 2.0+ の第一候補は SaxonJS にします。ブラウザ完結の方針と相性がよく、ユーザーのXMLをサーバーに送らずに済み、現行のPHPページへ載せやすいためです。
不採用理由
Saxon/C も技術的には有力ですが、PHP拡張とネイティブ実行環境の配備が必要になり、この軽量なPHPサイトには運用負荷が重めです。
| 比較軸 | SaxonJS | Saxon/C |
|---|---|---|
| XPath 2.0+ 対応範囲 | 公式資料上で XPath 3.1 とブラウザ向け直接APIが示されています。 | PHP の XPathProcessor API から XPath 3.1 を扱えます。 |
| 名前空間の扱いやすさ | ブラウザ側で静的コンテキストと prefix マッピングを明示できます。 | PHP統合側で明示的な名前空間APIが揃っています。 |
| このPHPサイトへの組み込みやすさ | 既存のブラウザ主体ツール群と相性がよく、XMLをサーバーに送らずに済みます。 | ページ公開前にサーバー側連携と拡張管理が必要です。 |
| デプロイ難易度 | JSランタイムを配信し、対象ページだけで読み込めば足ります。 | Saxon/C本体とPHPバインディングの配備・保守が必要です。 |
| ライセンス確認事項 | 無償ですがオープンソースではなく、Saxonica Public License を確認する必要があります。 | Saxon/C HE は MPL 2.0 のオープンソースで、PE/EE は商用です。 |
| 応答性能 | 貼り付けXMLの対話用途なら十分です。 | 大きなサーバー側処理では有利そうですが、v1の要件に対しては重めです。 |
導入手順の概略
現環境での前提