DTD教程

来源:互联网 发布:电视盒子市场软件 编辑:程序博客网 时间:2024/04/27 17:29
1- 表示XML的根节点必须为XXX,子节点必须为AAA,BBB
   XXX 不能包含文本       
   AAA,BBB 必须出现,可以包含文本,必须按照顺序出现,不可以出现多次
  

   tutorial.dtd:
   <!-- <!ELEMENT XXX (AAA* , BBB)> 表示AAA可以出现0次或多次 -->
   <!-- <!ELEMENT XXX (AAA+ , BBB)> 表示AAA可以至少出现1次或多次 -->
   <!-- <!ELEMENT XXX (AAA? , BBB)> 表示AAA要出现0次或1次 -->           
   <!ELEMENT XXX (AAA , BBB)>
   <!ELEMENT AAA (#PCDATA)>
   <!ELEMENT BBB (#PCDATA)>

   XML:
  
   <!DOCTYPE XXX SYSTEM "tutorial.dtd">

   <XXX>
      <AAA>Start</AAA>
      <BBB>End</BBB>
   </XXX>

2- 根节点XXX可以包含0个或1个AAA,后跟1个或多个BBB
   AAA 可以包含0个或1个CCC,后跟0个或多个DDD
   BBB 可以包含1个CCC,后跟1个DDD

   <!ELEMENT XXX (AAA? , BBB+)>
   <!ELEMENT AAA (CCC? , DDD*)>
   <!ELEMENT BBB (CCC , DDD)>
   <!-- <!ELEMENT BBB (CCC | DDD)> 可以包含CCC或DDD -->
   <!ELEMENT CCC (#PCDATA)>
   <!ELEMENT DDD (#PCDATA)>

   例子:

    <!DOCTYPE XXX SYSTEM "tutorial.dtd">

    <XXX>
       <AAA>
          <CCC/> <DDD/>
       </AAA>
       <BBB>
          <DDD/>
       </BBB>
    </XXX>

3-  BBB 可以包含文本和CCC的任意组合
    <!ELEMENT XXX (AAA+ , BBB+)>
    <!ELEMENT AAA (BBB | CCC )>
    <!ELEMENT BBB (#PCDATA | CCC )*>
    <!ELEMENT CCC (#PCDATA)>       

    例子:
   
    <!DOCTYPE XXX SYSTEM "tutorial.dtd">

    <XXX>
    <AAA>
       <CCC>Precisely one element.</CCC> 
    </AAA>
    <AAA>
      <BBB>
         <CCC/>
         <CCC/>
         <CCC/>
      </BBB>
    </AAA>
    <BBB/>
    <BBB>
      This is <CCC/> a combination <CCC/> of <CCC> CCC elements </CCC> and text <CCC/>. 
    </BBB>
    <BBB>
      Text only. 
    </BBB>
 </XXX>

4- CDATA类型的属性可以包含任何字符(if it conforms to well formedness constraints)
   属性aaa是必须的 属性bbb是可选的
  
    <!ELEMENT attributes (#PCDATA)>
    <!ATTLIST attributes 
      aaa CDATA #REQUIRED
      bbb CDATA #IMPLIED> 

   例子:

    <!DOCTYPE attributes SYSTEM "tutorial.dtd">
    <!-- 属性的顺序是没关系的 -->   
    <attributes bbb="$25" aaa="13%">
       Text
    </attributes>  

5-
    <!ELEMENT attributes (#PCDATA)>
    <!ATTLIST attributes 
      aaa CDATA #IMPLIED
      bbb NMTOKEN #REQUIRED
      ccc NMTOKENS #REQUIRED>

     例子:           

     <!DOCTYPE attributes SYSTEM "tutorial.dtd">
     <!-- 错, # is not permitted in attributes of type NMTOKEN and NMTOKENS: -->
     <attributes aaa="#d1" bbb="#d1" ccc="#d1"/>


6-  标志为ID的属性必须是唯一的
    <!ELEMENT XXX (AAA+ , BBB+ , CCC+)>
    <!ELEMENT AAA (#PCDATA)>
    <!ELEMENT BBB (#PCDATA)>
    <!ELEMENT CCC (#PCDATA)>
    <!ATTLIST AAA 
      id ID #REQUIRED>
    <!ATTLIST BBB 
      code ID #IMPLIED
      list NMTOKEN #IMPLIED>      
    <!ATTLIST CCC 
      X ID #REQUIRED
      Y NMTOKEN #IMPLIED>

7-
  
    <!ELEMENT XXX (AAA+ , BBB+, CCC+, DDD+)>
    <!ELEMENT AAA (#PCDATA)>
    <!ELEMENT BBB (#PCDATA)>
    <!ELEMENT CCC (#PCDATA)>
    <!ELEMENT DDD (#PCDATA)>
    <!ATTLIST AAA 
          mark ID #REQUIRED>
    <!ATTLIST BBB 
          id ID #REQUIRED>      
    <!ATTLIST CCC 
          ref IDREF #REQUIRED>
    <!ATTLIST DDD 
          ref IDREFS #REQUIRED>  
   
    例子:

     <!DOCTYPE XXX SYSTEM "tutorial.dtd">

    <XXX>
       <AAA mark="a1"/>
       <AAA mark="a2"/>
       <AAA mark="a3"/>
       <BBB id="b001" />
       <CCC ref="a3" />
       <DDD ref="a1 b001 a2" />
    </XXX>
          
8- 明确设置属性允许的值
 
  
    <!ELEMENT XXX (AAA+, BBB+)>
    <!ELEMENT AAA (#PCDATA)>
    <!ELEMENT BBB (#PCDATA)>
    <!ATTLIST AAA 
              true ( yes | no ) #REQUIRED>
    <!ATTLIST BBB 
       month (1|2|3|4|5|6|7|8|9|10|11|12) #IMPLIED> 

9- 可选属性的默认值
   <!ELEMENT XXX (AAA+, BBB+)>
   <!ELEMENT AAA (#PCDATA)>
    <!ELEMENT BBB (#PCDATA)>
    <!ATTLIST AAA 
         true ( yes | no ) "yes">
    <!ATTLIST BBB 
       month NMTOKEN "1">


10- 只能包含属性,不能包含内容文本
    <!ELEMENT XXX (AAA+)>
    <!ELEMENT AAA EMPTY>
    <!ATTLIST AAA 
      true ( yes | no ) "yes">
       

                          
原创粉丝点击