KeeperでKeePass 2.xのファイルを読むためのXSLファイルを更新しました

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

KeeperでKeePass 2.xのファイルを読むためのXSLファイルを更新しました

Keeperを使ってKeePass 2.xのデータをiPhoneで読む / LiosK-free Blog

KeePassのエクスポート画面 (File -> Export) を起動したら、↑の図のようにFormatにTransform using XSL Stylesheetを選び、エクスポートするファイル名としてkeeper.txtを指定します。

iPhoneで使っていたKeeperがいつのまにかカスタムフィールドに対応していたので、KeePassファイルのエクスポートに使うXSLスタイルシートを修正しました。

カスタムフィールドのkey-valueペアはJSONオブジェクトの配列として第7カラムに収まる仕様になったようなので、今まではメモ欄にまとめられていたKeePassのカスタムフィールドを一部JSON化して放り込むように改良しました。

XSLスタイルシート

使い方は元記事と同じです。

↑のファイルを適当な名前で保存して (view rawというリンクを右クリックして名前をつけて保存を選ぶ)、KeePassからデータをエクスポートするときにXSL Stylesheetとして指定してあげます。

以前はURLフィールドを含めて6カラムのTSVファイルが出力されていましたが、今回はJSON配列を含む7カラムのTSVファイルが出力されます。

カスタムフィールドの仕様

Keeperのカスタムフィールドは改行を受け付けない仕様になっているので、JSON化してカスタムフィールドに放り込まれるのは改行を含まないカスタムフィールドだけです。改行を含むカスタムフィールドは従来通りメモ欄にまとめられます。それにあわせて、メモ欄のレイアウトを改行ありのフィールドが見やすいように小変更しました。

カスタムフィールドの値は、JSON化するときに\ -> \\, " -> \", <TAB> -> \tのエスケープが自動でされるようになっています。ただし、Keeperのバグで、JSON文字列に\nという文字列が含まれるとカスタムフィールドが取り込まれなくなります(\\nでもダメ; 恐らく、JSONとしてパースする前に\nを改行文字に置き換える内部処理になってる)。\nを特別に処理するようにはなっていないので、カスタムフィールドが取り込まれない場合はまずそこを疑ってください。

仕様変更

エスケープ処理を追加しました。改行文字とタブ文字はTSVとして吐き出される直前にスペース(&#x20;)に置き換わるように変更されています。通常の使い方であれば影響ないはず。

使い勝手

カスタムフィールドが追加されたことでかなり使い勝手がよくなりました。カスタムフィールドを使えないKeePass 1.x系やKeePass X以上の使い勝手。

元々はKeePass系アプリが出揃うまでのつなぎとして使っていたKeeperですが、最近は特に乗り換えの必要性を感じていません。KeePass系のアプリは結構出てきていて、KeePass 2.x系を読み書きできたり、Dropboxと連携したりできるようにはなっていますが、マルチタスクに対応していなかったり、パスワードファイルに対応していないから結局はパスワードファイルを解除したKeePassファイルを用意しなければいけなかったりとで、決定打に欠けます。怪しさ満点だったKeeperの日本語インターフェースもだいぶ改善されたし、決定的なKeePass系アプリが出るまではしばらくこのままでいいかなと。

蛇足

XSLTをメンテナンスするたびに思うけど、XSLTの記述性の悪さはもはや殺人的。ショートカット記法とSCSSとかLESSとかみたいなアプローチが出てこないととてもじゃないと使ってられない。ついでに言うと、標準関数が貧弱すぎてしんどい。JSON文字列のためにたった3文字エスケープするために30行以上も要するとは何事。

最近、XSLTとかXSL-FOとかXFormsとかの話は全然聞かなくなってるから、XMLはデータ記述言語としては優秀だけど手続きとか処理を記述する使い方にはやっぱり向いてなかったってことなのかな?

スポンサーサイト

関連記事

トラックバック URL

http://liosk.blog103.fc2.com/tb.php/214-e8704b8e

トラックバック

コメント

コメントの投稿

お名前
コメント
編集キー
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。