WorkFlowyのExportのOPML形式をHTMLなどに変換する

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング

WorkFlowyを便利に使っています

最近WorkFlowyを使い始めて、いろいろ便利になっています。

 

ちょっとしたメモとかTODOとか、

実行したら「COMPLETE」ということで、

横線がつくので、確認もしやすいです。

ブログ原稿にも使っています

ブログを書くにあたって、いろいろと構成を考えたりする必要があります。

 

WorkFlowyは、シンプルなアウトラインプロセッサなので、

トピックの移動なども気軽にできます。

問題は、アウトプット

ひととおりブログ原稿を書いたあと、Exportで出力するわけですが、

ブログ用とするなら、HTMLタグが付いている必要があります。

Exportの種類は3種類

Formatted

実際に使用しているWorkFlowyの見た目と

同じようなフォーマットです。

 

Evernoteにコピペしたところ、同じようにできました。

Plain text

単純に、テキストのスペース(ブランク)を使って階層化しています。

OPML

アウトラインプロセッサ用のXML形式のフォーマットです。

ブログ用に変換するにはOPMLを使用

というわけで、変換用のツールをネットで探してみました。

 

WorkflowyのOPML出力テキストをブログ原稿テキストに変換するツールを追加 (Miyota-0.6.0)

Javaで作成されているようです。

 

WF2HTMLのirodrawさん専用バージョンWFtoHTML irodrawEdithion
AppleScriptだそうです。

XSLTを使えばいいかも?

OPMLはXMLのアウトラインプロセッサ版です。

 

XMLなので、XSLTという、HTMLならCSSがあるように、

体裁を整える仕組みがあります。

 

●参考サイト
XSLTスタイルシートの基礎の基礎

 

ネットで調べましたが、なんだか難しそうでした。

 

もしXSLTが使えるなら、プログラム言語に関係なく、

XMLデータの加工ができます。

結局、自作しました。

個人的には、HタグとPタグが付いてくれればいいレベルなので、

自分で作ることにしました。

 

以前、アマゾン検索システムを自作したときに、

アマゾンから取得したXMLデータを加工して表示したことがあるので、

プログラムを作ることにしました。

 

アマゾン検索システム

WorkFlowyのOPMLは、単純明快

ネットで検索すると、RSSリーダーでも、OPMLが使えるそうです。

 

それを利用すると、一気にまとめてRSSリーダーに登録できるそうです。

 

そのOPMLですが、outlineタグの中に、type,text,title,xmlUrlなどがあります。

 

それに対して、WorkFlowyの場合は、textだけのようです。

あとは、outlineタグが階層化されています。

階層化されているデータを取得するには?

PCではフォルダと同じような感じですが、

最初の階層のデータを取得する方法と、

その下の階層のデータを取得する方法は、同じです。

 

同じということは、同じ関数が使えます。

 

そして、その関数内で、自分自身の関数を呼び出すという、

再帰的なことができます。

 

作ってみるとシンプルな関数となりますが、

無限ループにならないように注意する必要があります。

 

以下が関数です。

 

<!---=================================================================
xmlConv
==================================================================--->
<cffunction name="xmlConv" access="public" returnType="string" output="yes">
    <cfargument name="xml"  type="xml"     required="yes">
    <cfargument name="path" type="string"  required="yes">
    <cfargument name="no"   type="numeric" required="yes">

    <cfset var sData = "">
    <cfset var aryXmlDoc = XmlSearch(arguments.xml, arguments.path)>

    <cfloop index="idx" array="#aryXmlDoc#">
        <cfif ArrayLen(idx.XmlChildren) eq 0>
            <cfif form.p eq 1>
                <cfset sData = sData & "#idx.XmlAttributes.text##request.CRLF##request.CRLF#">
            <cfelse>
                <cfset sData = sData & "<p>#idx.XmlAttributes.text#</p>#request.CRLF#">
            </cfif>
        <cfelse>
            <cfset sData = sData & "#request.CRLF#<h#arguments.no#>#idx.XmlAttributes.text#</h#arguments.no#>#request.CRLF#">
            <cfset sData = sData & xmlConv(idx, "outline",arguments.no + 1)>
        </cfif>
    </cfloop>

    <cfreturn sData>
</cffunction>

XMLデータの加工方法

XMLデータを加工するためには、

実際にどんなデータがあるか確認しながらやっています。

 

デバッグしながらの開発ですね。

 

ちなみにColdFusionでは、

cfdumpタグという変数の中身が見やすく表示されるので、

とても便利です。

 

今回のデモデータをcfdumpタグで画面に表示すると、

以下のように表示されます。

 

cfdump

プログラムができました

こちらがWebアプリとなっています。

 

個人的には、ブログは、「はてな」と「WordPress」を使っています。

 

pタグありとなしで使い分けてみてください。

 

あまり凝ったことはしていないので、

「Hタグ、Pタグがついてくれるので、ちょっとは便利だな~」

ぐらいで、使ってみてくださいね。

 

WorkFlowyのExportのOPML形式をHTMLなどに変換する

 


WorkFlowyで、週にまとめてTODOなど作るのに便利かも。
指定した回数分の日付や回数がついた文字列を生成する方法

 

 

追記)2015/10/22
目次が表示されるプラグインを使っていましたが、

「表示されないのは、なぜ?」と思っていたところ、

Hタグが大文字だったからでした。

プログラムを小文字のhに修正しました。

  • このエントリーをはてなブックマークに追加
  • 人気ブログランキング
最近の投稿
カテゴリー
タグ
アーカイブ
プロフィール