DTD

October 14, 2008,
tags: dtd xml シーケンス スキーマ チョイス 内部サブセット 外部サブセット


このエントリーをはてなブックマークに追加

Document Type Definition(DTD)
XML1.0仕様の中で定義されている

  • 要素型宣言
    要素の名前、内容(文字データ、子要素)を定義する

  • 属性リスト宣言
    要素に含まれる属性の名前、型、デフォルト値を定義する

  • 実体宣言
    XML文書内やDTDの内部から参照される実体について、その実体参照名と、置換文字列かリソースの場所(URI)を定義

  • 記法宣言
    解析対象外実体などで用いられる外部リソースのフォーマットを定義


<!ELEMENT name (#PCDATA)>
<!ELEMENT user (#PCDATA)>```

*   外部サブセットDTD 
    1.  複数のXML文書から利用可能
    2.  複数のシステムで共通のDTDを使用可能
    3.  汎用的に使用できるため、特定用用途向けの標準言語の定義になどにも使用される

※外部サブセットDTDの場合は「DOCTYPEの宣言がいらない」

*   内部サブセットDTD 
    1.  そのXML文書の文書本体の構造を定義する
    2.  DTDとXML文書を一つにまとめることができる

*   要素型宣言  
    要素に関する定義  
    <!ELEMENT 要素名 内容モデル></p> 
    1.  文字列型データ(#PCDATA)
    2.  子要素(子要素名、子要素名・・・)

記述パターン

<!ELEMENT polidog_works(title,link,test) //子要素を指定 <!ELEMENT title(#PCDATA)> //文字データののみが含まれる場合 <!ELEMENT name(#PCDATA|polidog)> //文字データと要素の両方が含まれている場合```


  • 子要素の指定に関する出現順序

    • シーケンスの場合
      (title,link,test)と並んでいていたら、その順序で出てくる

    ```

 test  btest ```

*   チョイス  
    (title|link|test) なかからどれかを選択?  
    親要素&#8212;  
    |&#8211;title  
    例</p> ```

 test ```

    または

    ```

 test ```

    また『(a,b)|(c,d)』や『(a|b),(c|d)』などが出てくる。  
    時間があったら例を書こう・・・</li> 
    *   文字データと子要素  
        (#PCDATA|子要素1|子要素・・・)  
        必ずチョイスモデルで、出現回数は「*」になる。  
        #PCDATAは必ず先頭に書かなければならいない。</ul> </li> </ul> 
    *   子要素の指定に関する出現回数 
        *   *  無制限
        *   +  1~無制限
        *   ?  1or 0
        *   半角空白 1
        例

        ```

<名刺>  <個人情報>aaaa</個人情報>  <個人情報>bbbb</個人情報> </名刺>```

        もしELEMENTの指定で(個人情報)のあとに?だったらたぶんダメってことだと思います。2回でてきてしまっているから。  
        また上記の出現順序と組み合わせて『(a*)』なども出てくる</ul> </li> </ul> 
        ぶっちゃけあんまり理解できていないわぁー。。
comments powered by Disqus