标签:划线 ini 技术 嵌套 外部 http 两种 关系 模型
DTD
一、什么是DTD?
DTD即Document Type Definition,文档类型定义。
我们知道,XML的标签可以自定义,不受任何约束。但有时侯,为了符合逻辑和业务需要,我们需要对XML文档加以约束。而DTD就是用来约束XML文档的。使其在一定的规范下使用。除了DTD技术,Schema技术也用于约束XML文档。
二、DTD文档的声明
外部文档声明 <!DOCTYPE 根元素 SYSTEM|PUBLIC "DTD文件路径"> eg: <!DOCTYPE webapp PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> 除了外部文档声明,还有内部文档声明,内外部文档声明。 内部文档声明:<!DOCTYPE 根元素 [定义内容]> 内外部文档声明:<!DOCTYPE 根元素 SYSTEM "DTD文件路径"> 对于内部文档声明,内外部文档声明,我们简单了解即可。主要还是采用外部文档声明的方式。
注意事项:
1.定义关键字一定要大写,比如DOCTYPE ELEMENT ATTLIST,此外SYSTEM PUBLIC也应该大写。
2.当引用的是本地的DTD文档时,在声明中使用SYSTEM关键字。 eg:<!DOCTYPE stu SYSTEM "test.dtd">
3.当引用的是网络上公共的DTD文档时,采用PUBLIC关键字。 eg:<!DOCTYPE webapp PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"
三、DTD元素
基本语法:<!ELEMENT NAME CONTENT> 解释:ELEMENT 关键字 NAME 元素名称 CONTENT 元素类型,主要有以下几种,都必须大写: 1.EMPTY ----该元素不能包含任何元素或文本,但可以有属性 2.ANY---该元素可以包含在DTD中定义的元素内容。 3.#PCDATA ---该元素不包含其他元素,只有文本内容,也就是说钙元素内部不能嵌套其他标签。用关键字#PCDATA进行定义,它代表已经编译过的字符数据。 4.子元素类型---该元素可以包含其他一系列子元素。子元素内容模型用来指定钙元素可以包含哪些子元素。 eg:<!ELEMENT stu(classID,name,age,addr)> 上面代码表示:stu元素包含classID,name,age,addr四个子元素。 根据子元素之间的关系,子元素内容模型可能有以下两种结构: 1.序列,所有子元素必须出现且只出现一次。注意事项:使用序列时,序列中不能出现#PCDATA。子元素中可以包含其他子元素。 2.选择。 eg:<!ELEMENT stu(classID|name|age|addr)>。 上述代码表示,stu的子元素只能是classID,name,age,addr中的一个,且只能有一个。 元素出现现次数指示符:
? 0次或一次
* 0次或者多次
+ 至少出现一次
无符号 只能出现一次
四、XML属性定义
基本语法:<!ATTLIST 标签名 属性名 属性类型 属性说明> 解释: 属性类型可以是以下几种类型; 1.CDATA:最普通的字符串 2.枚举 即(值1|值2|值三),需要括号 3.ID:表示该属性值是唯一的。 属性值需要以字母或者下划线开头。 属性说明: 1、#REQUIRED:必须设置。 <!ATTLIST stu school (NCU|Pecking University|Wuhan University) #REQUIRED> 2.#IMPLIED:可选值,也就是说可以设置该属性的值,也可以不设置 <!ATTLIST addr CDATA #IMPLIED> 3.#FIXED:固定值.也就是说给该属性指定一个固定的值。语法格式为:#FIXED ”固定值" <!ATTLIST stu class #FIXED "电子商务161"> 4.默认值。 <!ATTLIST addr (北京|南昌|武汉) "南昌"
五、XML实体
实体:实体是用来定义普通文本快捷方式的变量。 实体分为:引用实体和参数实体 . 引用实体在XML中使用,格式为:&实体名 参数实体在DTD内部使用,格式为:%实体名 引用实体:定义格式:<!ENTITY 实体名 文本值> eg:<!ENTITY copyright "Evil.company"> 参数实体:定义格式:<!ENTITY % 实体名 文本值> 注意:定义时%与实体名之间存在空格,使用的时候不需要空格。
eg:<!ENTITY % name "HelloWorld">
标签:划线 ini 技术 嵌套 外部 http 两种 关系 模型
原文地址:https://www.cnblogs.com/L-C98/p/9163771.html