XML DTD语法详解

简介: XML DTD详解  XML DTD详解 前情提要与本文内容介绍  前面的两篇XML相关博文:  第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节  第二篇介绍DTD,引入有效的XML的概念(符合语法规范并符合DTD要求),并介绍DTD的三种使用方法:有效的XML: DTD(文档类型定义)介绍与三种使用方式  一个有效的XML文档必然是结构正规的,结构正规的XML文档不一定是有效的,即有效的是格式正规的一个子集。

XML DTD详解

 

 

XML DTD详解

 

前情提要与本文内容介绍

  前面的两篇XML相关博文:

  第一篇是介绍格式正规的XML: 格式正规的XML:语法 属性 实体 处理指令 样式单 CDATA节

  第二篇介绍DTD,引入有效的XML的概念(符合语法规范并符合DTD要求),并介绍DTD的三种使用方法:有效的XML: DTD(文档类型定义)介绍与三种使用方式

  一个有效的XML文档必然是结构正规的,结构正规的XML文档不一定是有效的,即有效的是格式正规的一个子集。

  本文详细介绍DTD,包括其对元素的定义,属性的定义,以及实体的定义。

 <!DOCTYPE root-element SYSTEM "filename">   外部引用

 <!DOCTYPE root-element  "filename">                  内部定义

<!ENTITY name SYSTEM  value>   外部引用

 <!ENTITY name  value>                  内部定义

 <!ELEMENT name  type>  

 <!ATTLIST   元素名称  属性名称  属性类型  属性特点  属性值>  

元素的定义

 

DTD中的修饰符号:

   

  这部分符号可以联系正则表达式的符号来记忆。

 

属性的定义

    

 

属性类型——CDATA

  比如:

<!ATTLIST title name CDATA #REQUIRED>

 

  定义了一个属性,是属于title元素的,属性名叫name,类型是字符串(包括数字和中文),并且是一个必须要有的属性。

 

属性类型——NMTOKEN/NMTOKENS

    

  左边图中因为加了空格而出错。

 

属性类型——ID

  类型为ID的属性取值必须是唯一的。

 

 

  从这个例子还可以看到同一个元素可以一次定义多个属性,多个属性之间用空格分隔即可。

 

属性类型——IDREF/IDREFS

 

                                        (“儿子”后面漏掉了一个斜线)

 

属性类型——Enumerated

  实现定义好一些值,属性的值必须在所列出的值的范围内。

    

 

属性的特点

#REQUIRED

  元素的所有实例都必须有该属性的值(NOT NULL)。

  语法:

<!ATTLIST 元素名 属性名 属性类型 #REQUIRED>

 

  DTD示例:

<!ATTLIST person number CDATA #REQUIRED>

 

  XML示例:

<person number="6788"/>

 

 

#IMPLIED

  元素的实例中可以忽略该属性(NULL)。

  语法:

<!ATTLIST 元素名 属性名 属性类型 #IMPLIED>

 

  DTD示例:

<!ATTLIST contact fax CDATA #IMPLIED>

 

  XML示例:

<contact fax="888-228833"/>

 

  没有这个属性也是对的。

 

#FIXED value

  元素实例中该属性的值必须为指定的固定值。

  语法:

<!ATTLIST 元素名 属性名 属性类型 #FIXED "value">

 

  DTD示例:

<!ATTLIST sender company CDATA #FIXED "Microsoft">

 

  XML示例:

<sender company="Microsoft"/>

 

 

Default value

  为属性提供一个默认的值。

  语法:

<!ATTLIST 元素名 属性名 属性类型 "value">

 

  DTD示例:

<!ATTLIST hello paymenttype CDATA "check">

 

  XML示例:

<hello paymenttype="check"/>

 

 

定义实体

一般

  语法:

<!ENTITY 实体名 "实体值">

 

  DTD示例:

<!ENTITY writer "Donald Duck">

<!ENTITY copyright "Copyright W3Schools">

 

  XML示例:

<author>&writer;&copyright;</author>

 

 

外部实体:

  语法:

<!ENTITY 实体名 SYSTEM "URI/URL">

 

  DTD示例:

<!ENTITY writer SYSTEM "http://www.baidu.com/index.php?tn=coralqq">

<!ENTITY copyright SYSTEM "http://www.baidu.com/index.php?tn=coralqq">

 

  XML示例:

<author>&writer;&copyright;</author>

 

  与上面的区别就是加上了SYSTEM关键字。

  这样就不是使用网址的字符串来代替,而是用网址的文档本身内容。

 

实体类型

 

 

  前面所讲的都是普通实体,分为内部实体和外部实体。

 

  所谓参数实体,该实体实际上不是在具体实例化文档中使用,而是在DTD文档内部被使用。

  我们可以定义一个实体,然后在DTD内部来引用它。

  如下:

<!ENTITY %地址 "街道,城市,邮编,国家">

<!ELEMENT 联系人 (人名,电话,%地址;)>

 

  

总结如下:

  普通实体:DTD中定义,XML中使用,使用格式: &名;

  参数实体:DTD中定义,定义的时候要用%,DTD中使用,使用格式: %名;

  普通实体和参数实体都分为内部实体外部实体两种,外部实体定义需要加上SYSTEM关键字,其内容是URL所指向的外部文件实际的内容。

  如果不加SYSTEM关键字,则为内部实体,表示实体指代内容为字符串。

目录
相关文章
|
5月前
|
XML 开发框架 JSON
J2EE基础XML(dtd)
J2EE基础XML(dtd)
42 0
|
6月前
|
XML 存储 Java
XML之dtd
XML之dtd
70 0
|
6月前
|
XML 存储 开发框架
J2EE之XML(dtd篇超详细)
J2EE之XML(dtd篇超详细)
34 0
|
4月前
|
XML 设计模式 数据格式
XML中的DTD
XML中的DTD
23 0
|
4月前
|
XML 存储 设计模式
XML以及DTD详解
XML以及DTD详解
62 0
|
5月前
|
Java 定位技术 Maven
Maven Settings.xml 的语法详解
Maven Settings.xml 的语法详解
73 0
|
5月前
|
XML 存储 数据格式
XML之DTD
XML之DTD
50 0
|
5月前
|
XML 存储 NoSQL
XML中DTD的基本使用
XML中DTD的基本使用
62 0
|
6月前
|
XML 数据格式
XML基础入门:关于DTD知识点
XML基础入门:关于DTD知识点
36 0
|
6月前
|
XML 存储 消息中间件
XML DTD介绍以及应用
DTD介绍 文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。 DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。
19 0