タグ別アーカイブ: 軽量マークアップ言語

XMLをMarkdownに変換することについて

前回はMarkdownをDITAに変換する方法について紹介しました。
今回のテーマはXMLからMarkdownへの変換についてですが、見方を変えると、これは「なぜ情報量を落とす不可逆な変換をするのか」ということについてを考えることになります。
もちろん様々なニーズにより行われるのでしょうが、1つの文書型を扱う上でのこと、複数の文書型を扱う上でのこと、そして文書型のことを考えないときのことをみてみましょう。中間形式としての軽量マークアップについて扱っていますが、ライティング形式として扱いやすいといったメリットは今回は省きます。

XMLの欠点として挙げられることの多い点に「複雑」「冗長」といったワードを聞くことがあります。ここでいう「複雑」は構造の話であり、「冗長」は単純に統一された要素と属性のマークアップ記法によって起こる話といえるでしょう。軽量マークアップの多くはまさにこの点を克服するものですが、これは構造の表現力や記法の統一性とのトレードオフでもあります。

ある1つの文書型について考えてみます。文書型情報を持つ「XMLアプリケーション」と呼ばれるもの、XHTMLやDocBookやDITAといった文書では、「それらの文書型を背景に持ちつつ軽量な記法を使う」、今までの記事で取り上げてきたMDITAでいえば「トップレベルの見出しはtopicのtitle、最初の段落はshortdescにする」といったことが可能です。つまり、軽量の記法と変換される構造の対応を一対一に近いものにできます。文書型にもよるでしょうが、「XMLの構造を潰す」ものとしては最小限、不可逆ではあるものの復旧が行える可能性が高いものです。

複数の文書型を扱う上での軽量マークアップを経由する変換について考えてみます。ある文書型Aの文書から文書型Bの文書を変換、生成したいというときにはXMLにおいてはXSLTを使う方が大抵の需要に沿うでしょう。XSLTを逐一用意する必要こそあるものの、明確な構造の対応が取れるのであれば落とす情報、残す情報の選択も自在です。

この場合に落ちる情報には文書型Aの構造aに対応するBの構造がない、といったものもあります。ここで落ちる情報がXSLTを用意する手間を上回り、かつそれでも変換の必要があり、Aの文書もBの文書も相互にやり取りする頻度が高いといった場合には軽量マークアップを保存の形式に選択するのも考慮に入れてもよいかもしれません。変換先に該当の構造がなければその構造は潰れるしかありません。ある軽量な構造Mを、Aのときはこの構造になることにして、Bのときはこの構造を、とするのであれば、処理系の実装言語や環境の問題を除けばMからA、MからBの変換と、ABのXML+XSLT変換はそう変わらないことになります。この場合のMは、PandocやDocutilsの扱う抽象的なデータ型となるでしょうか。


アンテナハウスでは以前に『Markdown+CSS組版で冊子本(PDF)を作ってみる』[1]という書籍を作成しました。また、「Markdown + CSS/TeXで冊子本を作ってみた」[2]というセミナーを開催しました。このセミナーでは、Pandocを使用し、Markdownの拡張機能から抽象データ型にしたものをLaTeX用に変換し書籍を作成するラムダノート様による第一部と、Markdownと、HTMLタグで不足する構造を補ったものをXHTMLに変換し、CSSでスタイルを付与しAntenna House Formatter[3]で書籍を作成するアンテナハウスの第二部となり、対照的なアプローチでの発表となりました。少し話が逸れますが、Markdownそしてその他の軽量マークアップを最終的にHTMLやPDFといった閲覧用の形式にするにあたり、変換におけるどの層にカスタマイズのウエイトを置くのか。様々なバリエーションがあり、必要なスキルセットも方法によって異なります。これは、(できていたかは別として)構造と分離していた表現をどの段階で付与するかということでもあります。抽象データ型の変換で難しいことが起こるときは、(この記事筆者の体感的には)概ねこの部分の感覚の不一致です。


さて、最初のテーマ設定に戻ります。「なぜ情報量を落とす不可逆な変換をするのか」の答えとしては、「落として問題のない情報であるから」ということになるでしょうか。
当たり前の結論ではあります。
しかし「保存形式はXMLより必ずMarkdownがいいのだ」といった話ではなく、「補完可能」あるいは「変換不能」の情報があるとき、元のリッチな表現力の形式に固執すべきかということを考えてみてもよいかもしれません。

