`

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> 

分享到:
评论

相关推荐

    XML(文档类型定义dtd)

    这里,"文档类型名"是XML文档所使用的DTD的名字,"DTD具体内容"可以是内部DTD的定义,也可以是外部DTD的引用。 **内部DTD和外部DTD** - **内部DTD**:定义在XML文档内部,将DTD的规则直接包含在XML文档中。适用于...

    使用DTD验证XML文档

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

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

    XML文档类型定义(DTD)是XML文档结构的重要组成部分,它为XML文档设定了规范和约束,确保了数据的准确性和一致性。本教程旨在深入讲解DTD的概念、编写方式、使用方法,以及它与XML Schema的区别和联系。 XML的核心...

    实验二-基于DTD实现XML文档的有效性验证.doc

    1. DTD(Document Type Definition)的定义:DTD是用于定义XML文档结构和约束的文档类型定义语言。它可以用来定义XML元素、属性、实体等的结构和约束。 2. DTD的引用:DTD可以被引用到XML文档中,以便对XML文档进行...

    将DTD与XML文档相关联之外部DTD

    在XML(可扩展标记语言)文档中,DTD(文档类型定义)是一种重要的元数据,用于定义文档结构和元素规则。DTD允许我们规范XML文件的结构,确保数据的准确性和一致性。本文将深入探讨如何通过外部DTD将DTD文件与XML...

    xml文档类型定义资料

    XML文档类型定义(DTD,Document Type Definition)是XML语言中用于规范和验证XML文档结构的一种方式。DTD通过定义文档元素、属性、实体等规则,确保XML文档的数据正确性和有效性,从而保证了信息交换的准确无误。 ...

    DTD的CHM帮助文档

    **DTD(Document Type Definition)** 是XML(Extensible Markup Language)文档类型定义的缩写,它是XML规范的一部分,用于定义XML文档的结构和元素。在XML文档中,DTD的作用是确保文档内容遵循预设的规则,即所有...

    DTD(文档类型定义)

    **DTD(Document Type Definition,文档类型定义)**是一种用于验证 XML 文档结构的技术。它通过定义一组规则来确保 XML 文档中的元素、属性等按照既定的方式进行组织。DTD 的存在确保了 XML 文档的一致性和准确性。...

    xml与DTD,xml与DTD

    - **元素定义**:定义了XML文档中允许出现的元素及其内容模型。 - **元素关系**:描述了元素之间的层次结构和关联关系。 - **属性定义**:指定了元素可以拥有的属性及其类型。 - **实体定义**:定义了文档中可以引用...

    XML与WEB Service技术(微软):实验二 在XML文档中使用DTD.doc

    1. 定义DTD是为了规范XML文档的结构,确保数据的准确性和一致性,方便数据交换和处理,同时也便于软件对XML文档的解析和验证。 2. DTD本身不符合XML语法意味着它不能作为XML文档的一部分直接解析。这限制了其在某些...

    XML文档调用外部DTD文档1

    - **DTD (Document Type Definition)**: 文档类型定义,是用来定义XML文档结构的一种方式。DTD定义了哪些元素可以出现在文档中,以及它们应该如何排列。DTD对于确保XML文档的结构正确性和一致性非常重要。 #### 二...

    XML的DTD教程

    文档类型定义(Document Type Definition,简称DTD)是一种用于定义XML文档结构的语言。它主要用于描述XML文档中元素、属性以及实体等组成部分的规则,确保XML文档符合预定义的标准。 **为什么需要DTD?** - **一致...

    testng 的xml文档类型定义文件

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

    XML高级编程_第3章文档类型定义

    《XML高级编程_第3章文档类型定义》深入探讨了XML文档类型定义(Document Type Definition,简称DTD)的概念及其在XML编程中的重要性。DTD是一种用于定义XML文档结构的规范,它不仅确保了文档的格式正确,还为文档...

    mybatis-3-config.dtd mybatis-3-mapper.dtd

    `mybatis-3-config.dtd` 文件是MyBatis配置文件的定义文档类型(DTD,Document Type Definition),它规定了MyBatis主配置文件的结构和元素。这个文件包含了关于MyBatis环境、事务管理器、数据源、插件、对象工厂等...

    xml dtd html 源程序

    2. DTD详解:DTD用于定义XML文档的结构,包括元素类型、元素间的约束关系、属性列表等。通过学习如何编写和使用DTD,开发者可以确保XML文档符合预设的规范,便于数据的验证和交换。 3. HTML与XML的结合:HTML通常...

    XML DTD官方英文文档

    XML中的DTD(文档类型定义)是一种规范,用于定义XML文档的合法结构。DTD定义了XML文档中可以出现的元素和属性,以及它们之间的关系。通过DTD,可以验证XML文档的格式是否正确。但是,除了DTD之外,XML还支持另一种...

    dtd定义xml dom4j解析xml小类

    XML 文档类型定义(DTD)是用来定义一段合法的 XML 文档块的。它用来验证你的 XML 文档是以一系列合法的元素构成的。DTD 可以在 XML 文档内部定义,也可以通过外部文件的方式引入。 首先,我们来看一下 DTD 的语法...

    DTD验证XML详解

    - 链接XML与DTD:在XML文档的`&lt;!DOCTYPE&gt;`声明中指定DTD文件。 - 验证:使用XML解析器或在线工具进行验证,检查XML文档是否符合DTD。 6. **替代技术**: - **XML Schema (XSD)**:提供了更复杂的数据类型和更强...

Global site tag (gtag.js) - Google Analytics