LOTUS DOMINO の XML
どのテキストエディタを使用しても Lotus Domino DTD ファイルを表示できます。Lotus Notes をインストールする際にデフォルト値を変更していない場合、ファイルのパスは Lotus/Notes/domino_6_0.dtd です。
要素要素はタグで、次のように定義されます。 <!ELEMENT tagname ( content-model ) >
tagname はタグの名前です。タグの名前は大文字と小文字を区別します。content-model は要素内に表示できる内容を説明します。ネストされたタグを含めることもできます。要素は開始タグと終了タグの間で使われます。たとえば Lotus Domino DTD の viewentry 要素は、次のように定義されています。
<!ELEMENT viewentry ( entrydata* )>
この要素は XML の出力では次のように使用されます。
<viewentry children="3">
<entrydata columnnumber="1">
<text> Joe Smith </text>
</entrydata>
</viewentry>
内容モデルを構築するとき、次の演算子を使用します。
次の例は、内容モデルを構築するときの演算子の使い方を示しています。
<!ELEMENT acl ( role*, aclentry+, logentry* )>
この例では、<acl> 要素には、任意の数の <role> 要素、続いて 1 つ以上の <aclentry> 要素、続いて任意の数の <logentry> 要素の順に含まれます。
次は演算子の別の例です。
<!ELEMENT text ( #PCDATA | break )* >
このとき、<text> 要素には任意の数のプレーンテキストまたは <break> 要素が任意の順序で含まれます。 #PCDATA は解析済みの文字データです。つまり、この文字データは余分な空白を認識しない、アンパサンドなどの文字を & のように文字エンティティで表す必要があるプレーンテキストです。次の表に、内部エンティティ文字を示します。これらの文字は XML で事前定義されており、解析済み文字データに使用するときは指定された XML 形式で表さなければなりません。
属性要素の属性は、次の規則に従って宣言します。 <!ATTLIST tagname
tagname 要素に対する属性が、種類とデフォルト値とともに定義されています。
次の例では、タグ名が book である要素を定義します。
<!ATTLIST book
上の例では <book> に対して title、isbn、cover、format の 4 つの許可された属性が定義されています。<book> に対して他に ATTLIST 宣言がない場合は、これら 4 つのみが許可された属性になります。他はいずれも不正な属性です。title 属性には任意の値を設定できますが、default_value が #REQUIRED なので、必須の値です。title 属性のない <book> 要素は、この DTD によると無効です。isbn 属性には任意の値を設定できますが、省略可能です。cover 属性は、「hard」または「paper」の 2 つのうちいずれかの値を取ります。その他の値は不正ですが、属性を省略することもできます。format 属性は 4 つのうちいずれかの値を取ります。省略された場合は、妥当性を検証するパーサーによって "bound" が値として与えられます。これは format="bound" が XML の内容に実際に表示されたのと同じです。
すべての属性は、次の表にあるように、本来は文字列です。
EntitiesXML エンティティには 3 つの種類があります。
<!ENTITY productName "2000 Calendar">
このとき、この内部エンティティを .xml ファイルで次のように参照します。
<response>Thank you for purchasing the &productName; from us.</response>
これは、2001 年 1 月に DTD を更新して &productName; の値を "2001 Calendar" に変更すれば、このエンティティを参照するすべての XML 文書にその変更が反映されることを意味します。
Lotus Domino DTD で定義されるエンティティは、パラメータエンティティです。パラメータエンティティは、DTD の内部だけで参照するために作成されるエンティティです。このエンティティを使用することでコードの再利用性が高まり、DTD のサイズが縮小されます。.xml ファイルではパラメータエンティティを参照できません。
Lotus Domino DTD エンティティは、次のように宣言されたマクロとして機能します。
<!ENTITY macroname "macrocontent" >
たとえば、
%book.formats; エンティティはフォーマットオプションのリストとして定義されており、book 要素の属性リスト定義内のリストを置換します。エンティティの名前はパーセント記号とセミコロンで囲まれ、内容は C 言語のマクロのように挿入されます。エンティティを使用してフォーマットオプションのリストを表すと、このエンティティを複数回使用できるので、DTD の効率が向上します。たとえば、この DTD の中に book 要素のほかに manual 要素がある場合、マニュアルがソフトカバーでのみ提供される点だけが異なり、使用できるフォーマットオプションは同じであれば、manual 要素の属性リストを定義するときに %book.formats; エンティティを再利用できます。
コメントDTD 内のコメントは次のように記号で囲みます。 <!-- 2 つのダッシュ以外はコメントテキストです。 -->
関連項目