参考

  1. ラムダノートの技術 Advent Calendar 2019

関連資料

  1. [1]『Markdown+CSS組版で冊子本(PDF)を作ってみる』 アンテナハウス CAS-UB出版
  2. [2]Markdown + CSS/TeXで冊子本を作ってみた※終了しています
  3. [3]Antenna House Formatter V7

DITA/XML Service Antenna House

Antenna House Formatter

関連記事

  1. Markdown+CSS組版で冊子本(PDF)を作ってみる
  2. XMLエディタで始めるリッチなMarkdown入門?
  3. MDITA(LwDITA uses Markdown)の書き方
  4. DITAとしてのMDITA
  5. Markdown DITAとMDITA
  6. MDITAをDITAに変換する

HTMLの簡易マークアップとは。CAS記法のご紹介(1)

2015年10月現在でインターネット利用者のほとんどは、HTML(HyperText Markup Langage)を利用していると思います。しかし、HTMLとはどういうものかを知らない人が大多数ではないでしょうか。

そこで、最初にHTMLとはどんなものか、どうやって書くのかを簡単に説明します。

このブログを始め、ほとんどすべてのWebページはHTMLを使って書き表されています。では、HTMLをどうやって書くのでしょうか?

ブログの場合はテキストを入力すると自動的にHTMLに変換します。ブログで文章を書いて投稿するだけですと、HTMLのことを全く意識しなくても済みます。

もう少し凝って、例えば箇条書きを表現するにはどうしたら良いでしょうか?

このブログシステム(WordPress)はビジュアルモードとテキストモードがあります。ビジュアルモードでは、箇条書きを入力するには、箇条書きのアイコンをクリックします。箇条書きには番号なしリストと番号付きリストがありますが、例えば、番号なしリストを選択してクリックします。

20151016a

そうしますと、次のようなビュレット(箇条書きラベル)が入力されます。

20151016b

ビュレットの後に、文字を入力すると箇条書きになります。

20151016c

テキストモードに切り替えてみますと、この箇条書きの部分は次のようになります。

20151016d

ここに見える、<ul>、<li> がHTMLで定義されるタグというものです。正確には要素型といいます。<ul>は番号のない箇条書きブロックの始まり、<li>は箇条書きの項目の始まり、</li>は項目の終わり、</ul>は箇条書きブロックの終わりを意味しています。

ブログは、だれでも簡単にWebページを書けるようにテキストを自動的にHTMLに変換する仕組み、そうして作成したWebページを簡単に管理する仕組みとして、一つのメディア形態として普及しました。

HTMLでは100種類を超えるタグが定義されており、複雑な構造をもつ内容を記述できます。しかし、ブログでビジュアルに入力できるタグの種類は少なく、HTMLの記述という点では機能的には低いレベルです。もう少し凝ったWebページを作るには、HTMLのタグを直接編集したり、あるいは、HTMLのタグを見せずにWebページをビジュアルに編集する専門的なツール(HTMLエディターなど)を利用します。

HTMLタグを直接編集すると、きめ細かくタグを記述できるのですが、タグの正確な名前や規則(使える位置などの規則)を覚えて使いこなす必要があります。専門的なWeb編集者であればほとんどのタグを知っているはずですが、間違えたりすることもあります。

HTMLのタグを直接入力しないで簡単な記号をタグの代わりに入力して、記号+テキストでWebページを書き表す方法も考案されています。こうした流れの方式を、軽量マークアップ言語(または、簡易マークアップ言語)といいます。具体的には、Wiki記法とかマークダウン(Markdown)という方法が広く利用されています。

Wiki記法はWikiペディアなどで採用されている方法です。マークダウンは、オープンソースソフトのマニュアルの記述などで普及しているようです。

アンテナハウスでは、Wiki記法やマークダウンよりもう少し複雑なタグを記述できるCAS記法を考案しました。CAS記法は、「書籍編集・制作Webサービス CAS-UB」でテキストをマークアップする方法として利用しています。

CAS記法のマークアップ方法とHTMLタグへの対応例は次のWebページにまとめています:CAS記法リファレンス

参考資料:
1.マークアップとは (JEPA ebookpedia)
2.書籍編集・制作Webサービス CAS-UB