`

XML系列:文档类型定义DTD (转)

阅读更多

一,什么是DTD?
 1,XMl是一种元标记语言,是描叙语言的语言,定义标记的语法结构,从而生成新标记。而DTD则是为新标记建立文档并进行规范说明。
  也就是说XML定义标记的语法结构是通过DTD来定义,并指定文档结构的规范,而XML文档来使用标记。
 2,自描述数据的规范。
 
二,DTD的作用
 1,DTD定义了文档中的元素(标记和属性)和实体,以及相互关系。数据和结构分离。
 2,通过DTD验证XML文档的有效性。DTD为解析器提供了解析XML文档的依据。所以每个XML文档必须指定对于哪个DTD有效。

三,DTD的结构
 1,元素的声明:使用元素声明来声明XML文档中的元素

  ⑴,带有数据的元素:
   <! ELEMENT 元素名 (数据类型)>
   数据类型:
    #CDATA:指元素包含不通过解析器解析的字符数据。特殊字符和保留字不需要转义。
    #PCDATA:指元素包括解析器可解析字符数据。特殊字符和保留字需要转义才可以通过解析器。
    ANY:元素可以包含任何声明类型的子元素和字符数据。
  
  ⑵,带有子元素的元素:
   <! ELEMENT 元素名  (子元素1名,子元素2名)>
    多个子元素用逗号隔开。
    在文档中的顺序和定义中的顺序一致。
    子元素可以有自己的子元素。 
   
   ①相同元素只出现一次:
    <! ELEMENT 元素名 (子元素)>  
   ②相同元素至少出现一次:+
    <! ELEMENT 元素名 (子元素+)>  
   ③相同元素出现零次或多次:*
    <! ELEMENT 元素名  (子元素*)>
   ④相同元素出现零次或一次:?
    <! ELEMENT 元素名  (子元素?)>
  
  ⑶ ,空元素:
   <! ELEMENT 元素名 (EMPTY)>
    空元素可以有属性
   
  ⑷,混合声明
   组可以是序列或选择子元素和/或子组:
    ①序列
     <! ELEMENT A (B)> : 元素A由单个子元素B组成.
     <! ELEMENT A (B, C)> :元素A由子元素B和C组成.
     <! ELEMENT A (B, (C | D), E> :元素A由子元素B ,E和选择子组(C或D中之一)组成.
    ②选择 子元素和/或子组
     <! ELEMENT A (B | C)>:元素A由子元素选择子组(B或C)组成.
     <! ELEMENT A (B | C | (D, E))>:元素A由包括序列子组(D和E)的选择(B或C或D,E之一)组成.

 2,属性的声明   
  ⑴空属性
   <! ATTTLIST 元素名 EMPTY>
  ⑵非空属性
   <! ATTLIST 元素名  属性名  属性类型  属性值>
   属性值:
    ①,Default属性值:指定一个默认值
      <! ATTLIST 元素名  属性名  属性类型  "默认值" >
      DTD示例:
       <! ATTLIST  售价 货币单位 CDATA "人民币">
      XML示例:
       <售价  货币单位 = "人民币">10.90</售价>
    ②,Implied属性值:可以不提供该属性,该属性也没有默认值。
      <! ATTLIST 元素名  属性名  属性类型  #IMPLIED >
      DTD示例:
       <! ATTLIST  售价 货币单位 CDATA #IMPLIED>
      XML示例:
       <售价>10.90</售价>
       
    ③,Required属性值:必须提供该属性,但可以没有默认值。
      <! ATTLIST 元素名  属性名  属性类型  #REQUIRED >
      DTD示例:
       <! ATTLIST  售价 货币单位 CDATA  #REQUIRED>
      XML示例:
       <售价 货币单位 = "美元">10.90</售价> 
            
    ④,Fixed属性值:使属性具有固定值,不可以更改。
      <! ATTLIST 元素名  属性名  属性类型  #FIXED  "固定值">
      DTD示例:
       <! ATTLIST  售价 货币单位 CDATA #FIXED "人民币">
      XML示例:
       <售价  货币单位 = "人民币">10.90</售价>
    
    属性类型: 
    ①,Enumerated属性类型:使默认值成为一组固定值中之一。
      <! ATTLIST 元素名  属性名   (固定值A|固定值B|...)    默认固定值之一>
      DTD示例:
       <! ATTLIST  售价 货币单位   ("人民币"|"美元"|"欧元")  "人民币">
      XML示例:
       <售价  货币单位 = "欧元">10.90</售价> 
              
    ②,ID和IDREF属性类型
     1,ID:用于搜索某个元素的特定实例,每个元素都可以具有ID类型的属性
      <! ATTLIST 元素名  属性名  ID  属性值>
      DTD示例:
       <! ATTLIST  售价 支付方式 ID  #REQUIRED>
      XML示例:
       <售价  ID = "BOOK1">10.90</售价>
       <售价  ID = "BOOK2">10.90</售价>
       <售价  ID = "BOOK3">10.90</售价>        
     2,IDREF:指向一个元素,引用其他元素中的一个元素。
      <! ATTLIST 元素名  属性名  IDREF  属性值>
      DTD示例:
       <! ATTLIST  售价 货币单位 ID  #REQUIRED>
       <! ATTLIST  售价 货币单位 IDREF  #IMPLIED>
       <! ATTLIST  售价 货币单位  CDATA   #IMPLIED>
      XML示例:
       <售价  ID = "BOOK1"  货币单位 = "人民币">10.90</售价> 
       <售价  ID = "BOOK2" IDREF = "BOOK1"></售价>    
    ③,IDREFS属性类型
      指向多个元素ID,用空格分开。用于指向XML文档中的相关元素列表。
      <! ATTLIST 元素名  属性名  IDREFS  属性值>
      
四,使用DTD
 
 1,内部DTD
  XML声明后在XDOCTYPE声明中编写内部DTD。
  <! DOCTYPE 根元素名 [
   元素声明
   。。。
  ]>
 2,外部DTD
  编写DTD文件,扩展名为DTD,在XML文档DOCTYPE声明中添加DTD引用,告诉解析器外部DTD信息,
  <! DOCTYPE 根元素名  SYSTEM  "DTD文件名.dtd">
 
 3,DTD中的内部实体和外部实体和

  参见:XML系列:XML文档结构 中的实体;
  
 4,DTD中的参数实体
  先用内部DTD声明,把参数实体设置为元素名 ,在XML文件中引用 外部DTD验证。
  
  DTD文件
   ...
  <! ENTITY %实体名  "字符数据">
  <! ELEMENT  元素名  ( %实体名)>
  <! ELEMENT   %实体名  (子元素)>
   ...
  
  XML文件
   ...
  <! DOCTYPE 根元素名  SYSTEM  “DTD文件名.dtd”[
   <! ENTITY  %实体名  "替换实体名的元素名">
  ]>
   ...
 
 例子:不同元素的XML共同关联一个DTD文件 
  
  DTD文件
    ...
  <! ENTITY %element  "e">
  <! ELEMENT  root  ( %element)>
  <! ELEMENT   %element  (name,sex,。。。)>
   ...
 
  XML文件1
   ...
  <! DOCTYPE root  SYSTEM  “DTD文件名.dtd”[
   <! ENTITY  %element  "student">
  ]>
  <root>
   <student>
    <name>张三学生</name>
     ...
   <student>
  </root>
  
  XML文件2
   ...
  <! DOCTYPE root  SYSTEM  “DTD文件名.dtd”[
   <! ENTITY  %element  "teatcher">
  ]>
  <root>
   <teatcher>
    <name>王五老师</name>
     ...
   <teatcher>
  </root> 

分享到:
评论

相关推荐

    使用DTD验证XML文档

    a) DTD是Document Type Defintion的缩写,即文档类型定义。DTD用来描述XML文档的结构。 二、 DTD可能包含的内容: a) 元素的定义规则。 b) 元素之间的关系规则。 c) 属性的定义规则。 三、 DTD的作用: a) DTD使每个...

    XML(文档类型定义dtd)

    DTD是文档类型定义的英文缩写,包含在文档类型声明中,它定义了某种文档类型的所有规则。简单来说,DTD的作用就是定义允许哪些或者不允许哪些内容在文档中出现。在DTD中,用户可以控制文档类型的所有元素、属性以及...

    DTD(XML文档类型定义)教程

    DTD教程由浅入深讲述了什么是DTD,如何写DTD文件,怎样使用DTD文件,怎样演变为schema,DTD和schema的联系和区别,schema的好处,以及上车吗的使用

    DTD(文档类型定义)

    DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文 档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的...

    testng 的xml文档类型定义文件

    testng使用的testng.xml文档的文档类型定义文件,可用于核对xml文件的文档结构及合法元素

    很经典的XML入门教程

    第四章:文档类型定义 DTD(Document Type Definition) 第五章:在NetScape 和IE 中的XML 第六章:微软的XML 解释器 第七章:XML DOM 第八章:XSL - The Style Sheet Language of XML(XML 的样式表语言) 第九章:...

    深入解析XML中的DTD文档类型定义

    主要介绍了XML中的DTD文档类型定义,是XML入门学习中的基础知识,需要的朋友可以参考下

    XML入门教程:文档类型声明-XML/XSLT

    要使用DTD进行有效性检验,就要使用文档类型定义声明指定DTD。文档类型声明位于XML声明之后,根元素之前。如果dtd文档位于本机,可用路径名直接指出dtd文档的位置。 由于XML可自定义标签,所以每个人定义的标签集...

    XML中的DTD文档类型定义完全解析

    XML标签的自定义功能非常强大,比如本文将要讲解的DTD(Document Type Definition)就带给人们一种面向对象般的感觉,well,下面就来看一下XML中的DTD文件类型定义完全解析

    武汉大学软工xml上机第二次作业Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    XML初学入门教程(pdf)

    第一章:在学习XML之前你应该掌握什么 2 第二章:怎么使用XML 3 第三章:XML的语法 4 第四章:文档类型定义 DTD(Document Type Definition) 6 第五章:在NetScape和IE中的XML 8 第六章:微软的XML...

    XML Schema简明教程-W3C.rar

    XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。 XML Schema: 定义可出现在文档中的元素 定义可出现在文档中的属性 定义哪个元素是子元素 定义子元素的次序 定义子元素的数目 定义元素是否为空,或者...

    《XML实用大全》电子文档

    第8章 文档类型定义和合法性 8.1 文档类型定义 8.2 文档类型声明 8.3 根据DTD的合法性检验 8.4 列出元素 8.5 元素声明 8.6 DTD中的注释 8.7 在文档间共享通用的DTD 8.8 本章小结 第9章 实体和...

    XML-Schema-learner:XML 模式定义和文档类型定义的算法推理

    该软件实现了各种最先进的算法,用于 XML 模式定义和文档类型定义的算法学习。 给定一组或单个 XML 实例,它可以通过算法推断描述 XML 实例的模式。 生成的模式具有高质量和人类可读性。 用法 了解工具类型的使用...

    解码XML和DTD

    这篇文章说明了如何创建XML“文档类型定义(DTD)”和格式正确定义明确的XML文件,这些文件能够由您选择的XML语法分析器进行确认。虽然不必在产生的每个 XML文件中都包含DTD,但这样做将会使您的生活大为轻松。DTD...

    《XML》实验(2) -- Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    XML - 实验(2) -- Schema

    掌握在XML Schema中如何定义元素和属性,如何使用限制、列表和合并派生自己的简单数据类型,如何定义复杂数据类型,全局/局部元素和数据类型之间的区别;如何将XML Schema文档关联到XML实例数据文档,并完成文档的...

    DTD解析器(JAVA)

    DTD解析器,对XML文档类型定义DTD文件的相关解析,适合JAVA开发

    xml入门经典-part3(中文版)

    1.6.2 文档类型定义 1.6.3 数据建模 1.6.4 文档对象模型 1.6.5 XML 简单API 1.6.6 命名空间和模式 1.6.7 链接和查询 1.6.8 转换XML 1.6.9 XML和数据库 1.6.10 服务器到服务器 1.6.11 电子商务与XML 1.6.12...

    xml入门教程/xml入门教程

    方式二:调用外部文档类型定义,需要写一个DTD文档 &lt;?xml version="1.0" standalone="no"?&gt; &lt;!DOCTYPE studinfo SYSTEM "studinfo1.dtd"&gt; 注意点: (1)standalone="no" (2)注意dtd文件的路径 2)DTD的结构 ...

Global site tag (gtag.js) - Google Analytics