オンラインで利用可能な、XPath式の作成を補助するGUI型のエディタです。Microsoft Officeには数式エディタというものが付属していますが、それのXPath版みたいなものです。まあとりあえず使ってみてくださいな。
構成ファイルは以下の通りです。
Mozilla Suite/Mozilla Firefox、Netscape 7以降など、レンダリングにGeckoエンジンを使用するブラウザで利用できます。
XPath(邦訳)は、XSLTなどでXMLのノードを指定するためのパス表現を記述する言語です。DOM3 XPathと組み合わせると、効率よくXMLを処理する上で役立ちます。
例えば、「abbr要素とacronym要素でtitle属性が指定されているものに対して処理を行いたい」というニーズに対して、DOM Coreでは以下のように処理することになります。
var nodes = [
document.getElementsByTagName('abbr'),
document.getElementsByTagName('acronym')
];
for (var i = 0; i < nodes.length; i++)
for (var j = 0; j < nodes[i].length; j++)
if (nodes[i][j].hasAttribute('title'))
doSomeOperation(nodes[i][j]);
これだと、二重ループを回さなくてはなりません。また、属性があるかどうかといったチェックも行う必要があります。
XPathを使うと、先の文はこう書けます。
var result = document.evaluate(
'(/descendant::abbr[@title] | /descendant::acronym[@title])',
document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null
);
for (var i = 0; i < result.snapshotLength; i++)
doSomeOperation(result.snapshotItem(i));
こうすると、いきなり「条件を満たしているノードのリスト」を取得することができるため、二重ループも必要ありませんし、各ノードに対する条件判断も必要ありません。結果として、制御構造の部分をスッキリさせることができますので、メンテナンス性の向上などの作用が期待できます。
以上の二点が、このアプリケーションの一番の存在意義らしい特徴だと、僕は思っています。
前者は、このアプリケーションを作るにあたっての直接的な動機になっています。
XPathは、書き方を覚えなければ書けません。「書き方」とはすなわち、「構文」と「語彙」です。構文は比較的容易に覚えられるかとは思いますが、軸の指定やノードテスト、関数名などの語彙は、実際に使い始めてみなければなかなか覚えるのが大変なのではないでしょうか。というか僕は記憶力が無いので覚えられなくて挫折しかけました。
後者は、このアプリケーションの開発を継続する中で、XPath式を多用するようになって気付いたことです。
and/orなどの演算子や関数を多用した長い式を書こうと思うと、自然と括弧同士の入れ子が多くなり、うっかり閉じ括弧を忘れてしまっただとか、そのようなミスを犯してしまうことがあります。その点、機械生成なら、括弧の対応関係を間違えることはまずありません。
これらの点で困っていない人にとっては、このXPath式エディタは無意味だと思います。
XPath式エディタ(1.0)と比較して、以下の点で異なります。
ローカルで使用する場合、構成ファイル群をダウンロードしてすべて同じフォルダに置いて、xpath.xulをブラウザウィンドウにドラッグ&ドロップしてください。リモートで使用する場合、前述のファイル群をどこか適当なところにアップロードして、xpath.xulにアクセスしてください。
Mozilla/Firefoxのテーマによってはボタンが消えたりすることがあるようです。とりあえずFirefoxのデフォルトのテーマでは正しく動作することを確認済みです。
ボタンをクリックしたり、アイテム上で右クリックしたり、アイテムをドラッグしたりしてみてください。Ctrl-クリック(またはShift-クリック)で複数アイテムを選択できます。
画面下のパレットから、アイテムを上のエディタ領域にドラッグ&ドロップすると、アイテムを追加できます。また、アクティブなアイテムの下に表示される「続きを入力」などのボタンからもアイテムを追加できます。
MPL 1.1とします。ライセンスの許容する範囲内で、改変・再配布等ご自由にどうぞ。