Created
May 29, 2012 07:49
-
-
Save takahashim/2823169 to your computer and use it in GitHub Desktop.
mindoc coreフォーマット定義案 (RelaxNG Compact形式)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# mindoc core (draft v0.1) | |
# | |
# mindoc(minimal document material description language)(仮)とは、文書素材を記述するための言語で、 | |
# 一般的な書籍のための文字情報を記述するために必要最低限な要素すら網羅していない、単なる素材程度のものしか | |
# 記述できない・記述させない言語です。その代わり、さまざまなフォーマットへの変換・逆変換は行いやすくなって | |
# います(はずです。また逆変換は要素を削るので「縮退」と言った方がいいかも)。 | |
# | |
# このmindoc coreは電子書籍交換フォーマットv1.1のだいたいサブセットになっています(はずです)。 | |
# 名前空間は別にしましたが。 | |
default namespace = "http://mindoc.tatsu-zine.com" | |
start = html | |
html = element html { | |
head, | |
body, | |
attribute xml:lang { text }? | |
} | |
head = element head { (title | link )* } | |
link = element link { | |
attribute rel { "stylesheet" | "alternate_stylesheet" }, | |
attribute href { text }, | |
attribute type { text }, | |
attribute media { text }? | |
} | |
title = element title { text } | |
## 本文(body)はblock-tagsのみではなくinline-tagsも許す(ためのtext-tagsを使用) | |
body = element body { text-tags*, common-attrs } | |
## block-tagsは見出しのみ (hrはportability高いだけど必要性低いので基本セットからは削除、画像もまずはinlineで) | |
block-tags = ( h1 | h2 | h3 | h4 | h5 | h6 ) | |
## Inlineは改行・強調・リンク・ルビ・オブジェクト埋め込み(画像)とテキスト | |
## coreかどうかは交換フォーマットを参考にしてみる | |
inline-tags-core = ( br | em | ext-text | ruby ) | |
inline-tags = ( inline-tags-core | object-tags | a ) | |
text-tags = block-tags | inline-tags | |
## object-tagsはまずは画像のみ(audio、videoはあとで) | |
object-tags = img | |
## classとidは適宜 | |
common-attrs = (class-attr | id-attr) | |
class-attr = attribute class { text }? | |
id-attr = attribute id { text }? | |
h1 = element h1 { inline-tags*, common-attrs } | |
h2 = element h2 { inline-tags*, common-attrs } | |
h3 = element h3 { inline-tags*, common-attrs } | |
h4 = element h4 { inline-tags*, common-attrs } | |
h5 = element h5 { inline-tags*, common-attrs } | |
h6 = element h6 { inline-tags*, common-attrs } | |
img = element img { | |
common-attrs, | |
attribute src { text }, | |
attribute alt { text }?, | |
attribute longdesc { text }?, | |
attribute width { text }?, | |
attribute height { text }? | |
} | |
br = element br { common-attrs } | |
hr = element hr { common-attrs } | |
em = element em { inline-tags*, common-attrs } | |
a = element a { | |
inline-tags*, | |
common-attrs, | |
attribute href { text }?, | |
attribute target { text }?, | |
attribute title { text }? | |
} | |
## ルビはrbcとかは削り、rb/rtとrb/rt/rpの記述のみに限定 | |
ruby = element ruby { | |
((rb, rt) | (rb, rp, rt, rp) ) | |
} | |
rb = element rb { inline-tags* } | |
rt = element rt { inline-tags* } | |
rp = element rp { ext-text* } | |
ext-text = ( text | external_char ) | |
## 外字はまずは交換フォーマットに準じる | |
external_char = element external_char { | |
attribute system { text }?, | |
attribute code { text }?, | |
attribute glyph_data { text }?, | |
attribute priority { text }?, | |
attribute alt { text }? | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment