ConQuery xml plugin

昨日の記事で扱ったConQuery独自の検索plugin(*.cqr)は、.cqrファイルの他にアイコンを別ファイルとして用意する必要が有り(ConQueryにwebからダウンロードさせることも出来るが)、ファイル数が増えて管理が面倒になる。また、Firefox本体の検索には使えないので、必要なら同じサイト用のOpenSearchプラグイン(*.xml)を用意し、ConQueryがその.xmlプラグインを表示しないように設定しなければならず、いよいよ面倒だ。しかし、OpenSearch(もしくはMozSearch)上位互換の"ConQuery xml pulgin"を使えば、一つのファイルだけでConQueryの便利な機能を使いつつ、Firefox本体からは通常のOpenSearch(もしくはMozSearch)プラグインとして使用することができる。

3/26訂正
下に書いた方法では<cqr:Param>の項目を無視せずクエリに加えてしまうため、Firefox本体からは通常のOpenSearchプラグインとして使用できない(ただし、ここであげるDrWeb.xmlは例外的に使用できる。詳しくは今日の記事で)。名前空間を変えればFirefox本体が無視してくれると思い込み、実際に確かめないまま書いてしまった。
ただし、"ConQuery xml pulgin"の解説はFirefox 2.0がリリースされてから今までずっと"docs coming soon"であり、自分でソースコードを眺めて推測するしかない。ConQueryのソースコードを調べてみると、xmlプラグインをパースしているのは、cqrParserFactory.jsというファイルのようだ。(すでにConQueryをインストールしているなら、アドレスバーにchrome://conquery/content/cqrParserFactory.jsと打ち込むことでコードを表示する事が出来る。)conquery plugindocsと見比べてみると、.cqrプラグインの<SEARCH> tagのパラメータのほとんどすべてがサポートされ(actionはtemplateに置き換える)、新たに"referrer"がサポートされていることがわかった。そこで昨日のDrWeb.cqrをDrWeb.xmlに書き換えてみた。 DrWeb.xml:
<?xml version="1.0"  encoding="UTF-8"?>
<!-- <SEARCH -->
<!--    version = "1.0" -->
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
                       xmlns:moz="http://www.mozilla.org/2006/browser/search/"
                       xmlns:cqr="http://geek.net.ru/en/opensource/conquery/">
<!--   name="Dr.Web" -->
<ShortName>Dr.Web</ShortName>
<!--   description="Dr.Web online virus scan" -->
<Description>Dr.Web online virus scan</Description>
<!--   queryCharset="utf-8" -->
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16">
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAApFJREFUOI2lkz9oU1EUxn+57/b0mdTmnzFC1BrE+qcioh1EHIoIigoODiJOIroI4uBQcXMSHHQTFHFwUcTJRRxERBxEqqViDSoSSoghtsa0vLxc77t1eG0cHbzLuefAud/38X03sWZNZpH/OBpg/7Vib6AUOPfvCvB8vBE/oBQoDxbmDb/rCawyZIdS0GcgEpwyBHWPbhCSyvpIIUJFEgMaY3voyaRQeRow99Wi+0BFgvIg6Q0w3wqZuh8gWtDIXwkiGo1QfTtLcWQlu86kmX48z/STX9ReWpyz5EaElSXN6JkCbrBD82MCKVqsBW2MxXmG2htL9dlPUhscmw5mmLg9x+aTabRKUH3VZjCbpFmd59u9BcTzGbtSROs22vc1JjIMH8jilwxaCUrDxRunef+wQWmoxL7zLabaL0j7/RSGk3S6BouJJTgH1ZddZqc6KG0pH05SeRBy9PJuxsd3MlOdYdXqHHeOP2LP2dV8eTGH+QGtze6vjUM7MrigzaZDadq1iKDZ5u6dW4SnTtGcnaVSqWADR/N7my1HBql/Csmv86k+X4hdUPkOQzsHeH29SX1ygcxGn+nKNM1GE+csk5Pv0KLRyufNzRbah8x6D2MsatkFvWqRsGP59V6z/cQAknFUPn/FWsVMbYbRc3naNYMNLdl8CheBiF5iEAn0G8YurCUIQrrWsPdSAb3tO630FPuvFkmWDY0Jw9YTOZIbTC8LSkRjWRrkO4yeyzP3waH7ISx9o5GZRKUMYd2jtMunNNqHigTnGYyxcQ7EEywGF8FgGbp9CgATGcQTiITO7w7lYx4uimMPSxKWGcSWxLQKa1fEGj3pLeRLK3rIAC4CYyyJXG5gUUTHiEv/QkT/877c/wHybi8FN2HcTgAAAABJRU5ErkJggg==
</Image>
<!--   showif="((https?|ftp):\/\/[^\s]*)" -->
<cqr:showif>((https?|ftp):\/\/[^\s]*)</cqr:showif>
<!--   showiftarget="[:linkurl]	[:selection]" -->
<cqr:showiftarget>[:linkurl]	[:selection]</cqr:showiftarget>
<!--   method="POST" -->
<!--   action="http://online.drweb.com/result"  -->
<Url type="text/html" method="POST" template="http://online.drweb.com/result">
<cqr:Param name="url" value="[:prompt][:matched:1]" label="Edit url"/>
<cqr:Param name="url" value="[:url]" label="This page"/>
<Param name="url" value="{searchTerms}"/>
<Param name="lng" value="jp"/>
</Url>
<moz:SearchForm>http://online.drweb.com</moz:SearchForm>
<!-- > -->
</OpenSearchDescription>
.cqrと.xmlの対応を示すため、.cqrの項目をコメントとして残してある。注意点としては、
  • ConQuery xml pluginの名前空間"http://geek.net.ru/en/opensource/conquery/"
  • もしFirefox本体の検索プラグインとして使わない場合は、"OpenSearchDescription"を"ConQueryPlugin"に変更する。