DTD基础

DTD(Document Type Definition)  

       1. XML基础

       XML的字符被设计为使用UNICODE编码,以适应全球用户。XML文档的默认编码为UTF-8,欲改变XML的字符编码,可以使用encoding属性。

       文档声明

Xml代码   收藏代码
  1. <? xml   version = "1.0"   encoding = "utf-8"   standalone = "yes|no"   ?>   

         说明:encoding指明了稳定内容的编码方式,默认为ISO-8859-1

                  在通过浏览器打开XML文件时,默认会将字符以UNICODE编码方式显示。 

                  standalone要在encoding后面。

                  standalone标识该xml文件是否为独立的,不需要dtd来验证,默认值为“yes”。

     转义字符 

特殊字符替代符号
&&amp;
<&lt;
>&gt;
"&quot;
'&apos;

      处理指令是Processing Instruction的中文翻译,通常简称PI,用来为处理XML文档的应用程序提供提示信息。处理指令以<?作为开头,以?>作为结尾。

       <?xml-stylesheet type="text/css" href="mystyles.css"?>

       文档注释为:<!-- -->

       2. DTD基础

       DTD 是一套关于标记符的语法规则,是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件的组成部分。  

       DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。  

       XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能够成为数据交换的标准,因为不同的公司只需定义好标准的DTD,各公司都能够依照 DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。  

       DTD文件是一个ASCII的文本文件,后缀名为.dtd。

       dtd文件的语法格式:

Xml代码   收藏代码
  1. <!ELEMENT 元素名称 使用规则 >   

       例如:对于book.xml提供book.dtd

Xml代码   收藏代码
  1. <? xml   version = "1.0"   encoding = "utf-8"   ?>   
  2. < books >   
  3.      < book >   
  4.             < author > lclcr </ author >   
  5.             < name > JSP 编程基础 </ name >   
  6.             < price > 34.5 </ price >   
  7.      </ book >   
  8.      < book >   
  9.             < author > lclcr </ author >   
  10.             < name > java 编程基础 </ name >   
  11.             < price > 67.5 </ price >   
  12.      </ book >   
  13. < books >   

       可以使用如下dtd文件来定义它

