RELAX NGから使うための和暦データ型

村田 真

2003年9月10日

RELAX NGの検証器から利用するための和暦データ型を実装しました。

スキーマの例

短縮構文

datatypes 和暦 = "http://www.asahi-net.or.jp/~eb2-mrt/ns/datatypeLibrary/和暦データ型ライブラリ/0.6"
start = element foo {和暦:元号付き年月}

XML構文

<data
  datatypeLibrary="http://www.asahi-net.or.jp/~eb2-mrt/ns/datatypeLibrary/和暦データ型ライブラリ/0.6"
  type="元号付き年月"/>

文書例

<?xml version="1.0" encoding="shift_jis"?>
<foo>昭和32年11月</foo>

数字の種類

漢数字もアラビア数字もサポートします。ただし、アラビア数字は俗に言う半角文字だけです。

"平成元年"の"元年"は許しますが,"平成三年正月"の"正月"は許しません。

10の漢数字による表記として十と一〇の両方を許します。

21の漢数字による表記として二十一と二一の両方を許します。

壱、弐、参、伍、拾が使えます。それぞれ、一、二、三、五、十と まったく同様に使えます。

データ型

の三つです。

パラメタ

パラメタとして"数字の種類"を指定できます。

短縮構文

和暦:元号付き年{数字の種類="漢数字"}

XML構文

<data type="元号付き年"
  datatypeLibrary="http://www.asahi-net.or.jp/~eb2-mrt/ns/datatypeLibrary/和暦データ型ライブラリ/0.6"
>
  <param name="数字の種類">漢数字</param>
<data/>

パラメタの値は,"漢数字", "アラビア数字", "漢数字又はアラビア数字"のいずれかです。何も指定しなければ,"漢数字又はアラビア数字"を指定したと見なされます。

チェックの内容

以下にエラーになるものを挙げます。
理由
大正二十年 大正は15年まで。
明治四十五年八月 明治45年は7月まで。
平成百年八月 100以上はないという仮定。
平成3年4月31日 4月31日はない。
昭和三十五年二月三十日 閏年なので二十九日まで許す

制限事項

ダウンロード

ダウンロード

ライセンス

オープンソースにしますが、どのライセンスにするかは未定。

利用方法

JingやMSVと併用するためには,jing.jarやmsv.jarよりクラスパス中で 先に現れるようにします。

java -cp "/tmp/wareki.jar;jing.jar" com.thaiopensource.relaxng.util.Driver   -c test.rnc test.xml