Skip to content

Instantly share code, notes, and snippets.

@takahashim
Created April 19, 2012 12:15
Show Gist options
  • Save takahashim/2420596 to your computer and use it in GitHub Desktop.
Save takahashim/2420596 to your computer and use it in GitHub Desktop.
XMDFのテキストオブジェクト実体のRelaxNG Compact Syntax表現(非公式、タグの入れ子関係のみで属性は無視)
####### XMDF記述フォーマットにおけるテキスト部分の構造の概観 ######
### bvfz300d.dtdを参考(というかそこからRelaxNG Compact形式に自動変換して一部を抜き出したもの)
# ====================================================================
### 注:以下ではタグの構造のみを分かりやすくするため、属性は全面的に無視している
## text_dataはXMDF用語では「テキストオブジェクト実体」となっている。
## これがXMDFでは複数個格納されているっぽい。
text_data = element text_data { text_body }
## text_dataの本体はtext_bodyになる
text_body = element text_body { All_tag* }
## All_tagは改ページも含んだ要素集合で、All_tag2は改ページを抜いた要素集合
All_tag = All_tag2 | page_break
All_tag2 = text | Block | Inline | object
## ブロック要素は以下。key_entryは辞書などの検索用
Block = p | telop | key_entry
## インライン要素は以下。
Inline = br | hr | font | yoko | ruby | external_char | mask | char_id | meaning_start
# ====================== BLOCK ELEMENT ==============================
p = element p { All_tag2* }
## telopはたぶん交換フォーマットではmarqueeになるはず
telop = element telop { (text | external_char | font | yoko | ruby | object)* }
page_break = element page_break { empty }
# ====================== INLINE ELEMENT =============================
br = element br { empty }
hr = element hr { empty }
font = element font { (text | Inline | object)* }
## yokoは縦中横。
yoko = element yoko { TextWithGaiji }
## ruby、rbase、rtopはルビ関連。HTMLでのruby、rb、rtに対応。
ruby = element ruby { rbase, rtop }
rbase = element rbase { TextWithGaiji }
rtop = element rtop { TextWithGaiji }
## external_charは外字用。子要素がtextになっているけど例では空要素になっている。
external_char = element external_char { text }
## maskは一時的にマスクして、クリックでON/OFFを変更できる
mask = element mask {
(text | br | font | yoko | ruby | external_char | object)*
}
## char_idは「文字列ID番号」なるIDを振るためのタグ。実際にはchar_id属性も使ってIDを指定する(ここでは省略)
char_id = element char_id { (text | Inline | object)* }
## objectは画像(アニメーション含む)で、ここでは省略
#### その他の要素の説明
## 外字付き文字列。書誌情報などでも使われている
TextWithGaiji = (text | external_char)*
## ブンコビューア用なので単にテキストを考える上では無視してもよい?
meaning_start = element meaning_start { empty }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment