LoginSignup
18
21

More than 5 years have passed since last update.

dokuwiki と markdown を相互に変換する

Last updated at Posted at 2016-12-07

dokuwiki と markdown を相互に変換する

TL;DR

$ curl https://www.dokuwiki.org/wiki:syntax\?do=export_xhtmlbody | pandoc -f html -t markdown_github -o test.md

モチベーション

自分用のドキュメントを dokuwiki で書いているが、Qiita などで外部に公開したいときには dokuwiki 記法ではなくデファクトな markdown 記法の文書を手に入れる必要がある。

dokuwiki を使いつつ markdown 記法の文書を手に入れる手段としては以下のものが考えられる。

  1. そもそも dokuwiki で markdown を使う。

  2. dokuwiki 記法を markdown 記法に変換する。

1つめについては、 DokuWiki+Markdowkuの感想 - Qiita にある通り、Markdowku というプラグインを使えば可能だが、dokuwiki と markdown の混合になってしまうことや、dokuwiki 独特のリンク記法はそのまま(っぽい)という問題がある。これでは外部で markdown として利用はできない。

そこで、2つめの手法を採用したい。 文書の記法変換は Pandoc が主流なので、これを用いる。

Pandoc

Pandoc については 多様なフォーマットに対応!ドキュメント変換ツールPandocを知ろう - Qiita が詳しい。

以下は Pandoc の導入と、dokuwiki の導入が済んでいるものとする。

markdown → dokuwiki

Pandoc ではデフォルトで markdown 記法を dokuwiki 記法に変換できるので、これを用いれば良い。楽ちん。

$ pandoc -f markdown(_github) -t dokuwiki

出力されるものをコピペすれば dokuwiki に転載が簡単。 (ファイルとして保存したかったら -o output.txt などのオプションを付ければOK。)

dokuwiki → markdown

残念ながら、Pandoc では input として dokuwiki 記法はサポートされていない。(僕は Haskell 不得手なので誰か作ってください。) そこで、やや遠回りなようだが、 dokuwikiからhtmlを取得 → htmlをmarkdownに変換 という手段を取る。

dokuwikiからhtmlを取得する方法だが、ほしいのは body の内容だけで、 <html> タグの中身とかはいらない。そんな時向けに dokuwiki はオプションを用意している。 export [DokuWiki] にある通り、ページのURLの末尾に ?do=export_xhtmlbody をつければ良い。 なので、これを curl で取得して pandoc に通せば、html として入力できる。

具体的に言うと、変換したいページの URL が http://dokuwiki.example.com/doku.php/wiki/example であるとき

$ curl -u <user>:<password> http://dokuwiki.example.com/doku.php/wiki/example\?do\=export_xhtmlbody | pandoc -f html -t markdown_github

とすれば github markdown 形式で出力される。形式をただの markdown にしていないのは、単純にこのほうが求める形に近かったからであり、raw markdown が欲しい人は -t markdown とすれば良い。

なお、-u <user>:<password> をつけているのは認証のためである。

ファイルに保存したい場合は先程同様 -o output.md オプションを付ける。

これで markdown 形式で取得できたので、あとは好きにしてください。

実例

この記事も dokuwiki で書いて markdown にして qiita に投稿しているので、この記事の上までの部分を実例として、どう変換されるのか記しておく。

dokuwiki 版

====== dokuwiki と markdown を相互に変換する ======

===== モチベーション =====
自分用のドキュメントを dokuwiki で書いているが、Qiita などで外部に公開したいときには dokuwiki 記法ではなくデファクトな markdown 記法の文書を手に入れる必要がある。

dokuwiki を使いつつ markdown 記法の文書を手に入れる手段としては以下のものが考えられる。

  - そもそも dokuwiki で markdown を使う。
  - dokuwiki 記法を markdown 記法に変換する。

1つめについては、 [[http://qiita.com/kuwa72/items/9193d91775a0b535a58a | DokuWiki+Markdowkuの感想 - Qiita]] にある通り、Markdowku というプラグインを使えば可能だが、dokuwiki と markdown の混合になってしまうことや、dokuwiki 独特のリンク記法はそのまま(っぽい)という問題がある。これでは外部で markdown として利用はできない。

そこで、2つめの手法を採用したい。
文書の記法変換は Pandoc が主流なので、これを用いる。

===== Pandoc =====
Pandoc については [[http://qiita.com/sky_y/items/80bcd0f353ef5b8980ee | 多様なフォーマットに対応!ドキュメント変換ツールPandocを知ろう - Qiita ]] が詳しい。

以下は Pandoc の導入と、dokuwiki の導入が済んでいるものとする。

==== markdown → dokuwiki ====
Pandoc ではデフォルトで markdown 記法を dokuwiki 記法に変換できるので、これを用いれば良い。楽ちん。

<code bash>
$ pandoc -f markdown(_github) -t pandoc
</code>

出力されるものをコピペすれば dokuwiki に転載が簡単。
(ファイルとして保存したかったら ''-o output.txt'' などのオプションを付ければOK。)

==== dokuwiki → markdown ====
残念ながら、Pandoc では input として dokuwiki 記法はサポートされていない。(僕は Haskell 不得手なので誰か作ってください。)
そこで、やや遠回りなようだが、  **dokuwikiからhtmlを取得 → htmlをmarkdownに変換 ** という手段を取る。

dokuwikiからhtmlを取得する方法だが、ほしいのは body の内容だけで、 ''<html>'' タグの中身とかはいらない。そんな時向けに dokuwiki はオプションを用意している。
[[https://www.dokuwiki.org/export | export [DokuWiki] ]] にある通り、ページのURLの末尾に ''?do=export_xhtmlbody'' をつければ良い。
なので、これを curl で取得して pandoc に通せば、html として入力できる。

具体的に言うと、変換したいページの URL が http://dokuwiki.example.com/doku.php/wiki/example であるとき

<code bash>
$ curl -u <user>:<password> http://dokuwiki.example.com/doku.php/wiki/example\?do\=export_xhtmlbody | pandoc -f html -t markdown_github
</code>

とすれば github markdown 形式で出力される。形式をただの markdown にしていないのは、単純にこのほうが求める形に近かったからであり、raw markdown が欲しい人は ''-t markdown'' とすれば良い。

なお、''-u <user>:<password>'' をつけているのは認証のためである。

ファイルに保存したい場合は先程同様 ''-o output.md'' オプションを付ける。

これで markdown 形式で取得できたので、あとは好きにしてください。

markdown 版
(ただし、``` がqiitaでは閉じタグと判断されてしまうため、 \``` と筆者が手動でエスケープしている。)

dokuwiki と markdown を相互に変換する
=====================================

モチベーション
--------------

自分用のドキュメントを dokuwiki で書いているが、Qiita などで外部に公開したいときには dokuwiki 記法ではなくデファクトな markdown 記法の文書を手に入れる必要がある。

dokuwiki を使いつつ markdown 記法の文書を手に入れる手段としては以下のものが考えられる。

1.  そもそも dokuwiki で markdown を使う。

2.  dokuwiki 記法を markdown 記法に変換する。

1つめについては、 <a href="http://qiita.com/kuwa72/items/9193d91775a0b535a58a" class="urlextern" title="http://qiita.com/kuwa72/items/9193d91775a0b535a58a">DokuWiki+Markdowkuの感想 - Qiita</a> にある通り、Markdowku というプラグインを使えば可能だが、dokuwiki と markdown の混合になってしまうことや、dokuwiki 独特のリンク記法はそのまま(っぽい)という問題がある。これでは外部で markdown として利用はできない。

そこで、2つめの手法を採用したい。 文書の記法変換は Pandoc が主流なので、これを用いる。

Pandoc
------

Pandoc については <a href="http://qiita.com/sky_y/items/80bcd0f353ef5b8980ee" class="urlextern" title="http://qiita.com/sky_y/items/80bcd0f353ef5b8980ee">多様なフォーマットに対応!ドキュメント変換ツールPandocを知ろう - Qiita</a> が詳しい。

以下は Pandoc の導入と、dokuwiki の導入が済んでいるものとする。

### markdown → dokuwiki

Pandoc ではデフォルトで markdown 記法を dokuwiki 記法に変換できるので、これを用いれば良い。楽ちん。

``` code
$ pandoc -f markdown(_github) -t pandoc 
\``` 

出力されるものをコピペすれば dokuwiki に転載が簡単。 (ファイルとして保存したかったら `-o output.txt` などのオプションを付ければOK。)

### dokuwiki → markdown

残念ながら、Pandoc では input として dokuwiki 記法はサポートされていない。(僕は Haskell 不得手なので誰か作ってください。) そこで、やや遠回りなようだが、 **dokuwikiからhtmlを取得 → htmlをmarkdownに変換** という手段を取る。

dokuwikiからhtmlを取得する方法だが、ほしいのは body の内容だけで、 `<html>` タグの中身とかはいらない。そんな時向けに dokuwiki はオプションを用意している。 <a href="https://www.dokuwiki.org/export" class="urlextern" title="https://www.dokuwiki.org/export">export [DokuWiki]</a> にある通り、ページのURLの末尾に `?do=export_xhtmlbody` をつければ良い。 なので、これを curl で取得して pandoc に通せば、html として入力できる。

具体的に言うと、変換したいページの URL が <a href="http://dokuwiki.example.com/doku.php/wiki/example" class="uri" class="urlextern" title="http://dokuwiki.example.com/doku.php/wiki/example">http://dokuwiki.example.com/doku.php/wiki/example</a> であるとき

``` code
$ curl -u <user>:<password> http://dokuwiki.example.com/doku.php/wiki/example\?do\=export_xhtmlbody | pandoc -f html -t markdown_github
\``` 

とすれば github markdown 形式で出力される。形式をただの markdown にしていないのは、単純にこのほうが求める形に近かったからであり、raw markdown が欲しい人は `-t markdown` とすれば良い。

なお、`-u <user>:<password>` をつけているのは認証のためである。

ファイルに保存したい場合は先程同様 `-o output.md` オプションを付ける。

これで markdown 形式で取得できたので、あとは好きにしてください。

a タグや code などがやや気になるが、およそ求める形ではないだろうか。 種々の記法に対して確認したいという人には、

$ curl https://www.dokuwiki.org/wiki:syntax\?do=export_xhtmlbody | pandoc -f html -t markdown_github -o test.md 

としてみることをおすすめする。

18
21
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
21