[trpg-xml:00021] シナリオ DTD 作成の話 [ シナリオ情報 ]

Goto (trpg-xml ML) HTML Log homepage


Index: [Article Count Order] [Thread]

Date: Tue, 27 Jul 1999 00:27:28 +0900
From: 梶田晃一 <kajita@trpg.net>
Subject: [trpg-xml:00021] シナリオ DTD 作成の話 [ シナリオ情報 ]
To: trpg-xml@trpg.net (送る用)
Message-Id: <199907261525.AAA11282@pk.highway.ne.jp>
X-Mail-Count: 00021


 お世話になっています。梶田です。

 以前、Webアドレスで紹介したDTDですが、
 さすがにあれでは何の説明にもなっていないので
 部分部分を要素単位で説明していきたいと思います。
 〈何かご指摘等ありましたら、ご連絡入れていただければ幸いです。〉


 まず、最初は小林さんも示していらした、シナリオ情報部です。
 ファイルとしてはscenaio.dtd内に入っています。

──────────────────────────────────→

<!---------------------------------------------------------
ELEMENT名         :scenario_infomation
親ELEMENT         :scenario
子ELEMENT         :playwright  , date  , exhibit_place  , number_persons  , outline  , hints

属性              :system は 想定システムを示す。システムを特定せずにジャンルだけでも良い。          (値:CDATA デフォルト値:#IMPLIED)
                    member は シナリオへの人数を示す。最小人数、期待人数、最大人数の順番で示したい。  (値:NMTOKENS デフォルト値:#IMPLIED)

概要              :シナリオについての情報を示す

構文              :<scenario_infomation system ="対象システム" member = "人数">シナリオの情報</scenario_infomation>
                   

利用方法          :<scenario_infomation system ="ファンタジー" member = "2 4 6">
                    	<playwright href ="#梶田晃一" role = "XML担当" ></playwright>
                    	<date version ="18-Jul-1999"></date>
                    	<exhibit_place uri ="http://www.trpg.net/user/a-GoGo/"></exhibit_place>
                    	<outline><paragragh>シナリオの概要はこんな感じで書きます。</paragragh></outline>
                    	<hints><paragragh>シナリオをやる時には電気を薄暗くしてみると・・・</paragragh></hints>
                    </scenario_infomation>
                    
注意点            :

製作者            :梶田晃一(kajita@trpg.net)
---------------------------------------------------------->

<!-- scenario_infomation は シナリオについての情報を示す  -->
<!ELEMENT scenario_infomation (playwright)*,(date)*,(exhibit_place)*,(outline)?,(hints)? >

<!-- 属性 system は 想定システムを示す。                  -->
<!ATTLIST scenario_infomation system CDATA #IMPLIED >

<!-- 属性 member は シナリオへの人数を示す。最小人数、期待人数、最大人数の順番で示したい。 -->
<!ATTLIST scenario_infomation member NMTOKENS #IMPLIED >


──────────────────────────────────→

 実際は、他の要素(scenario,playwright,date,exhibit_place, number_persons,outline,hints)の
 説明をしないとこの要素全体を説明した事にはなりませんがちと、手抜きで
 スイマセン。

 まず、この要素の目的ですが、概要に示してある

 「シナリオについての情報を示す」

 です。
 では、どのような情報がこの要素から得られるのかというと

  1.1 作者
  1.2 制作年月日 (バージョンも必要?)
  1.3 対象システム
  1.4 対象プレイヤー数
  1.6. シナリオの概要
  1.7 セッションやシナリオについての注意点
           (小林さんのメールから引用)

 と公開場所が得られます。
 それらは何処で示されるかというと

  1.1 作者                                                        → 要素 playwright
  1.2 制作年月日 (バージョンも必要?)                              → 要素 date
  1.3 対象システム                                                → 属性 system
  1.4 対象プレイヤー数                                            → 属性 member
  1.6. シナリオの概要                                             → 要素 outline
  1.7 セッションやシナリオについての注意点                        → 要素 hints
      公開場所                                                    → 要素 exhibit_place

  で示しています。

  小林さんのメール提案では

  1.5 対象レベル

  が示されていましたが、今回は外しててみました。
  理由としては、今後各システム毎にこの "scenario_infomation" を拡張していくと
  思いますのでその時に対象レベルを入れたらと思いまして、ここには入れませんでした。


──────────────────────────────────→

 これがシナリオ情報を保持する要素"scenario_infomation"の説明です。

 が、XMLを知らない方や、実は根本的に僕の知識が間違っているといけないので
 次にXMLの要素定義の読み方を書いてみたいと思います。


1 XML の説明

1.1 コメント

   最初に書いておくべきことは、XMLにおいてコメント部位
   (どんな事でも書いても良い部位)は以下の形式で書かれます。

    <!-- コメント中身  -->
   
   ですので、例えば

   <!-- scenario_infomation は シナリオについての情報を示す  -->

   はコメントで実際のXMLの文章とは関係ない部分です。
   また、コメント中身で改行を入れても良いので、最初に25行をかけて
   書いてある部位はコメントになっています。

1.2 要素の定義(情報の受け皿になります)
    (以下で出てくる子要素のホントの名前は内容モデルといいます)

  要素として定義を行う場合以下のように行います。

 <!ELEMENT 要素名 子要素 >

  ですので例えば、
 <!ELEMENT scenario_infomation (playwright)*,(date)*,(exhibit_place)*,(outline)?,(hints)? >

 は要素名が「scenario_infomation」で子要素が
 「(playwright)*,(date)*,(exhibit_place)*,(outline)?,(hints)?」

 と言う事です。
 
 子要素とは例えば、
 
 <scenario_infomation system ="ファンタジー" member = "2 4 6">
 	<playwright href ="#梶田晃一" role = "XML担当" ></playwright>
 	<date version ="18-Jul-1999"></date>
 	<exhibit_place uri ="http://www.trpg.net/user/a-GoGo/"></exhibit_place>
 	<outline><paragragh>シナリオの概要はこんな感じで書きます。</paragragh></outline>
 	<hints><paragragh>シナリオをやる時には電気を薄暗くしてみると・・・</paragragh></hints>
 </scenario_infomation>

 ってな感じで <scenario_infomation>  </scenario_infomation> の間にはさまれる
 要素の事です。

1.3 属性の定義(要素に特定の情報を与えます。)

 属性の定義を行うと場合は以下のように行います。

 <!ATTLIST 対象要素名 属性名 値の候補 デフォルト値 >

 ですので例えば

 <!ATTLIST scenario_infomation system CDATA #IMPLIED >

 は対象要素が「scenario_infomation」、属性名が「system」
 値の候補が「CDATA」、デフォルト値が「#IMPLIED」になります。

 値の候補 CDATA は任意の文字を書いて良い事を示しています。
 デフォルト値 #IMPLIED はこの属性が省略する事が出来る事を示しています。


あんまし良い説明になっていませんが、上記の様に要素と属性を
定義する事で、どの要素が何の情報を提供するのかを示す事が出来ます。



うーん。やはり良い説明ではないですね。
これから、コンナ感じでDTDの説明なんかをやっていきたいと思いますけど
どうでしょうか?  DTDへの指摘や、XMLの説明への指摘などをお待ちしております。

それでは。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
梶田晃一(KZ → KAH)
  Email:kajita@trpg.net                              TRPG用
         kajita@pk.highway.ne.jp                      個人用
                   
    WWW:http://www.trpg.net/user/a-GoGo/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

    

Goto (trpg-xml ML) HTML Log homepage