Avendia19
English

ZpML について

このサイトの全てのページは、 HTML を直接書いて作っているのではなく、 XML を自作のスクリプトで HTML に変換することで作っています。 こうすることで、 表示用の構造 (最終的にネットに公開される HTML) と文書そのものの構造 (変換前の XML) が分離でき、 デザインの変更などが容易にできます。

例えば、 図表の表示スタイルを変えたいとなると、 全てのページを見て図表があるか確認し、 あるならその箇所の HTML ソースを書き換える必要があります。 このサイトには 400 を超えるページが存在しているので、 この作業は非常に大変です。 しかし、 文書そのもののデータを XML でもっておき、 それを変換することで HTML を生成するようにしておけば、 その変換規則の部分を書き換えるだけ済むわけです。

このサイトの HTML を生成する前の XML データは整形式 XML ではありますが、 XML には存在しない特殊構文が含まれています。 そのため、 XML を少し拡張しているという意味合いと、 私が作る文書のマークアップに使われるという意味合いを込めて、 このデータ形式を 「ZpML」 と呼んでいます。 以下に、 その仕様を備忘録としてまとめておきます。

基本

page

XML のルート要素である。 ZpML では 1 つの XML ファイルが 1 つのページを表すので、 このタグが 1 つのページを表すことになる。

name, ver

name タグは、 そのページのタイトルを表す。 生成される HTML のナビゲーション部分に表示される。

ver タグは、 そのベージの情報がシャレイア語のどの時期に沿っているかを表す。 シャレイア語の通時的な説明を載せているページなど、 ページの内容が特定の時期に依存しない場合は、 * を代わりに指定する。 シャレイア語のページでない場合は、 このタグは省略する。 これも生成される HTML のナビゲーション部分に表示される。

namever はナビゲーション部分にのみ表示され、 本文には影響を与えない。 そのため、 page の子要素になっていればどの位置に書いても良いが、 変換スクリプトの実装の都合上、 page の最初の 2 つの子要素にすべきである。

ヘッダ

import-script

このタグのタグ名を script に変えたタグが、 生成される HTML のヘッダ部分に挿入される。 JavaScript を用いるページなどで用いる。

base

このタグがそのまま生成される HTML のヘッダ部分に挿入される。 エラーページなど、 開かれるときの URL が定まらないときに、 相対 URL の基準位置を固定するのに用いる。

目次ページ

pb, ab, abo, aba, abd

hb

本文

h1, h2

p

img

このタグの箇所に画像を表示する。 HTML タグと同様に、 src 属性に表示したい画像の URL を指定する。

img タグはブロック要素になっているので、 p タグの中に入れる必要はない。

a, an

ol, ul, li

ulx, li

ulx タグにより、 そのページでいる扱っている言語 (多くの場合でシャレイア語) の例文リストを作ることができる。 この子要素は複数の li タグから成る。 その li タグはテキストのみをもち、 そのテキストは、 扱っている言語での例文とその訳語を で区切った文字列とする。

<ulx>
<li>{salot a fit e lêdik.} → これは文です。</li>
<li>{pa salot a qut e pet?} → あれは何ですか?</li>
</ulx>

el, li, et, ed

trans, li, ja, sh

table, tr, th, thl, td

section-table

form, input, textarea

special

pdf

slide

pre, samp

pre タグの箇所にソースコードを別行立てで表示する。 この内部では {}, [], // を除く他のタグが有効なので、 表示したいソースコードに &, <, > が含まれている場合は、 それらを適切にエスケープする必要がある。 HTML を生成する際にインデントは削除されるので、 XML の構造に従って小要素のテキストをインデントすることができる。

pre タグの直後に samp タグを置くと、 それはソースコードを実行したときの出力を意味する。

同名の HTML タグとは少し使い方が異なるので注意すること。

c, m

sup, sub

h

k

i

fl

small

br

{}, []

{} もしくは [] で囲んだ部分はシャレイア語だと判断され、 適切なフォントで表示される。 {} で囲んだ場合は、 さらに単語ごとにオンライン辞典へのリンクが張られる。 ただし、 更新日記など古い情報が残り得るページなどでは、 混乱を避けるために辞典へのリンクは張られず、 フォントが変わるのみである。 {}[] の内部では、 // 以外のタグを用いることはできない。

括弧を 2 重にして {{]] などと書くと、 エスケープ文字だと判断されて括弧 1 つ分の文字列に変換される。 現状の変換スクリプトの実装上、 &#x7B;&#x5D; のように XML の実体参照を用いてもエスケープできるが、 推奨されない。

//

エラーページ

error, code, message