DTDの書式
Contents

  1. DTDの指定(DOCTYPE)
  2. 要素型宣言(ELEMENT)
    1. 要素型宣言の書式
    2. 子要素の指定
    3. 子要素の出現順序
    4. 子要素の出現回数
  3. 属性リスト宣言(ATTRIBUTE)
    1. 属性リスト宣言の書式
    2. 属性の型
    3. デフォルト値
    4. 空白の扱いの宣言
    5. 言語の宣言
  4. 実体宣言(ENTITY)
    1. 実体宣言の書式
    2. 特殊文字の定義済みエンティティ
  5. 記法宣言(NOTATION)
  6. 条件セクション(INCLUDE,IGNORE)
    1. 特定の宣言を処理する指定
    2. 特定の宣言を処理対象から除外する指定

  1. DTDの指定

    1. XML文書内に書く場合
      <!DOCTYPE ルート要素名 [
      ... ]>

      記述例:

      <!DOCTYPE items [
      <!ELEMENT items (item1,item2)>
      <!ELEMENT item1 (#PCDATA)>
      <!ELEMENT item2 (#PCDATA)>
      ]>

    2. 外部ファイルに記載して参照する場合
      <!DOCTYPE ルート要素名 SYSTEM "URI" [
      ... ]>

      記述例:

      <!DOCTYPE items SYSTEM "items.dtd">

    3. 公開識別子を指定して外部サブセット参照する場合
      <!DOCTYPE ルート要素名 PUBLIC "公開識別子" "URI" [
      ... ]>

      記述例:

      <!DOCTYPE jepax PUBLIC "-//JEPA//DTD JepaX 1.0//JA"
      "http://x.jepa.or.jp/jepax/jepax10.dtd">


  2. 要素型宣言

    1. 要素型宣言の書式
      <!ELEMENT 要素名 (子要素名...)>

    2. 子要素の指定
      記 号意 味記述例
      子要素名子要素<!ELEMENT item (item1,item2)>
      #PCDATA文字データ<!ELEMENT item (#PCDATA)>
      EMPTY子要素なし<!ELEMENT item EMPTY>
      ANY任意要素<!ELEMENT item ANY>

    3. 子要素の出現順序
      記 号意 味記述例
      ,記載の順に出現<!ELEMENT item (item1,item2)>
      |いずれか1つが出現<!ELEMENT item (item1|item2)>

    4. 子要素の出現回数
      記 号意 味記述例
       必ず1回出現<!ELEMENT item (item1)>
      ?0もしくは1回出現<!ELEMENT item (item1)?>
      +1回以上出現<!ELEMENT item (item1)+>
      *0回以上出現<!ELEMENT item (item1)*>


  3. 属性リスト宣言

    1. 属性リスト宣言の書式
      <!ATTRIBUTE 要素名 属性名 属性の型 デフォルト値>

    2. 属性の型
      記 号意 味記述例
      CDATA 文字データ <!ATTRIBUTE item attr1 CDATA>
      ID 要素識別子(重複不可) <!ATTRIBUTE item attr1 ID>
      IDREF 要素識別子参照 <!ATTRIBUTE item attr1 IDREF>
      IDREFS 要素識別子参照(複数) <!ATTRIBUTE item attr1 IDREFS>
      ENTITY 実体参照 <!ATTRIBUTE item attr1 ENTITY>
      ENTITIES 実体参照(複数) <!ATTRIBUTE item attr1 ENTITIES>
      NMTOKEN 名前トークン <!ATTRIBUTE item attr1 NMTOKEN>
      NMTOKENS 名前トークン(複数) <!ATTRIBUTE item attr1 NMTOKENS>

    3. デフォルト値
      記 号意 味記述例
      #REQUIRED 属性値の指定が必須 <!ATTRIBUTE item attr1 CDATA #REQUIRED>
      #IMPLIED 省略可能 <!ATTRIBUTE item attr1 CDATA #IMPLIED>
      デフォルト値 未指定時はデフォルト値を設定 <!ATTRIBUTE item attr1 CDATA hoge>
      #FIXED 常にデフォルト値 <!ATTRIBUTE item attr1 CDATA #FIXED hoge>

    4. 空白の扱いの宣言
      <!ATTRIBUTE 要素名 xml:space (default|preserve) "default と preserve の何れか">

    5. 言語の宣言
      <!ATTRIBUTE 要素名 xml:lang NMTOKEN #IMPLIED>

      <!ATTRIBUTE 要素名 xml:lang NMTOKEN "ja, en, de, fr など">


  4. 実体宣言

    1. 実体宣言の書式

      1. 内部実体宣言
        <!ENTITY 実体名 "実体の内容">

        記述例:

        <!DOCTYPE markets [
        <!ELEMENT markets (market)>
        <!ELEMENT market (#PCDATA)>
        <!ENTITY TSE "東京証券取引所">
        <!ENTITY OSE "大阪証券取引所">
        <!ENTITY NSE "名古屋証券取引所">
        ]>
        <markets>
        <market>&TSE;</market>
        <market>&OSE;</market>
        <market>&NSE;</market>
        </markets>

      2. パラメータ実体宣言
        <!ENTITY % 実体名 "実体の内容">

        記述例:

        <!DOCTYPE markets [
        <!ELEMENT markets (market)>
        <!ELEMENT market (#PCDATA)>
        <!ENTITY % TSE "東京証券取引所">
        <!ENTITY % OSE "大阪証券取引所">
        <!ENTITY % NSE "名古屋証券取引所">
        <!ENTITY DEF_TSE "<market>%TSE;</market>">
        <!ENTITY DEF_OSE "<market>%OSE;</market>">
        <!ENTITY DEF_NSE "<market>%NSE;</market>">
        ]>
        <markets>
        &DEF_TSE;
        &DEF_OSE;
        &DEF_NSE;
        </markets>

      3. システム識別子を指定した実体宣言
        <!ENTITY 実体名 SYSTEM "URI">

        <!ENTITY 実体名 SYSTEM "URI" NDATA 記法名>

        <!ENTITY % 実体名 SYSTEM "URI">

      4. 公開識別子を指定した実体宣言
        <!ENTITY 実体名 PUBLIC "公開識別子" "URI">

        <!ENTITY 実体名 PUBLIC "公開識別子" "URI" NDATA 記法名>

        <!ENTITY % 実体名 PUBLIC "公開識別子" "URI">

    2. 特殊文字の定義済みエンティティ
      文 字エンティティ表記16進数表記10進数表記
      < &lt; &#x3C; &#60;
      > &gt; &#x3E; &#62;
      & &amp; &#x26; &#38;
      ' &apos; &#x27; &#39;
      " &quot; &#x22; &#34;


  5. 記法宣言
     記法宣言は、外部ファイルに格納されている解析対象外実体を処理するアプリケーションを特定するものである。

    記述例:

    <!DOCTYPE photolist [
    <!ELEMENT photolist (photo)*>
    <!ELEMENT photo EMPTY>
    <!ATTRIBUTE photo file ENTITY #REQUIRED>
    <!NOTATION jpg SYSTEM "jpgviewer.exe">
    <!ENTITY photo1 SYSTEM "photo1.jpg" NDATA jpg>
    <!ENTITY photo2 SYSTEM "photo2.jpg" NDATA jpg>
    ]>
    <photolist>
    <photo file="photo1" />
    <photo file="photo2" />
    </photolist>

    1. システム識別子とURIを指定する記法宣言
      <!NOTATION 記法名 SYSTEM "URI">

    2. 公開識別子を指定する記法宣言
      <!NOTATION 記法名 PUBLIC "公開識別子">

    3. 公開識別子とURIをを指定する記法宣言
      <!NOTATION 記法名 PUBLIC "公開識別子" "URI">


  6. 条件セクション

    1. 特定の宣言を処理対象とする指定
      <![INCLUDE [
      ... ]]>

    2. 特定の宣言を処理対象から除外する指定
      <![IGNORE [
      ... ]]>