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) なかからどれかを選択?
      親要素—
      |–title

      ```

     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