Xml代码   收藏代码
  1. <!ELEMENT books  (book+) >   
  2. <!ELEMENT book    (author,name,price)>   
  3. <!ELEMENT author (#PCDATA)>   
  4. <!ELEMENT name   (#PCDATA)>   
  5. <!ELEMENT price    (#PCDATA)>   

         说明:DTD文件本身应该使用UTF-8或Unicode编码。如果DTD文件中的内容全部为英文字符,它们本身就符号UTF-8编码,不需要进行特殊的转换;如果DTD文件中的文本内容包含中文字符,则需要将它们强制转换成UTF-8编码后保存。

 

       3. XML中使用DTD       

       XML文档通过使用DOCTYPE声明语句来指明它所遵循的DTD文件。

       DOCTYPE声明语句紧跟在XML文档声明语句后面,有两种形式:

Xml代码   收藏代码
  1. <!DOCTYPE 文档类型名称 SYSTEM "DTD文件的URL" >   
  2. <!DOCTYPE 文档类型名称 PUBLIC  "DTD名称" "DTD文件的URL">   

       关于DOCTYPE声明语句的说明: 

文档类型名称

XML的编写者自己定义

通用的习惯为:使用根元素名作为文档类型名称
第一种格式SYSTEM本地或组织内部所编写和使用的DTD文件
 DTD文件的URLdtd的相对或绝对路径
第二种格式PUBLIC由权威机构制定的、公开提供给特定行业或公众使用的DTD文件
 DTD名称

 指定该DTD文件的标识名称,需要用引号括起来

 例如:"-//Sun Microsystems Inc.//DTD Wep app2.3//EN"

 (1).DTD名称应符合一些标准的规定

      ISO标准的DTD以“ISO”三个字母开头

      被改进的非ISO标准的DTD以加号“+”开头

      未被改进的非ISO标准的DTD以减号“-”开头

 (2).//之后(Sun Microsystems Inc.)为DTD所有者的名称

 (3).//之后(DTD Wep app2.3)为DTD所描述的文件的说明

 (4).最后在//之后的为语言的种类

 DTD文件的URL DTD的相对或绝对路径

         还可以在XML中直接包含DOCTYPE声明语句来使用dtd的约束

Xml代码   收藏代码
  1. <? xml   version = "1.0"   encoding = "utf-8"   standalone = "yes"   ?>   
  2. <!DOCTYPE 根元素名 [  
  3.         DTD定义语句  
  4. ]>   

 

         4. DTD语法细节

         定义元素

Xml代码   收藏代码
  1. <!ELEMENT 元素名称 使用规则 >   

        使用规则说明 

规则形式规则说明
#PCDATA

普通文本字符串

如:<!ELEMENT author (#PCDATA)>

EMPTY

不包含任何子元素和文本字符串

如:<!ELEMENT author EMPTY>

      <author/>

ANY任意类型(子元素、文本字符串或它们的组合)
以空格分割的元素

<!ELEMENT book (author name price)>

表示三个子元素出现的顺序无特殊要求

以逗号分隔的元素

<!ELEMENT book (author,name,price)>

表示出现顺序必须与排列顺序一致

以竖杠分割的元素

<!ELEMENT book (autho|name|price)

表示只能出现元素中的一个

正则表达式

+ : 出现一次或多次

? : 出现零次或一次

* : 出现零次或多次

无: 必须且只能出现一次

        定义属性

Xml代码   收藏代码
  1. <!ATTLIST 元素名  
  2.       属性名1 属性类型 设置说明  
  3.       属性名2 属性类型 设置说明  
  4.       .......  
  5. >   

       属性类型包括 

类型说明
CDATA

普通文本,若属性设置值中有特殊字符需要转义(&为&amp;)

例如:

<!ATTLIST author

        age CDATA #IMPLIED

>

ENUMERATED

枚举类型

例如:

<!ATTLIST 肉

        品种 (鸡肉 | 牛肉 | 羊肉 | 鱼肉) "鸡肉"

>

ID

通过该属性唯一标识一个元素

<!ATTLIST 联系人

        编号 ID #REQUIRED

>

IDREF IDREFS

属性值为同一个XML文档中另一个元素的ID属性的设置值

<!ATTLIST 联系人

        编号 ID #REQUIRED

        上司 IDREF #IMPLIED

>

则在xml文件中上司IDREF的值应为ID属性的设置值

IDREFS则表示可以引用多个ID的设置值,中间用逗号隔开

NMTOKEN NMTOKENS

NAME TOKEN即名称记号,值为合法的 XML 名称

NMTOKENS可以使用多个名称记号,用空格分隔

NOTATION

<!NOTATION  符号名 SYSTEM  "MIME类型">

<!-- 指定数据的MIME类型 -->

<!NOTATION  符号名  SYSTEM  "URL路径名">

<!-- 指定处理程序的URL路径 -->

 例如:

<!NOTATION mp SYSTEM "mplyayer.exe">

<!NOTATION gif  SYSTEM "Image/gif">

<!ATTLIST 电影

        演示设备 NOTATION (mp | gif) #REQUIRED

>

ENTITY ENTITYS

使用关键字ENTITY作为属性的类型时,表明其属性值必须为在DTD中使用

<!ENTITY ...>语句定义的一个实体的引用。

 只有引用实体才可以作为ENTITY类型的属性的设置值,参数实体不能用

作ENTITY类型的属性的设置值。

 ENTITYS关键字用于表示一种列表类型,一个元素的ENTITYS类型的属

性设置值可以是多个实体的引用,每个实体的引用用空格分割。

       设置说明包括:#REQUIRED、#IMPLIED、#FIXED "value"、"默认值"。

       例如:

Xml代码   收藏代码
  1. <!ATTLIST author  
  2.         age CDATA #IMPLIED  
  3.         email CDATA #REQUIRED  
  4.         title CDATA #FIXED "页面作者"  
  5.         interest CDATA "上网"  
  6. >   

       定义实体

       引用实体

Xml代码   收藏代码
  1. <!ENTITY 实体名称 "实体内容" >   
  2. <!ENTITY 实体名称 SYSTEM "外部XML文档的URL">   

      引用实体主要在XML文档中被使用,引用方式为:&实体名称;

      参数实体

Xml代码   收藏代码
  1. <!ENTITY % 实体名称 "实体内容" >   

      参数实体的因为方式为:%实体名称;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值