今、2つの方向から考えていて、1つは現状のスキーマ言語試案に手を入れていく方向、もう1つは別な新しい構文を模索することです。
新しい構文のほうをチョビット紹介しておきます。
この構文を使うためには、オブジェクトのプロパティ名に若干の制限を付ける必要があります。特に、ドルマークとピリオドはプロパティ名には使えないとします。そういう条件を付けた上で、ランチ注文のデータ型は次のように記述できます。
"$" : "ランチご注文" ; "ident" : "ランチ会員情報" ; "ident.name" : string, "お名前" ; "ident.memberNum" : integer, "会員番号" ; "order" : "本日のご注文" ; "order.mainDish" : "メイン", enum [ "special" : "日替わり", "fish", : "魚", "meat", : "肉" ] ; "order.drink" : "お飲み物", emum [ "teaHot" : "紅茶 (ホット)", "teaIce" : "紅茶 (アイス)", "coffeeHot" : "コーヒー (ホット)", "coffeeIce" : "コーヒー (アイス)" ] ; "order.dessert" : "デザート", multi [ "pudding" : "プリン", "strawberryShortcake" : "苺ショートケーキ", "bavarianCream" : "ババロア", "gateauChocolat" : "ガトーショコラ" ] ;
- 対応するHTMLフォーム(上の型定義から、一意的に生成できるわけではありません。)
オブジェクトの各構成要素へのパスに対して、型とラベルを指定した形式です。multi [...] は、set [ enum [...] ] の略記です。この記述は、必要な情報だけを書き連ねたもので、これ以上短くするのは困難です(パスを囲む引用符は不要かな -- と、それくらい)。短いだけじゃなくて、比較的に理解しやすいのではないかと思います。