dtd规范

阅读更多

转自:https://www.cnblogs.com/xiaofu007/p/5079428.html

 

文件名    student.xml

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8     
 9         张三
10         23
11         male
12     
13 
14     
15         李四
16         25
17         female
18     
19 

 

  1. DTD是什么:XML文档的类型定义,XML的约束。
  2. 如果a.xml文件受b.dtd的约束,那在a.xml文件中只能出现在b.dtd中定义的元素和属性。
  3. html就是一个被DTD约束的文件,所以在html文件中不可能随意给出元素和属性
  4. 当然,dtd的扩展名字就叫    .dtd

文件名:student.dtd

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
10 
11 
12 
13 

 

DTD根据所处位置分为两类:

  • 内部DTD和外部DTD。
  • 外部DTD又分为:SYSTEM(本地的)和PUBLIC(网上的)。

 

内部dtd:

1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
10 
11 
12 
13 
14 ]>
15 
16 
17 
18     
19         张三
20         23
21         male
22     
23 
24     
25         李四
26         25
27         female
28     
29 

 

外部DTD中的本地DTD

就是上面student.xml和student.dtd组合一起。

语法: <!DOCTYPE 根元素 SYSTEM "dtd文件路径">

 

外部DTD的网上DTD

语法: <!DOCTYPE 根元素 PUBLIC "dtd名称" "dtd网址">

1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9     
10         张三
11         23
12         male
13     
14 
15     
16         李四
17         25
18         female
19     
20 

 

  1. DTD语法之定义元素
    1. 定义元素的语法:    
      • 举例1:        ,定义了一个"学生"元素,内容为文本类型 (“#PCDATA ”)。
      • 举例2:        ,定义了一个"学生"元素,内容依次为“姓名”、“年龄”、“性别”元素。
      • 举例3:        ,定义了一个"学生"元素,内容随意不受限。
      • 举例4:        ,定义了一个"学生"元素,不能有内容,即空元素,空元素可以有属性。
    2. 子元素出现次数可以使用  *、+、? 来指定子元素出现的次数。
      • *:可以出现0~N次;
      • +:可以出现1~N次;
      • ?:可以出现0~1次。
      • 举例:     ,定义一个“学生”元素,第一个子元素为“姓名”,必须且仅能出现一次,“年龄”是可有可无的,“业余爱好”可以出现0~N次,grade可以出现1~N次,“性别”必须且仅能出现一次。
    3. 枚举类型子元素
      • 举例:   ,表示“学生”子元素为“姓名”、“年龄”、“性别”其中之一,必须仅且能选择其一。  
  2. DTD语法之定义属性
    1.       就是  ATTRIBUTE LIST 的意思。(属性列表)
    2.   定义属性的语法结构
    3. 举例:  ,给“学生”元素定义属性“学号”,类型为文本,这个默认是必须的。
    4. 属性设置说明:
      • #REQUIRED :说明属性是必须的。
      • #IMPLIED :说明属性是可选的。
      • 默认值 :在不给出属性值时,使用默认值。
    5. 属性类型
  • CDATA :文本类型
  • Enumerated :枚举类型
  • ID :ID类型,ID类型属性用于标记元素的唯一性,即元素的ID属性值不能与其他元素的ID值相同。
  • IDREF :ID引用类型,用于指定另一个元素,与另一个元素建立关联关系,IDREF类型的属性值必须是另一个元素的ID。

 

个人觉得用xml的那种嵌套格式来写dtd也许更直观,比如上面student.dtd改成这样写


  
    #pcdata
    #pcdata
    #pcdata
  

 这样写可能更便于阅读,但是原生语法写起来更便捷,毕竟dtd文件不是给人看的。

你可能感兴趣的:(dtd规范)