ConQuery xml plugin
昨日の記事で扱ったConQuery独自の検索plugin(*.cqr)は、.cqrファイルの他にアイコンを別ファイルとして用意する必要が有り(ConQueryにwebからダウンロードさせることも出来るが)、ファイル数が増えて管理が面倒になる。また、Firefox本体の検索には使えないので、必要なら同じサイト用のOpenSearchプラグイン(*.xml)を用意し、ConQueryがその.xmlプラグインを表示しないように設定しなければならず、いよいよ面倒だ。しかし、OpenSearch(もしくはMozSearch)上位互換の"ConQuery xml pulgin"を使えば、一つのファイルだけでConQueryの便利な機能を使いつつ、Firefox本体からは通常のOpenSearch(もしくはMozSearch)プラグインとして使用することができる。
ただし、"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:3/26訂正
下に書いた方法では<cqr:Param>の項目を無視せずクエリに加えてしまうため、Firefox本体からは通常のOpenSearchプラグインとして使用できない(ただし、ここであげるDrWeb.xmlは例外的に使用できる。詳しくは今日の記事で)。名前空間を変えればFirefox本体が無視してくれると思い込み、実際に確かめないまま書いてしまった。<?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の項目をコメントとして残してある。注意点としては、