本节知识梳理:
文章目录
前言
今天我们会讲到一个新的知识点dtd (文档类型定义)下面会简单介绍,尽情期待吧!
一、dtd是什么?
DTD就是用来约束XML文档的,给XML文档设立良好格式,使其在一定的规范下使用,除了DTD技术外,还有Schema技术,也是用于约束XML文档的。
参考文档:DTD http://www.w3school.com.cn/dtd/index.asp
参考文档:Schema http://www.w3school.com.cn/schema/index.asp
理解DTD的原理图解:
二、什么是格式良好的XML?
1.什么是XML?
- 可扩展标记语言,是一种标记语言
- XML标签没有被预定义,需要用户自行定义
- 用来传输和存储数据,而不是显示数据
- 具有自我描述性
2.XML的作用:
- 数据交互
- 做配置
3.标准的XML格式:
- 有且只有一个根元素
- XML标签大小写正确区分
- 正确使用结束标签
- 正确使用嵌套标签
- 使用合法的标签名
- 定义有效的属性
三、元素定义
1.在XML加入DTD声明
<!DOCTYPE 根元素 [定义内容]>
(定义关键字一定要大写“ctrl+Shift+x”,例如:DOCTYPE、ELEMENT、ATTLIST。)
案列示例代码(web.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wep-app [
<!ELEMENT wep-app (servelet+,servelet-mapping+)>
<!ELEMENT servlet (servlet-name+,servlet-class+)>
<!ELEMENT servelet-mapping (servelet-name,url-pattern+)>
<!ELEMENT servelet-name (#PCDATA)>
<!ELEMENT servelet-class (#PCDATA)>
<!ELEMENT url-pattern (#PCDATA)>
]>
<web-app>
<servlet>
<servlet-name>jrebelServlet</servlet-name>
<servlet-class>com.zking.xml.JrebelServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jrebelServlet</servlet-name>
<url-pattern>/jrebelServlet</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>jrebelServlet2</servlet-name>
<servlet-class>com.zking.xml.JrebelServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jrebelServlet2</servlet-name>
<url-pattern>/jrebelServlet2</url-pattern>
<url-pattern>/jrebelServlet3</url-pattern>
</servlet-mapping>
</web-app>
2.元素分类
EMPTY 空元素 例如:</br>
#PCDATA 文本元素 例如:<div>哈哈哈</div>
- (e1,e2)混合元素 也就是元素里面包含其他元素 一个或多个
3.元素的限制
1.与(,)或(|)
2.次数
2.1 (?)表示0或1次
2.2( * )表示0-N次
2.3 (+)表示1-N次
ps:元素分类时要用大写要用括号括起来(empty除外)
如果某个元素是混合元素,在括号内写元素时一定要按顺序,否则编译报错,
如果某元素内有同一个元素出现两次,建议把它们移到一起,否则容易报错写完约束后不能
在xml文件内加入标签和内容,否则编译错误
四、属性定义
1.语法:
<!ATTLIST element-name att_name type desc>
<!ATTLIST 元素名称
属性名称 类型 属性特性
属性名称 类型 属性特性…...
>
解释:
ATTLIST:属性列表,(必须大写)。
元素名称:对应的元素的名称。
属性:属性能够有多个,其格式是名称 类型 属性特性
2.属性类型type
3.属性描述
1.#REQUIRED 必填
2.#IMPLIED 非必填
3.‘默认值’ 只有type为上面属性类型第二点的时候才能用
案列示例代码:
<?xml version="1.0" encoding="UTF-8"?>
<!-- config标签:可以包含0~N个action标签 -->
<!DOCTYPE config [
<!ELEMENT config (action*)>
<!ELEMENT action (forward*)>
<!ATTLIST action
path CDATA #REQUIRED
type CDATA #REQUIRED
>
<!ATTLIST forward
name ID #REQUIRED
path CDATA #REQUIRED
redirect (true|false) 'false'
>
]>
<config>
<!-- action标签:可以饱含0~N个forward标签 path:以/开头的字符串,并且值必须唯一 非空 ,子控制器对应的路径 type:字符串,非空,子控制器的完整类名 -->
<action path="/registerAction" type="test.action.RegisterAction">
<forward name="success" path="/index.jsp" redirect="true" />
<forward name="failed" path="/register.jsp" redirect="false" />
</action>
<action path="/loginAction" type="test.action.LoginAction">
<forward name="a" path="/index.jsp" redirect="false" />
<forward name="b" path="/welcome.jsp" redirect="true" />
</action>
</config>
五、总结
今天内容很简单,大家加油!下期再见!